【发布时间】:2016-12-09 19:12:26
【问题描述】:
我在 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 度
【问题讨论】: