enter image description here有据可查的是,为了找到两个平面之间的相交角度,我们使用垂直于每个平面的法向矢量的点积 - 然后给出角度的余弦。我试图对此进行编程,但意识到在某些情况下,计算会导致补充而不是交叉角度本身。 这里有下面两个示例代码示出了这一点:如何获得两个平面之间的正确角度?
x = linspace(-10,20, 12)
y1 = (0*x) + 9
y2 = -x + 19
figure
k = plotyy(x,y1, x,y2);
set(k(2),'YDir','reverse')
%vectors and normal vectors
n1 = [0, 1];
v1 = [1, 0];
n2 = [1, 1];
v2 = [1, -1];
angle = (acos(dot(v1, v2)/(norm(v1) * norm(v2))) * 180/pi)
第二:
x = linspace(-10,10, 12);
y1 = -(0.5*x) + 1.333;
plot(x, y1); hold on
%2nd line
xd = 5;
plot(xd, x, 'o')
%vectors and normal vectors
n1 = [0.5, 1]; v1 = [1, -0.5];
n2 = [-5, 0]; v2 = [0, 5];
angle = (acos(dot(v1, v2)/(norm(v1) * norm(v2))) * 180/pi)
注意,第一示例计算正确的角度(45度),但第二示例计算补充物( 116.5651度)。经过多次尝试来破解这一点,我意识到如果一个正常点指向正向,其他点指向负向(见图A)。然后:角度= 180 - (acos(dot(n1,n2)/(norm(v1)* norm(v2))))* 180/pi。但是,如果n1和n2同时指向相同的方向(正向或负向),如图1所示。 B,然后:angle = acos(dot(n1,n2)/(norm(v1)* norm(v2))))* 180/pi
我已经用几个例子测试过了,将在所有情况下工作。我也非常肯定,这对一些很多人来说是有用的。尽管如此,对我来说,这个问题是如何编程的。任何建议/帮助/建议将非常感激。谢谢!
你能给输出需要的角度与预期产出? –