1
我在python中編寫腳本,我對此非常陌生,並且沒有很多矢量數學經驗,我可以獲得兩個向量的點積,長度和角度,並且我已經設法得到兩點(邊緣)之間的差異角度,但是我不確定實際修改第二組點以匹配第一個點的角度的數學/過程。我試圖做的是旋轉第二組點,以匹配第一組,而不管它的當前位置。例如:更改邊緣以匹配角度
#python
import math
def dot (v1, v2):
return (v1[0]*v2[0] + v1[1]*v2[1])
def length (v):
return math.sqrt(dot(v,v))
def normalize (v):
r = [0.0] * 2
v_len = length (v)
if v_len > 0.0:
v_invLen = 1.0/v_len
r[0] = v[0] * v_invLen
r[1] = v[1] * v_invLen
return r
def direction (v1, v2):
return (v2[0]-v1[0], v2[1]-v1[1])
def angle(dotProduct):
return math.degrees(math.acos(dotProduct))
p1,p2 = (0,0),(0,1) <--- first edge
p3,p4 = (0,0),(2,2) <--- second edge
dir = direction(p1,p2)
dir2 = direction(p3,p4)
dir_n = normalize(dir)
dir2_n = normalize(dir2)
dotProduct = dot(dir_n, dir2_n)
ang1 = math.degrees(math.acos(dotProduct))
print ang1
這給了我一個45度角,我想要做的是,無論它的位置現在旋轉第二邊緣P2匹配P1的角度在世界空間,因此P1可能是( 1,1),( - 2,-2)和p2可能是(1,1),( - 3,3)以90度旋轉所需要
結果中似乎存在語法錯誤,v之前可能缺少逗號?我認爲v需要v1 – Kenny
有一個負號缺失,糾正它。嘗試新的程序 –
它似乎工作..但後續的問題,我可以做什麼用旋轉矢量?第二個邊(-1,1),( - 3,3)應旋轉90度以匹配第一個邊(1,1),( - 2,-2),其新值應爲(-1,3) ,( - 3,1) – Kenny