網路城邦
上一篇 回創作列表 下一篇   字體:
MetaPost語言﹣運算元(一):=與:=
2013/06/25 05:46:29瀏覽196|回應0|推薦2

等號=與:=,在MatePost的義意不同。

"="就如同一般數學式的意思,相等之意。而

":="才是如同電腦程式的「賦值」的意思。

a=1cm; %變數a等於1cm。

a:=1cm;%把:=右邊的算值存入左方變數中。

所以a=1cm; a:=1cm;這裡的結果都一樣,電腦執行也不會出錯。但是如果是

a:=a+1;和

a=a+1;

執行程式碼時,a=a+1就會出現錯誤。

在MeTapost裡面,給變數一個內容值,有二程方式,第一程就是使用附值的方式,把計算結果存入變數中,如同a:=a+1;這種方式。另外有一種方式就是寫出方程式,讓電腦自已去算結果。例如這個程式碼,沒有把數值指定給數a,b,但a,b最後已有值了:

numeric a,b;

a+b=2a-b=3;%(等於是a+b=3; 2a-b=3;)

show a,b;

end;

mpost執行這個程式碼,會在電腦幕上面印出

>>2

>>1

可以這麼說,如果我們一時之間無法算出答案,這時寫聯立方程式,給電腦自已去找解會更方便。例如有二個不平行的向量,它們的某個廷長點必會相交,我們如果要在電腦上面繪圖,要用賦值方式給坐標變數的話,必需要自已算出解後,才能輸入程式碼,讓它執行。但寫方程式給它就很簡單,如果坐標p1, p2, p3, p4 為已知,而求p1p3, p2p4的交點p5:

p5=whatever[p1,p3]=whatever[p2,p4];

例如畫三角形的內心,(-4,2), (2,-3), (1,5)三頂點的外心G:

還有一個例子,使用=讓電腦自已去算結果的方式,就是變形transform 變數,在學術上的名稱為仿射變換。它的意思就像我們對著牆壁玩手影時,手的形狀是一個圖形,而牆上的手投影也是一個圖形,但投影是經過光線角度、牆面角度等原因,其形狀已經有了改變。這種圖形投影造成的變化,可以由幾何學公式推導出來。這中間的轉換,就是transform。這種變形的參數有六個,在幾何學裡面,可以證明某平面不共線三個點,可以決定一個唯一的transform。例如上例的三角形,我只要想要的效果,如(-4,2) 變形到(3,-5);(2,-3) 轉變到 (-2,-7);(1,5)轉換到(-1,-6);transform 的6個參數就可以由這三個轉換,形成六元一次聯立方程式,讓電腦自已算出來,如程式碼:

transform T;

(-4,2) transformed T = (3,-5);

(2.-3) transformed T = (-2,-7);

(1,5) transformed T = (-1,-6);

這樣一來,T的內容的六個值,電腦就能算好,剩下我們就可以把圖形用這個T來個仿射的運算。如下圖。

( 興趣嗜好電腦3C )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=paraquat&aid=7812746