2010-10-13 43 views
0

我有連接到這個代碼的問題:如何找到一個角平分線在MATLAB

t = -20:0.1:20; 
plot3(zeros(size(t)),t,-t.^2); 
grid on 
hold on 
i = 1; 
h = plot3([0 0],[0 t(i)],[0 -t(i)^2],'r'); 
h1 = plot3([-1 0],[0 0],[-400 -200],'g'); 
for(i=2:length(t)) 
    set(h,'xdata',[-1 0],'ydata',[0 t(i)],'zdata',[-400 -t(i)^2]);  
    pause(0.01); 
end 

在這段代碼中,我畫出兩條相交線。 H1和H2。 H1是固定的,H2隨時間而變化。在這個例子中,H2碰巧描繪了拋物線,但它的運動可能是任意的。

對於線H2的每個位置,如何計算並畫出這兩條相交線之間的角度的平分線?我希望在劇情中看到平分線和H2線同時移動。

針對H2的一個位置解決這個問題就足夠了,因爲對於H2相對於H1的所有方位來說,這將是相同的過程。

+0

目前尚不清楚你想要什麼。 「平分線」適用於線段,而不適用於任意曲線。 – 2010-10-13 10:22:29

+0

我想要的是定義兩條線h,h1的平分線。 h在移動時h1固定在空間上。運行代碼,你會看到兩條線的情節。可以將兩條直線可視化爲兩個矢量。以這種方式,矢量h是固定的,而h的終點在曲線圖之後移動。我希望現在更清楚。謝謝! – vittorio 2010-10-13 10:45:38

回答

1

我不是幾何天才,有可能是一個更簡單的方法來做到這一點。到目前爲止,還沒有人迴應,所以這將是一些東西。

您在三個空間中有三個點: 設A是兩條線段的公共頂點。
設B和C爲兩條線段上的兩個已知點。

選擇任意的距離r其中

ř< =從遠處到B

ř< =距離從A到C

測量從沿着線段AB r的距離。這是點RB 從A沿線段AC測量距離或r。這是點RC

找到連接RB和RC的線段的中點。這是M

線段AM是角度CAB的角平分線。


以上每個步驟都應該相對容易完成。

+0

順便說一句:這實質上是指南針和直邊方法的角度二等分。 – MatlabDoug 2010-10-15 13:24:55

1

這裏基本上是MatlabDoug的方法用在點的確定一定的改善,他呼籲M.

t = -20:0.1:20; 
plot3(zeros(size(t)),t,-t.^2); 
grid on 
hold on 

v1 = [1 0 200]; 
v1 = v1/norm(v1); 

i = 1; 

h = plot3([-1 0],[0 t(i)],[-400 -t(i)^2],'r'); 
h1 = plot3([-1 0],[0 0],[-400 -200],'g'); 

l = norm([1 t(i) -t(i)^2+400]); 
p = l*v1 + [-1 0 -400]; 
v2 = (p + [0 t(i) -t(i)^2])/2 - [-1 0 -400]; 
p2 = [-1 0 -400] + v2/v2(1); 
h2 = plot3([-1 p2(1)],[0 p2(2)],[-400 p2(3)],'m'); 

pause(0.1) 

for(i=2:length(t)) 
    l = norm([1 t(i) -t(i)^2+400]); 
    p = l*v1 + [-1 0 -400]; 
    v2 = (p + [0 t(i) -t(i)^2])/2 - [-1 0 -400]; 
    p2 = [-1 0 -400] + v2/v2(1); 

    set(h,'xdata',[-1 0],'ydata',[0 t(i)],'zdata',[-400 -t(i)^2]); 
    set(h2,'xdata',[-1 p2(1)],'ydata',[0 p2(2)],'zdata',[-400 p2(3)]); 

    pause; 
end 
+0

真的,你幫了我很多!謝謝!!! – vittorio 2010-10-14 08:46:10

+0

@vittorio,然後請接受建議的答案之一。 – Adrien 2010-10-14 15:26:37

相關問題