我们可以使用 \curvepnodes 和 \psnline 来替换传递给 \psrline 的连接点吗?

我们可以使用 \curvepnodes 和 \psnline 来替换传递给 \psrline 的连接点吗?

在此处输入图片描述

我们可以使用\curvepnodes\psnline来获得与以下代码相同的结果吗?

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{multido,pst-node}
\begin{document}
\begin{pspicture}[showgrid](-5,-5)(5,5)
\def\points{}%
\multido{\r=0.0+0.1}{90}{\xdef\points{\points(!1 \r\space sqrt 700 mul PtoC)}}
\psset{showpoints,dotstyle=o,dotscale=2}
\rput(-1,0){\expandafter\psrline\points}
\end{pspicture}
\end{document}

在此处输入图片描述

注意:各段的长度相等。

答案1

您可以按照以下方式进行操作:

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{multido,pst-node,pst-plot}
\begin{document}
\begin{pspicture}[showgrid](-5,-5)(5,5)
  \curvepnodes[plotpoints=90]{0}{89}{%
    -1 0        % starting point
     0 1 t {% start increment end 
      0.1 mul sqrt 700 mul 1 exch PtoC % the coordinates of the relative vector 
      3 -1 roll add 3 1 roll add exch  % add the coordinates to the intermediate result on the stack
    } for }{P}
  \psnline[showpoints,dotstyle=o,dotscale=2](0,89){P} 
\end{pspicture}
\end{document}

主要区别在于,需要对所有节点使用绝对坐标。这是通过在 的 Postscript 表达式中进行迭代来实现的\curvepnodes

plotpointstmintmax(的前两个参数)的值\curvepnodes是这样选择的,即为t整数。

0因此,Postscript 部分将从到 的所有相对向量相加t-1 0给出了起点。

结果和你的一样:)

在此处输入图片描述

这是一个变体,将中间结果保存为和,/myX效率更高:/myYtx@NodeDict

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{multido,pst-node,pst-plot}
\begin{document}
\begin{pspicture}[showgrid](-5,-5)(5,5)
  \pstVerb{tx@NodeDict begin /myX -1 def /myY 0 def end }%
  \curvepnodes[plotpoints=90]{0}{89}{%
    myX myY
    t 0.1 mul sqrt 700 mul 1 exch PtoC
    3 -1 roll add 3 1 roll add exch
    2 copy /myY ED /myX ED
  }{P}
  \psnline[showpoints,dotstyle=o,dotscale=2](0,89){P} 
\end{pspicture}
\end{document}

答案2

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pstricks-add}
\begin{document}

\begin{pspicture}[showgrid](-5,-5)(5,5)
\psset{showpoints,dotstyle=o,dotscale=2}
\psStartPoint[P](0,0)
\multido{\r=0.1+0.1}{90}{\psVector[arrows=-](!1 \r\space sqrt 700 mul PtoC)}
\uput[0](P50){P50}
\end{pspicture}

\end{document}

在此处输入图片描述

相关内容