2013-01-07 72 views
0

可能重复:
Find angle of a point from center of circle查找角度

想象圆,中心点是固定的,因为是在圆顶部的点。我想要的是在圆周(或圆圈外)的任何地方给出第三个点,并从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;} 
+3

我会看三角形的正弦和余弦。 – duffymo

+1

这就是你需要的吗? - http://stackoverflow.com/questions/8968500/find-angle-of-a-point-from-center-of-circle?rq=1 –

+0

看看[这个](http://stackoverflow.com/questions/12964983/rotate-image-around-character-java/12971987#12971987)为一个可能的解决方案,或至少在正确的方向推动;) – MadProgrammer

回答

4

使用Math.atan2()获得由东弧度的角度,然后旋转并酌情转换。

请注意,atan2定义为atan2(y, x)不是atan2(x, y),如您所料。

+0

这是非常多的,我的监督是,我在Android和Y坐标是从上到下计算的,最后我只能用+来代替 - 。 – Jake

0

获取中心点与点之间的水平距离和垂直度差值,然后将结果传递给方法Math.asin(double)

结果将是角度radians。当您需要度数时,您可以使用方法Math.toDegrees(double)。不过,我所知道的大多数API更喜欢弧度。