
Ich möchte ein Batman-Logo zeichnen. Da es symmetrisch zur vertikalen Linie ist, sollte es bequemer sein, zuerst nur den rechten (oder linken) Teil zu definieren und ihn dann zu spiegeln, um den anderen Teil zu erhalten. Wichtig zu beachten ist, dass das Logo aus einer geschlossenen Kurve bestehen muss, die als Beschneidungspfad verwendet werden kann.
Gemäß pst-news13
Seite 4 haben wir, \reversepath
dass verwendet werden kann, um eine Kurve in umgekehrten Koordinaten zu konstruieren.
\reversepath
Leider ist es mir nicht gelungen, es wie im folgenden Code gezeigt zu verwenden .
\documentclass[pstricks,border=6pt]{standalone}
\SpecialCoor
\pstVerb
{
/theta 72 def
/Major 6.0 def
/Minor 3.3 def
% b a t p2c ---> x y
% where b (semi-minor), a (semi-major), t (theta)
/p2c {dup 3 1 roll cos mul 3 1 roll sin mul} bind def
}
\def\RightPart
{
\psline(0,2.7)(0.5,2.7)(1,3.25)
\psbezier(1.2,1.3)(1.3,1.0)(2.0,1.0)
\psbezier(3.0,1.0)(3.0,2.2)(!Minor Major theta p2c)
\psellipticarcn(0,0)(!Major Minor){(!Minor Major theta p2c)}{(!Minor Major theta neg p2c)}
\psbezier(4,-2)(4,0)(2.2,-1.8)
\psbezier(1.5,-1)(1,-1)(0,-3.2)
}
\def\LeftPart
{
\scale{-1 1}
\reversepath
\psbezier(1.5,-1)(1,-1)(0,-3.2)
\psbezier(4,-2)(4,0)(2.2,-1.8)
\psellipticarcn(0,0)(!Major Minor){(!Minor Major theta p2c)}{(!Minor Major theta neg p2c)}
\psbezier(3.0,1.0)(3.0,2.2)(!Minor Major theta p2c)
\psbezier(1.2,1.3)(1.3,1.0)(2.0,1.0)
\psline(0,2.7)(0.5,2.7)(1,3.25)
\closepath
}
\begin{document}
\begin{pspicture}[showgrid=false](-7.85,-4.85)(7.85,4.85)
\pscustom[dimen=middle]{\RightPart}
\end{pspicture}
\begin{pspicture}[showgrid=false](-7.85,-4.85)(7.85,4.85)
\pscustom[dimen=middle]{\LeftPart}
\end{pspicture}
\begin{pspicture}[showgrid=false](-7.85,-4.85)(7.85,4.85)
\pscustom[dimen=middle,fillstyle=solid,fillcolor=red]{\RightPart\LeftPart}
\end{pspicture}
\end{document}
\reversepath
Meine Frage ist also, wie man es in diesem Fall verwendet ?
Antwort1
Nachdem ich viel Zeit darauf verwendet habe, herauszufinden, wie \reversepath
es funktioniert, ist sein Verhalten nun klar.
\reversepath
betrifft die vorherigen Pfade und nicht die folgenden Pfade (was die meisten Leute wahrscheinlich annehmen). Sein Verhalten ist inkonsistent mit anderen Makros (wie \scale
, \translate
, usw.), die für definiert sind pscustom
. Dies ist eine von vielen weiteren Inkonsistenzen in PSTricks. Aber es macht trotzdem Spaß!
\documentclass[pstricks,border=12pt]{standalone}
% b a t p2c ---> x y
% where b (semi-minor), a (semi-major), t (theta)
\pstVerb{/p2c {dup 3 1 roll cos mul 3 1 roll sin mul} bind def}
\def\RightPart
{
\psline(0.5,2.7)(1,3.25)
\psbezier(1.2,1.3)(1.3,1.0)(2.0,1.0)
\psbezier(3.0,1.0)(3.0,2.2)(!3.3 6.0 72 p2c)
\psellipticarcn(6.0,3.3){(!3.3 6.0 72 p2c)}{(!3.3 6.0 72 neg p2c)}
\psbezier(4,-2)(4,0)(2.2,-1.8)
\psbezier(1.5,-1)(1,-1)(0,-3.2)
}
\begin{document}
\begin{pspicture}[showgrid](-7,-4)(7,4)
\pscustom[dimen=middle,fillstyle=solid,fillcolor=orange,linewidth=6pt]
{
\RightPart
\reversepath
\scale{-1 1}
\RightPart
\closepath
}
\end{pspicture}
\end{document}