[英]Shading a triangle in postscript
我想寫一些后記代碼來遮蔽三角形。 這是我從幾個生成陰影正方形的谷歌搜索中拼湊而成的一些代碼:
%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 0 0 400 400
/square{
0 0 40 40 rectclip
<< /ShadingType 2
/ColorSpace [ /DeviceRGB ]
/Coords [ 0 0 40 40 ]
/Function <<
/FunctionType 2
/Domain [ 0 1 ]
/C0 [ 0.9 0.2 0.0 ]
/C1 [ 0.0 0.2 0.9 ]
/N 1
>>
>>
} bind def
save gsave
200 200 translate 45 rotate
square shfill
grestore restore
100 100 translate 300 rotate
square shfill showpage
現在,如果我用這段代碼創建一個純文本文件並將文件名命名為 shade.ps --- 重要的是 .ps --- 並在 Mac 上雙擊打開,然后 Apple Preview 應用程序將打開該文件並制作一張帶有陰影正方形的兩個副本的圖片。 偉大的!
但現在我想以類似的方式遮蔽一個三角形。 我的目標是本着上面的精神編寫幾行代碼來生成陰影三角形。
誰能幫忙? 這甚至是提出這個問題的正確論壇嗎?
2023 年 1 月 16 日添加的注釋:我刪除了下面答案中提到的冗余代碼行。
我的目標是繪制一個帶有薄菱形和厚菱形的 Penrose 瓷磚,然后對菱形進行陰影處理,以幫助呈現出傾斜的屋頂,體現了 John Conway 的名為 Penrasia 的城市的精神。
描述正方形的部分是這一行(在原始代碼中不必要地重復):
0 0 40 40 rectclip
要將其更改為三角形,您需要編寫一個 function 來創建一個三角形路徑,然后對其調用clip
。 如果您查看rectclip
的擴展版本,這可能更容易理解,它看起來像這樣:
/rectclip {
4 dict
/height exch def
/width exch def
/y exch def
/x exch def
x y moveto
width 0 rlineto
0 height rlineto
width neg 0 rlineto
closepath
clip
end
} def
對於三角形,你需要做更多類似的事情,這取決於你想如何描述三角形:
/triclip {
4 dict
/height exch def
/width exch def
/y exch def
/x exch def
x y moveto
width 0 rlineto
width 2 div neg height rlineto
closepath
clip
end
} def
你會像原來調用rectclip
一樣調用這個 function。
0 0 40 40 triclip
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.