\psline[origin={1,2}](3;45)
从点开始,3
以 的角度画一条长度为 的线。45 degrees
(1,2)
TikZ 的对应内容是什么\psline[origin={1,2}](3;45)
?
答案1
您可以使用语法指定极坐标(angle:radius)
,因此一条 45 度角且长度为 3 的线是(45:3)
。但作为裸坐标,它以原点为中心。所以我们需要使用 或 来移动它+
(++
取决于我们是否要移动计算点下一个点)。因此:
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\tikz \draw (0,0) (1,2) -- +(45:3) -- +(90:2);
\tikz \draw (0,0) (1,2) -- ++(45:3) -- +(90:2);
\end{document}
在这两种情况下,(45:3)
都是相对于 点的(1,2)
(如要求的那样),但在第一个中(90:2)
, 也是相对于 点的(1,2)
,而在第二个中, 是相对于 指定的点的(45:3)
。
结果(有点像,见下文):
(我希望这些圆圈不会分散注意力。它们的作用是强调指定点的位置。)
(添加于编辑) 极坐标的详细信息请参见第 13.2.1 节 (画布、XYZ 和极坐标系) 的 pgfmanual(在我的版本,即 PGF2.10 中,极坐标位于第 125 页)。在查阅此参考资料时,我注意到极坐标的一个微妙之处。有两个版本:canvas polar
和xyz polar
。在后者中,允许预定义一个X矢量和一个是向量将被视为新的X和是canvas polar
向量,用于任何后续的非画布坐标计算。总是相对于画布,而xyz polar
相对于当前使用的坐标系。微妙之处在于隐式指定极坐标的形式,其中包含一种选择是还是 的(angle:radius)
方式。如果包含明确的单位,则为,否则为。canvas polar
xyz polar
radius
canvas polar
xyz polar
大多数情况下,这没什么大不了的。特别是,如果你不弄乱X和是向量,两者等价。
(在第二次编辑中添加)根据要求,网格线,加上(自动!)坐标。实际的生成图表的代码是:
\documentclass{standalone}
\usepackage{tikz}
\makeatletter
\tikzset{c/.style={insert path={node[fill,circle] {} node[above left] {(\pgfmathparse{\pgf@x * 0.03514598035}\pgfmathprintnumber{\pgfmathresult},\pgfmathparse{\pgf@y * 0.03514598035}\pgfmathprintnumber{\pgfmathresult})}}}}
\tikzset{ce/.style={c,insert path=(current bounding box.south west) grid (current bounding box.north east)}}
\makeatother
\begin{document}
\tikz \draw[ce] (0,0)[c] (1,2)[c] -- +(45:3)[c] -- +(90:2)[ce];
\tikz \draw (0,0)[c] (1,2)[c] -- ++(45:3)[c] -- +(90:2)[ce];
\end{document}
(该因子0.03514598035
(显然)是从 TeX 点到厘米的转换)
答案2
这将是:
\draw (1,2) -- +(45:3);
它从 (1,2) 开始。--
表示应绘制一条线(不只是进行“移动”)。 表示+
下一个坐标相对于当前坐标,(45:3)
代表角度和长度。