使用\CW

使用\CW

让我分为两种情况来讨论:

使用\CW

在此处输入图片描述

\documentclass[border=12pt]{standalone}
\usepackage{pstricks}

\def\CW{\psline(2,2)(3,4)(4,1)(4,-3)}

\begin{document}    
\begin{pspicture}[showgrid=top](-5,-5)(5,5)
\pscustom[fillstyle=solid,fillcolor=red,linewidth=5pt]
{
    \CW
    \reversepath
    \scale{-1 1}
    \CW
    \closepath
    \pscircle{1}
}
\end{pspicture}
\end{document}

分析

  • \def\CW{\psline(2,2)(3,4)(4,1)(4,-3)}当我们从原点观察时,是一条顺时针路径。

  • 以下代码片段通过路径反转逆时针“追踪”左侧部分\CW

    \CW
    \reversepath
    
  • 以下代码片段通过\CW垂直镜像逆时针“追踪”右侧部分。

    \scale{-1 1}
    \CW
    
  • 以下代码片段通过闭合路径“创建”一个多边形。该多边形的方向为逆时针。

    \closepath
    
  • 以下代码片段按照设计“制作”了一个逆时针的圆圈。

    \pscircle{1}     
    
  • 请注意,\pscustom默认情况下使用非零规则。由于多边形和圆具有相同的方向(逆时针),因此所有点都在“内部”,因此没有洞。因此上面给出的输出不一致。

使用\CCW

在此处输入图片描述

\documentclass[border=12pt]{standalone}
\usepackage{pstricks}

\def\CCW{\psline(4,-3)(4,1)(3,4)(2,2)}

\begin{document}
\begin{pspicture}[showgrid=top](-5,-5)(5,5)
\pscustom[fillstyle=solid,fillcolor=red,linewidth=5pt]
{
    \CCW
    \reversepath
    \scale{-1 1}
    \CCW
    \closepath
    \pscircle{1}
}
\end{pspicture}
\end{document}

分析

  • \def\CCW{\psline(4,-3)(4,1)(3,4)(2,2)}当我们从原点观察时,是一条逆时针路径。

  • 以下代码片段通过路径反转顺时针“追踪”左侧部分\CCW

    \CCW
    \reversepath
    
  • 以下代码片段通过\CCW垂直镜像来顺时针“追踪”右侧部分。

    \scale{-1 1}
    \CCW
    
  • 以下代码片段通过闭合路径“创建”一个多边形。该多边形的方向为顺时针。

    \closepath
    
  • 以下代码片段按照设计“制作”了一个逆时针的圆圈。

    \pscircle{1}     
    
  • 注意,\pscustom默认情况下使用非零规则。由于多边形和圆的方向不同,圆内的点会变成“外部”,因此有一个洞。因此上面给出的输出也是不一致的。

问题

PSTricks 如何确定由 构成的复合对象的最终路径方向\reversepath?在我看来,PSTricks\reversepath在关闭路径时添加了一个额外内容。请纠正我。

答案1

\scale{-1 1}是顺时针方向形成圆圈的原因。

\documentclass[border=12pt]{standalone}
\usepackage{pstricks}
\def\CW{\psline(2,2)(3,4)(4,1)(4,-3)}
\begin{document}    
    \begin{pspicture}[showgrid=top](-5,-5)(5,5)
    \pscustom[fillstyle=solid,fillcolor=red,linewidth=5pt]
    {
        \CW % (2,2)(3,4)(4,1)(4,-3)
        \reversepath % now (4,-3)(4,1)(3,4)(2,2)
        \scale{-1 1}
        \CW % (-2,2)(-3,4)(-4,1)(-4,-3)
        \closepath % line from -4,-3 to 4,-3 counter clockwise path
        % \pscircle moves the current path to (-1,0) !!
        \pscircle(0,0){1}% clockwise: circle not filled (scale -1 1)!!
    }% The inner of the circle is _not_ inside the path
    \end{pspicture}
\end{document}

相关内容