如何從三點計算角度?讓我們說你有這個:P1 = (x=2, y=50)P2 = (x=9, y=40)P3 = (x=5, y=20)假設這P1是圓的中心點。它總是一樣的。我想要由P2和組成的角度P3,或者換句話說,接下來的角度P1。內(nèi)角是精確的。它總是一個銳角,所以小于-90度。我想:伙計,這是簡單的幾何數(shù)學。但我現(xiàn)在已經(jīng)找了大約6個小時的公式,而且只找到人們談論復雜的美國宇航局的東西,如arccos和矢量標量產(chǎn)品。我的頭感覺像在冰箱里。一些數(shù)學大師認為這是一個簡單的問題嗎?我不認為編程語言在這里很重要,但對于那些認為它的人來說:java和objective-c。我需要它,但沒有標記它們。
3 回答

神不在的星期二
TA貢獻1963條經(jīng)驗 獲得超6個贊
如果你認為它是兩個向量,一個從點P1到P2,一個從P1到P3,它變得非常簡單
所以:
a =(p1.x - p2.x,p1.y - p2.y)
b =(p1.x - p3.x,p1.y - p3.y)
然后,您可以反轉(zhuǎn)點積公式:
獲取角度:
請記住,這只是意味著:a1 * b1 + a2 * b2(這里只有2個尺寸......)

ITMISS
TA貢獻1871條經(jīng)驗 獲得超8個贊
處理角度計算的最佳方法是使用atan2(y, x)
給定點x, y
返回該點的角度和X+
相對于原點的軸。
鑒于計算是
double result = atan2(P3.y - P1.y, P3.x - P1.x) - atan2(P2.y - P1.y, P2.x - P1.x);
即你基本上由兩個點翻譯-P1
(換句話說,讓你翻譯的一切P1
,然后你考慮的絕對角度的差異在原點結(jié)束)P3
和P2
。
優(yōu)點atan2
是表示整圓(你可以在-π和π之間得到任何數(shù)字),而acos
你需要根據(jù)符號處理幾種情況來計算正確的結(jié)果。
唯一的奇點atan2
是(0, 0)
......它意味著P2
和P3
必須來自不同的P1
是在這種情況下沒有意義談論的角度。
添加回答
舉報
0/150
提交
取消