¿Cómo hacer que \reversepath sea útil para dibujar la siguiente curva cerrada?

¿Cómo hacer que \reversepath sea útil para dibujar la siguiente curva cerrada?

Quiero dibujar un logo de Batman. Como es simétrico con respecto a la línea vertical, debería ser más conveniente definir primero la parte derecha (o la parte izquierda) y luego reflejarla para obtener la otra parte. La nota importante que debes considerar es que el logo debe construirse mediante una curva cerrada que pueda usarse como trazado de recorte.

Según pst-news13en la página 4, tenemos \reversepathque se puede utilizar para construir una curva en coordenadas invertidas.

Lamentablemente, no pude utilizar \reversepathcomo se muestra en el siguiente código.

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

ingrese la descripción de la imagen aquí

Entonces mi pregunta es ¿cómo usarlo \reversepathen este caso?

Respuesta1

Después de haber perdido mucho tiempo descubriendo cómo \reversepathfunciona, ahora se comprende su comportamiento.

\reversepathafecta las rutas anteriores en lugar de las siguientes (que la mayoría de la gente probablemente asume). Su comportamiento es inconsistente con otras macros (como \scale, \translateetc.) definidas para pscustom. Es una de muchas otras inconsistencias en PSTricks. ¡Pero sigue siendo divertido!

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

ingrese la descripción de la imagen aquí

información relacionada