以下两个输入文件产生相同的输出。
方法 1:
\documentclass[pstricks,border=15pt]{standalone}
\usepackage{pst-eucl}
\psset{PosAngle={-135,90},CurveType=polyline}
\begin{document}
\begin{pspicture}[showgrid=false](4,4)
\pstGeonode
(1,1){O}
(4,3){A}
\uput{1}%
[!3 1 sub 4 1 sub atan]
{!3 1 sub 4 1 sub atan}(O){$\pi-\theta$}
\end{pspicture}
\end{document}
方法 2:
\documentclass[pstricks,border=15pt]{standalone}
\usepackage{pst-eucl}
\psset{PosAngle={-135,90},CurveType=polyline}
\begin{document}
\begin{pspicture}[showgrid=false](4,4)
\psset{linecolor=red}
\pstGeonode
(1,1){O}
(4,3){A}
\uput{1}%
[!\psGetNodeCenter{A}\psGetNodeCenter{O} A.y O.y sub A.x O.x sub atan]
{!\psGetNodeCenter{A}\psGetNodeCenter{O} A.y O.y sub neg A.x O.x sub atan}(O){$\pi-\theta$}
\end{pspicture}
\end{document}
问题是为什么我必须3 1 sub 4 1 sub atan
用第一种方法来表达,就像
A.y O.y sub neg A.x O.x sub atan
用第二种方法一样,而
A.y
等于 3
O.y
等于 1
A.x
等于 4
O.x
等于 1
?
换句话说,为什么我需要在第二种方法中添加neg
第一个参数?atan
答案1
节点保存在自己的字典中,该字典还保存当前变换矩阵,使用时可恢复该矩阵\psGetNodeCenter
。要旋转回来,必须使用负旋转角度:
{!\psGetNodeCenter{A}\psGetNodeCenter{O} A.y O.y sub A.x O.x sub atan neg}(O){$\pi-\theta$}
neg
必须在最后使用。然而,当使用 y 时,它会产生相同的结果
答案2
使用最新的 PSTricks 包后,该问题不再存在。
\documentclass[pstricks,border=15pt]{standalone}
\usepackage{pst-eucl}
\psset{PosAngle={-135,90},CurveType=polyline}
\begin{document}
\begin{pspicture}[showgrid=false](4,4)
\psset{linecolor=red}
\pstGeonode
(1,1){O}
(4,3){A}
\uput{1}%
[!N-A.y N-O.y sub N-A.x N-O.x sub atan]
{!N-A.y N-O.y sub N-A.x N-O.x sub atan}(O){$\pi-\theta$}
\end{pspicture}
\end{document}