網路城邦
上一篇 回創作列表 下一篇   字體:
MetaPost語言﹣虛線、箭頭、轉折、端點。
2013/07/23 12:51:40瀏覽712|回應0|推薦2

虛線的用法,則使用dashed,如

draw path dashed [dash pattern]

dash pattern則定義了數種:

evenly 是一般的虛線,withdots則是由點形成的虛線。evenly和withdots都是型態為圖形的常數,evenly是長度3 bp 的線段和3 bp 的空白所組成;而withdots 則是間隔為2.5 bp的點所組成。MetaPost提供了dashpattern這個宏來產生虛線的種類:

evenly = dashpattern(0n 3 off 3);

withdots = dashpattern(off 2.5 on 0 off 2.5);

dashpattern(on/off)這個宏可以用on/off指令來輸出所需要的虛線,如果需要長度 2pt,間隔 3pt 的虛線,則是dashpattern (on 2pt off 3pt) 即可。

虛線內容為圖形檔,所以它們可以用 scaled 和 shifted等運算做出變化:

箭頭是用drawarrow等命令所繪出的,但箭頭的組成是由二個環境變數決定,ahlength 是箭頭的長度,ahangle 是箭頭的角度。預設值是 ahlength=4bp; ahangle=45;MetaPost定義了arrowhead的運算元:

vardef arrowhead expr p =

save q, e; path q; pair e;

e = point length p of p;

q = gobble(p shifted -e cutfater makepath(pencircle scaled 2ahlength)) cuttings;

(q rotated .5ahangle & reverse q rotated -.5ahangle-cycle) shifted e

enddef;

arrowhead運算元就是把path末端的點 e 為圓心,半徑為 ahlength的圓為界,把path 末端一段 path 切下來,存成變數 q。然後再把末端點在(0,0)上的q做出旋轉運算後,形成的箭頭形狀封閉path平移回到 e傳回。如下圖所示:

所以如果對原來的箭頭不滿意,想要自已定義自已喜歡的箭頭,則可以參考MetaPost手冊中的範例:

轉折與端點的形狀

端點的形狀,由環境變數linecap來控制。有三種型式:rounded, butt; squared。這個也是MetaPost手冊的範例:

rounded是pen形狀如何就是如何; butt 則是把多出的部分完全切除;squared則是延伸出去和rounded一樣長度,但為方形。

轉折部位,則由環境變數linejoin控制,其內容有三:rounded, beveled, mitered。這個也是MetaPost手冊的範例:

可看出rounded是用原來pen的形狀放在角平分線圓滑的效果;beveled是沿外角平分線切斷;mitered是延長直到相交,但如果轉折角度越接近180度,則這個尖角延長越長。所以必須由環境變數miterlimit限制,由下例可看出,miterlimit 是角尖尖距與線寛的比例,如果不超過可以形成尖角,否則以beveled方式處理,這個也是MetaPost手冊的範例:

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

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