![PSTricks 中的相对坐标](https://linux22.com/image/269410/PSTricks%20%E4%B8%AD%E7%9A%84%E7%9B%B8%E5%AF%B9%E5%9D%90%E6%A0%87.png)
钛钾Z 使我们可以轻松使用相对坐标,如下例所示。
\documentclass[border=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\coordinate (A) at (-1,0);
\draw[blue,->] (A) -- +(30:1);
\draw[red] ($(A)+(30:1)$) +(30+90:1) -- +(30-90:1) -- +(30:0.5) -- +(30+90:1) coordinate (end);
\draw[green] (A) -- (end) ++(30-90:2) -- (A);
\end{tikzpicture}
\end{document}
这非常优雅,因为我不必手动计算坐标,特别是在使用任意放置的节点时。
由于 PSTricks 利用了 Postscript 的计算能力,我希望有一种方法可以使用相对坐标。语法可能不像 Ti 中那么简单钾Z,但使用 PSTricks 进行 3D 和绘图要容易得多。
问题:PSTricks 是否具有相对坐标功能?(如果有,我该如何使用它们?)
答案1
\psrline
在第 41 页的文档中进行了说明pst-node
,但其代码是在 中实现的pstricks-add
。像往常一样,这可能有历史原因。
根据您的第一个案例(编辑之前):
\psrline(A)(B)(C)...
相当于\draw (A) -- ++(B) -- ++(C)...
。
\documentclass[pstricks,border=4mm]{standalone}
\usepackage{pstricks-add}
\begin{document}
\begin{pspicture}[showgrid](-2,-1)(1,1)
\pnode(-1,0){A}
\psrline(A)(1;30)
\end{pspicture}
\end{document}
根据您的第二种情况(编辑后):
据我所知,没有与 等效的 PSTricks \draw (A) -- +(B) -- +(C)...
。以下代码产生与您的相同的输出。
\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pstricks-add}
\begin{document}
\begin{pspicture}[showgrid=true](-2,-1)(1,2)
\pnode(-1,0){A}
\pnode([nodesep=1,angle=30]A){B}
\pnode([nodesep=1,angle={!30 90 add}]B){end}
\psrline[linecolor=blue]{->}(A)(1;30)
\psline[linecolor=red](B)(end)([nodesep=1,angle={!30 90 sub}]B)([nodesep=0.5,angle=30]B)(end)
\psline[linecolor=green](A)(end)
\psline[linecolor=green]([nodesep=2,angle={!30 90 sub}]end)(A)
\end{pspicture}
\end{document}
答案2
\documentclass[border=3mm,pstricks]{standalone}
\usepackage{pstricks-add}
\begin{document}
\begin{pspicture}[showgrid](9,10)
\psStartPoint(1,0)
\psVector(1;30)
\psStartPoint(1,1)
\psVector[arrows=-](3;30)
\psVector[arrows=-](4;60)
\psVector[linecolor=red,arrows=-](3;10)
\psVector[linestyle=dashed,arrows=-](4;110)
\end{pspicture}
\end{document}
单个线段的另一种可能性是\rput(-1,0){\psline(1;30)}