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

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

ITMISS
TA貢獻1871條經驗 獲得超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
,然后你考慮的絕對角度的差異在原點結束)P3
和P2
。
優點atan2
是表示整圓(你可以在-π和π之間得到任何數字),而acos
你需要根據符號處理幾種情況來計算正確的結果。
唯一的奇點atan2
是(0, 0)
......它意味著P2
和P3
必須來自不同的P1
是在這種情況下沒有意義談論的角度。
添加回答
舉報
0/150
提交
取消