我正在通过官方指导为了学习 tikz,我目前正试图理解转换运算符。
我从网络上了解到,“旋转”会围绕 (0,0) 旋转,除非你使用“旋转”,这部分解释了这种行为。
请看下面的代码。它用辅助线绘制一个网格,然后从 (0,0) 到 (0,0.5) 绘制一条线,然后变换下一条线。
\documentclass[a4paper,12pt]{article}
\usepackage{tikz}
\usetikzlibrary{intersections}
\tikzset{help lines/.style=very thin}
\tikzset{Karl's grid/.style = {help lines,color=#1!50}, Karl's grid/.default = blue}
\begin{document}
\begin{tikzpicture}
\draw[step = 0.5cm, Karl's grid] (-1.4,1.4) grid (1.4,-1.4);
\draw[thick] (0,0) -- (0,0.5) [xshift = 0cm, xscale = 1.5, rotate = 10] (1,0) -- (1,0.5);
\end{tikzpicture}
\hspace{0.5cm}
\begin{tikzpicture}
\draw[step = 0.5cm, Karl's grid] (-1.4,1.4) grid (1.4,-1.4);
\draw[thick] (0,0) -- (0,0.5) [xshift = 1cm, xscale = 1.5, rotate = 10] (0,0) -- (0,0.5);
\end{tikzpicture}
\end{document}
生成以下图像:
如您所见,两种情况下变换后的线条都不同。不同之处在于,在第一种情况下,我使用移位将线向右移动 1cm,在第二种情况下,我直接将 x 坐标增加 1。
那么,为什么会产生不同的输出呢?我假设移位发生在最后,这意味着首先将 x 坐标缩放 1.5,然后旋转 10°,然后然后向右移动 1。这就是为什么第一次最终结果为 1,而第二次最终结果为 1.5。
但旋转至少不应该是相同的吗?为什么有时会“提升”线条,有时却不会?感觉它应该总是被提升,以获得 10° 的角度。
我的直觉是,转变会以某种方式移动旋转点。
总结一下:这些操作是按照什么顺序应用的?切换旋转和比例尺产生不同的图像,所以显然它们在我需要时就被执行了。:)
答案1
我假设移位发生在最后,这意味着首先将 x 坐标缩放 1.5,然后旋转 10°,然后向右移动 1。
不,转换在调用它们时应用,并且对 TeX 组的其余部分有效(类似于开关\bfseries
或\itshape
工作方式)。
但旋转至少不应该是相同的吗?为什么有时会“提升”线条,有时却不会?感觉它应该总是被提升,以获得 10° 的角度。
正如你自己所说,轮换总是在进行(0, 0)
,但是当前的 (0, 0)
。原点在相同位置发生移动。
我的直觉是,转变会以某种方式移动旋转点。
是的!
让我们检查一下你的第一的绘画:
[xshift = 0cm, xscale = 1.5, rotate = 10] (1,0) -- (1,0.5);
每个转换都按照其调用的顺序应用:
显然
xshift = 0cm
什么也没做。这
xscale
使得它就像你写的一样(1.5, 0) -- (1.5, 0.5)
现在你把它旋转一圈
(0, 0)
,因为你画的都是在正部分的上方X轴,它就会被“提升”。
现在第二:
[xshift = 1cm, xscale = 1.5, rotate = 10] (0,0) -- (0,0.5)
我们再回顾一下:
- 现在,它
xshift = 1cm
开始发挥作用。它改变了一切 包括右边的原点。 - 工作
xscale
原理与以前相同,但由于您只使用了X= 0,在这种情况下它起不了多大作用。(它才不是使转变成为1.5cm
!) - 最后,旋转。记住,你绕着 旋转
(0, 0)
(现在它位于原始坐标(1cm, 0cm)
),但(0, 0)
绕着它自身旋转并没有多大作用,这就是为什么它仍然位于那里。