Wie kann \reversepath zum Zeichnen der folgenden geschlossenen Kurve verwendet werden?

Wie kann \reversepath zum Zeichnen der folgenden geschlossenen Kurve verwendet werden?

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-news13Seite 4 haben wir, \reversepathdass verwendet werden kann, um eine Kurve in umgekehrten Koordinaten zu konstruieren.

\reversepathLeider 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}

Bildbeschreibung hier eingeben

\reversepathMeine Frage ist also, wie man es in diesem Fall verwendet ?

Antwort1

Nachdem ich viel Zeit darauf verwendet habe, herauszufinden, wie \reversepathes funktioniert, ist sein Verhalten nun klar.

\reversepathbetrifft 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}

Bildbeschreibung hier eingeben

verwandte Informationen