为什么我们需要在将 pst-eucl 节点传递给 \rput 之前对其进行缓冲?

为什么我们需要在将 pst-eucl 节点传递给 \rput 之前对其进行缓冲?

定义的节点的行为pst-eucl似乎与中定义的节点的行为不同pst-plot

在标题为 的部分中Direct node,我尝试创建一个正方形,pq其底部以 为斜率倾斜pq。不幸的是,它产生了错误的输出。

但是如果我使用中定​​义的节点缓冲旋转的点pst-node,我就会得到正确的输出。

这种不一致的行为可能会造成混乱并且难以调试。您觉得呢?

\documentclass[preview,border=12pt,12pt,varwidth]{standalone}
\usepackage{pst-eucl}
\begin{document}

\section*{Direct node}
\begin{pspicture}[showgrid,saveNodeCoors,NodeCoorPrefix=N](10,10)
    \pstGeonode(4,8){p}(4,6){r}
    \pstRotation[RotAngle=90]{p}{r}[q]
    \rput{!Nqy Nry sub Nqx Nrx sub atan}(r){\psframe(!Nqx Nqy Nrx Nry Pyth2 dup)}
\end{pspicture}

\vspace{4cm}
\section*{Indirect node}
\begin{pspicture}[showgrid,saveNodeCoors,NodeCoorPrefix=N](10,10)
    \pstGeonode(4,8){p}(4,6){r}
    \pstRotation[RotAngle=90]{p}{r}[temp]
    \pnodes(temp){q}
    \rput{!Nqy Nry sub Nqx Nrx sub atan}(r){\psframe(!Nqx Nqy Nrx Nry Pyth2 dup)}
\end{pspicture}

\end{document}

在此处输入图片描述

问题

为什么我们需要pst-eucl在将节点传递给 之前对其进行缓冲\rput? 为什么不使 中定义的节点的行为pst-eucl与 中定义的节点的行为一致pst-plot

答案1

没有中间节点的代码无法工作,因为\pstRotation内部使用了\rput

当使用 移动节点时\rput,使用 保存的坐标saveNodeCoors不能与在 之外定义的其他节点的坐标一起使用\rput(参见我们如何解释 \rput、\psGetNodeCenter 和 saveNodeCoors 的行为?以获得更详细的解释)。

相关内容