2013-01-07 95 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更喜歡弧度。