定义的节点的行为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 的行为?以获得更详细的解释)。