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
我已經用幾個例子測試過了,將在所有情況下工作。我也非常肯定,這對一些很多人來說是有用的。儘管如此,對我來說,這個問題是如何編程的。任何建議/幫助/建議將非常感激。謝謝!
你能給輸出需要的角度與預期產出? –