2017-05-03 93 views
2

我有一個機器人,分別在前部和後部安裝紅色led和綠色led。我想計算機器人的頭部方向,因爲指向greenLEd - redLed矢量的方向是哪個方向。計算2點之間的反時針角度

我該如何編碼,以使下圖中標記爲1和2的點具有相同的角度,即45度逆時針,而點3應該在225度。

enter image description here

我用下面的腳本,但它給了我錯誤的結果:

def headDirectionAngle(redLEDCoords, greenLEDCoords, referenceVector): 
    greenRedLEDVector = np.array(greenLEDCoords) - np.array(redLEDCoords) 
    angle = np.math.atan2(np.linalg.det([referenceVector,greenRedLEDVector]),np.dot(referenceVector,greenRedLEDVector)) 
    return np.degrees(angle) 
referenceVector = np.array([0,240]) 

我應該如何進行?謝謝您的幫助。

+0

這個矢量的目標是什麼? –

回答

1

回到基礎知識,沒有numpy

atan2已經爲您提供了一個逆時針的角度,但-180和180之間可以添加360和計算模360獲得0和360之間的角度:

from math import atan2, degrees 

def anti_clockwise(x,y): 
    alpha = degrees(atan2(y,x)) 
    return (alpha + 360) % 360 

print(anti_clockwise(480, 480)) 
# 45.0 
print(anti_clockwise(-480, -480)) 
# 225.0 

x應該只是在差綠色和紅色LED之間的X座標。 y也一樣。

+0

atan2給你的角度與水平軸。有什麼辦法可以更新它來計算矢量的角度? – deathracer

+0

@deathracer:您可以計算兩個向量的水平軸的角度,並計算差異。 –