可能重复:从圆心中找出一个点的角度
想象一个圆圈,中心点是固定的,就像圆圈顶部的点一样 . 我想要的是在圆圈周围(或圆圈外)的任意位置给出第三个点,并从0-359获得从中心到顶点线的度数 . (我实际上绘制了一张漂亮的图片,但是我很新并且不能发布它)
为了给出一些背景,圆形是一个小行星,我想在表面上放置一个小建筑物,建筑物的底部在切线处 . 我需要建筑位图的旋转角度 .
编辑:感谢您的帮助,我仍然在努力解决这个问题 . 我想知道我使用android并且y0坐标位于顶部是否相关?它是在其他平台上的另一种方式吗?会影响计算吗?
解决方案:因为我在机器人和y coords从上到下计数我不得不改变 - 与
degrees = Math.atan2(x - centerX, -y + centerY);
// and to make it count 0-360
if (degrees < 0) {degrees += 2 * Math.PI;}
2 回答
使用
Math.atan2()
从东方获取以弧度表示的角度,然后根据需要旋转和转换 .请注意,
atan2
被定义为atan2(y, x)
NOTatan2(x, y)
,正如您所料 .获取水平距离和中心与点之间的垂直差异,将其相互分开,并将结果传递给方法Math.asin(double) .
结果将是radians中的角度 . 当您需要它时,您可以使用方法Math.toDegrees(double) . 我知道的大多数API都更喜欢弧度 .