我想将点B
逆时针旋转 30 度以A
产生一个新点C
。但是,我无法得到正确的结果,C
如下图所示。红色圆圈帮助我们轻松注意到这个问题。
\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-eucl}
\psset{saveNodeCoors}
\begin{document}
\begin{pspicture}[showgrid](6,6)
\pstGeonode
(1,1){A}
(5,3){B}
(!N-B.y N-A.y sub 2 exp N-B.x N-A.x sub 2 exp add sqrt N-B.y N-A.y sub N-B.x N-A.x sub atan 30 add PtoC){C}
\pstCircleOA[linecolor=red]{A}{B}
\end{pspicture}
\end{document}
笔记
不要建议我使用,\pstRotation
因为我已经知道它了,而且它不是我的兴趣所在。您可能会建议我使用([angle=30,nodesep=]{B}A)
,但问题是必须为它 分配一个绝对值。例如,在语法中nodesep
添加一个新键可能是一个好主意,这样我们只需编写就可以解决这个问题。relnodesep
([angle=30,...]{B}A)
([angle=30,relnodesep=1]{B}A)
答案1
A
您只需旋转节点和之间的差异向量B
,但最后必须添加“原点”的坐标A
:
\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-eucl}
\psset{saveNodeCoors}
\begin{document}
\begin{pspicture}[showgrid](6,6)
\pstGeonode
(1,1){A}
(5,3){B}
(!N-B.y N-A.y sub 2 exp N-B.x N-A.x sub 2 exp add sqrt
N-B.y N-A.y sub N-B.x N-A.x sub atan 30 add PtoC
N-A.y add exch N-A.x add exch % this was missing
){C}
\pstCircleOA[linecolor=red]{A}{B}
\end{pspicture}
\end{document}