我得到4分作为输入。
p1 =(x1,y1),p2 =(x2,y2),p3 =(x3,y3),p4 =(x4,y4)。
现在我已经计算了p1p2,p2p3,p3p4和p4p1之间的距离。
如何计算p1p2和p2p3之间的角度?这是角度p2。 (如下图所示);
我试过这个
acos((p1p2)^2 + (p2p3)^2 - (p1p3)^2)/(2*p1p2*p2p3))*(180/pi)
但这不准确,我想总结4个角度并检查它们是否总和为360.这样我就永远不会得到无理数。
请帮忙吗?
答案 0 :(得分:3)
要获得两个向量之间的角度,只需使用它们的内积:
v1 = p1-p2;
v2 = p3-p2;
标准化为单位向量并采用内积:
n1 = v1/norm(v1);
n2 = v2/norm(v2);
cos_p2 = dot(n1,n2);
结果角度为
acos(cos_p2)
答案 1 :(得分:1)
在数学上,角度为acos(dot(||p2p1||, ||p2p3||))
。尝试
u21 = (p1 - p2) / norm(p1 - p2)
u23 = (p3 - p2) / norm(p3 - p2)
angle = acos(sum(u21 .* u23))
前缀u
表示单位向量。