11/06/2006

9.2.1 LINE畫線法(4)

多點連線時,參數可以矩陣表示,但每行代表一線,亦可採用多行,形成方形矩陣,下面為其一例:

實例1.4


有一物體斜向抛向空中再落地。初始速度設為V,水平角度為θ,試求其全程經歷之時間(Elapsed_time)、高度變化(h)及垂向速度(V(t))變化。

做法:先求物體垂向速度、高度及經歷時間。後者為物體達到最高點之兩倍,其公式如下:









程式:

v0=60; %Initial velocity, m/s
theta=60; %Projection angle, degrees
gty=9.81; %gravity acceleration
sintheta=sind(theta);
elapsed_time=2*v0/gty*sintheta; %the travel time
t=linspace(0,elapsed_time,50);
h=v0*t*sintheta-0.5*gty*t.^2;
v=v0*sintheta-gty*t;
bar(t',v')
line(t',h')
line([0,elapsed_time],[0,0])
xlabel('Elapsed time, seconds')
ylabel('Height(m) & Velocity(m/s)')


執行結果:實線部份為速度,單線為高度線。



實例1.5



作上述各高度點與原點之連線。

做法:利用line(x,y)畫線指令,其[x,y]為連線上各點之座標。而且為使連線一再經過原點,必須將兩點之對應座標值穿插其間。唯一的辦法是將[x,y]分別做成二列矩陣,第一列屬於高點之座標,第二列屬於底點(原點)之座標。然後用x(:)與y(:)串聯起來。記得這樣做是將矩陣變成單行矩陣,其連接方式是一行接一行,因而可以達到間插點的效果。

程式內容:(t與h沿用上題)

x=[t;zeros(size(t))];y=[h;zeros(size(h))];
line(x(:),y(:))


執行結果:





線段指令亦可應用於三維的點線。其語法如下:

h=line(X,Y,Z)
h=line(X,Y,Z,'PropertyName',PropertyValue,...)


繪線指令係繪製直線線段,其功能與一般之plot()指令大同小異,只是後者加上複雜的座標功能。若要純繪圖,則使用line()指令較為方便,而且同一個圖可以執行多次線段之繪製,plot則是一次一圖,要繪重疊圖必須配合hold on指令。

但是line()指令沒有plot()之簡易設定功能,所以有些基本參數需依其參數名稱設定。每次繪線,同樣亦可有握把設定之功能,若不設定,亦可使用gca擷取,但僅限於最近繪製之線段。

線段屬性包括顏色、寬度、線型、點標等等。一般參數之前三項為資料行,可以繪製二維或三維線段,亦可用如下格式輸入,但必須成雙:

line('XData',x,'YData',y,'ZData',z)


MATLAB 繪製線段時係使用預設顏色,而且自動依序分配,故在矩陣資料之繪線時,無法控制其顏色。若X與Y是同長度之矩陣,則係以行為單位,每對應行繪製一線。若要設定其參數值,則參數名稱與輸入值應成對,如:

line(X,Y,Z,'Color','r','LineWidth',4)


其他詳細之應用我們將在後面章節會陸續用到,屆時再詳加介紹。