我在一个三维空间中有两段,由它们的起点和终点的坐标定义。你知道吗
我需要在python中计算这两个片段之间的角度,而不需要numpy或其他花哨的lib。你知道吗
我编写了以下代码,对我来说似乎是正确的:
def CalcAngle(beg1, end1, beg2, end2):
vect1 = [None, None, None]
vect2 = [None, None, None]
for cc in range(3):
vect1[cc] = end1[cc] - beg1[cc]
vect2[cc] = end2[cc] - beg2[cc]
length1 = math.sqrt(vect1[0]**2+vect1[1]**2+vect1[2]**2)
length2 = math.sqrt(vect2[0]**2+vect2[1]**2+vect2[2]**2)
dotProd = 0.0
for cc in range(3):
dotProd += (vect1[cc] * vect2[cc])
angleRad = math.acos( dotProd / (length1 * length2) )
angleDeg = math.degrees(angleRad)
return angleRad, angleDeg
# 1st segment
beg1 = [47.737, 31.8, 21.762]
end1 = [43.55, 38.956, 42.209]
# 2nd segment
beg2 = [35.993, 18.033, 56.988]
end2 = [31.497, 18.783, 68.881]
angleRad, angleDeg = CalcAngle(beg1, end1, beg2, end2)
# angleRad is 0.312973304876
# angleDeg is 17.9320494697
我是不是漏了什么? 有没有任何情况下,我的代码将无法工作?你知道吗
谢谢你。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐