postscript
पथ निर्माण
खोज…
एक बहुभुज आरेखण (वर्णन)
यह उदाहरण arc
जैसे बिल्ट-इन पथ निर्माण ऑपरेटरों के व्यवहार की नकल करने का प्रयास करता है।
यदि कोई वर्तमान बिंदु है, तो poly
पहले (x, y) + (r, 0) के लिए एक रेखा खींचती है, अन्यथा यह उस बिंदु पर जाकर शुरू होती है।
gsave
बजाय ... grestore
(जिसमें वर्तमान पथ जो हम चाहते हैं, बहुत बदलावों को छोड़ने का अवांछनीय प्रभाव है), यह वर्तमान परिवर्तन मैट्रिक्स (CTM) की एक प्रति बचाता है क्योंकि यह फ़ंक्शन शुरू होने पर मौजूद है।
फिर यह प्रत्येक सफल बिंदु पर lineto
करता है, जो मैट्रिक्स को स्केल करके और घुमाकर हमेशा (0,1) पर होता है। अंत में, यह closepath
कहता है और फिर सहेजे गए मैट्रिक्स को CTM के रूप में पुनर्स्थापित करता है।
% x y n radius poly -
% construct a path of a closed n-polygon
/poly {
matrix currentmatrix 5 1 roll % matrix x y n radius
4 2 roll translate % matrix n radius
dup scale % matrix n
360 1 index div exch % matrix 360/n n
0 1 {lineto currentpoint moveto}stopped{moveto}if % start or re-start subpath
{ % matrix 360/n
dup rotate % matrix 360/n
0 1 lineto % matrix 360/n
} repeat % matrix 360/n
pop % matrix
closepath % matrix
setmatrix %
} def
एक रास्ते से गुजरना
यह स्निपेट वर्तमान पथ की सामग्री को स्टडआउट करने के लिए डंप करता है। यह भूतप्रक्रिया प्रक्रिया का उपयोग करता है =only
जो सभी दुभाषियों पर उपलब्ध नहीं हो सकता है। एडोब दुभाषियों पर एक समान प्रक्रिया =print
कहा जाता है।
pathforall
एक लूपिंग ऑपरेटर है जो 4 प्रक्रिया निकायों को तर्कों के रूप में लेता है, जिन्हें विशिष्ट प्रकार के पथ तत्वों के लिए कहा जाता है, जो moveto
, lineto
, curveto
, closepath
, और अन्य सभी पथ-संचालक ऑपरेटरों का परिणाम है जो इन तत्वों को उबालते हैं।
{ exch =only ( ) print =only ( ) print /moveto =}
{ exch =only ( ) print =only ( ) print /lineto =}
{ 6 -2 roll exch =only ( ) print =only ( ) print
4 2 roll exch =only ( ) print =only ( ) print
exch =only ( ) print =only ( ) print /curveto =}
{ /closepath = }
pathforall
ग्राफ पेपर
/in {72 mul} def
/delta {1 in 10 div} def
/X 612 def
/Y 792 def
0 delta Y {
0 1 index X exch % i 0 X i
moveto exch % 0 i
lineto
stroke
} for
0 delta X {
0 1 index Y % i 0 i Y
moveto % i 0
lineto
stroke
} for
showpage