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