summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-transformations.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-transformations.tex')
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-transformations.tex447
1 files changed, 218 insertions, 229 deletions
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-transformations.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-transformations.tex
index a02a9111430..fcd5ef673c6 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-transformations.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-transformations.tex
@@ -7,89 +7,79 @@
%
% See the file doc/generic/pgf/licenses/LICENSE for more details.
+
\section{Transformations}
-\pgfname\ has a powerful transformation mechanism that is similar to
-the transformation capabilities of \textsc{metafont}. The present
-section explains how you can access it in \tikzname.
+\pgfname\ has a powerful transformation mechanism that is similar to the
+transformation capabilities of \textsc{metafont}. The present section explains
+how you can access it in \tikzname.
\subsection{The Different Coordinate Systems}
It is a long process from a coordinate like, say, $(1,2)$ or
-$(1\mathrm{cm},5\mathrm{pt})$, to the position a point is finally
-placed on the display or paper. In order to find out where the point
-should go, it is constantly ``transformed,'' which means that it is
-mostly shifted around and possibly rotated, slanted, scaled, and
-otherwise mutilated.
-
-In detail, (at least) the following transformations are applied to a
-coordinate like $(1,2)$ before a point on the screen is chosen:
+$(1\mathrm{cm},5\mathrm{pt})$, to the position a point is finally placed on the
+display or paper. In order to find out where the point should go, it is
+constantly ``transformed'', which means that it is mostly shifted around and
+possibly rotated, slanted, scaled, and otherwise mutilated.
+
+In detail, (at least) the following transformations are applied to a coordinate
+like $(1,2)$ before a point on the screen is chosen:
+%
\begin{enumerate}
-\item
- \pgfname\ interprets a coordinate like $(1,2)$ in its
- $xy$-coordinate system as ``add the current $x$-vector once and the
- current $y$-vector twice to obtain the new point.''
-\item
- \pgfname\ applies its coordinate transformation matrix to the
- resulting coordinate. This yields the final position of the point
- inside the picture.
-\item
- The backend driver (like |dvips| or |pdftex|) adds transformation
- commands such that the coordinate is shifted to the correct position in
- \TeX's page coordinate system.
-\item
- \textsc{pdf} (or PostScript) apply the canvas transformation
- matrix to the point, which can once more change the position on the
- page.
-\item
- The viewer application or the printer applies the device
- transformation matrix to transform the coordinate to its final pixel
- coordinate on the screen or paper.
+ \item \pgfname\ interprets a coordinate like $(1,2)$ in its
+ $xy$-coordinate system as ``add the current $x$-vector once and the
+ current $y$-vector twice to obtain the new point''.
+ \item \pgfname\ applies its coordinate transformation matrix to the
+ resulting coordinate. This yields the final position of the point
+ inside the picture.
+ \item The backend driver (like |dvips| or |pdftex|) adds transformation
+ commands such that the coordinate is shifted to the correct position in
+ \TeX's page coordinate system.
+ \item \textsc{pdf} (or PostScript) apply the canvas transformation matrix
+ to the point, which can once more change the position on the page.
+ \item The viewer application or the printer applies the device
+ transformation matrix to transform the coordinate to its final pixel
+ coordinate on the screen or paper.
\end{enumerate}
-In reality, the process is even more involved, but the above should
-give the idea: A point is constantly transformed by changes of the
-coordinate system.
+In reality, the process is even more involved, but the above should give the
+idea: A point is constantly transformed by changes of the coordinate system.
-In \tikzname, you only have access to the first two coordinate systems:
-The $xy$-coordinate system and the coordinate transformation matrix
-(these will be explained later). \pgfname\ also allows you to change
-the canvas transformation matrix, but you have to use commands of
-the core layer directly to do so and you ``better know what you are
-doing'' when you do this. The moment you start modifying the
-canvas matrix, \pgfname\ immediately loses track of all
-coordinates and shapes, anchors, and bounding box computations will no
-longer work.
+In \tikzname, you only have access to the first two coordinate systems: The
+$xy$-coordinate system and the coordinate transformation matrix (these will be
+explained later). \pgfname\ also allows you to change the canvas transformation
+matrix, but you have to use commands of the core layer directly to do so and
+you ``better know what you are doing'' when you do this. The moment you start
+modifying the canvas matrix, \pgfname\ immediately loses track of all
+coordinates and shapes, anchors, and bounding box computations will no longer
+work.
\subsection{The XY- and XYZ-Coordinate Systems}
\label{section-xyz}
The first and easiest coordinate systems are \pgfname's $xy$- and
-$xyz$-coordinate systems. The idea is very simple: Whenever you
-specify a coordinate like |(2,3)| this means $2v_x + 3v_y$, where
-$v_x$ is the current \emph{$x$-vector} and $v_y$ is the current
-\emph{$y$-vector}. Similarly, the coordinate |(1,2,3)| means $v_x +
-2v_y + 3v_z$.
+$xyz$-coordinate systems. The idea is very simple: Whenever you specify a
+coordinate like |(2,3)| this means $2v_x + 3v_y$, where $v_x$ is the current
+\emph{$x$-vector} and $v_y$ is the current \emph{$y$-vector}. Similarly, the
+coordinate |(1,2,3)| means $v_x + 2v_y + 3v_z$.
-Unlike other packages, \pgfname\ does not insist that $v_x$ actually
-has a $y$-component of $0$, that is, that it is a horizontal
-vector. Instead, the $x$-vector can point anywhere you
-want. Naturally, \emph{normally} you will want the $x$-vector to point
-horizontally.
+Unlike other packages, \pgfname\ does not insist that $v_x$ actually has a
+$y$-component of $0$, that is, that it is a horizontal vector. Instead, the
+$x$-vector can point anywhere you want. Naturally, \emph{normally} you will
+want the $x$-vector to point horizontally.
-One undesirable effect of this flexibility is that it is not possible
-to provide mixed coordinates as in $(1,2\mathrm{pt})$. Life is hard.
+One undesirable effect of this flexibility is that it is not possible to
+provide mixed coordinates as in $(1,2\mathrm{pt})$. Life is hard.
-To change the $x$-, $y$-, and $z$-vectors, you can use the following
-options:
+To change the $x$-, $y$-, and $z$-vectors, you can use the following options:
\begin{key}{/tikz/x=\meta{value} (initially 1cm)}
- If \meta{value} is a dimension, the $x$-vector of
- \pgfname's $xyz$-coordinate system is set up to point
- \meta{value} to the right, that is, to $(\meta{value},0pt)$.
-
+ If \meta{value} is a dimension, the $x$-vector of \pgfname's
+ $xyz$-coordinate system is set up to point \meta{value} to the right, that
+ is, to $(\meta{value},0pt)$.
+ %
\begin{codeexample}[]
\begin{tikzpicture}
\draw (0,0) -- +(1,0);
@@ -101,15 +91,15 @@ options:
\tikz \draw[x=1.5cm] (0,0) grid (2,2);
\end{codeexample}
- The last example shows that the size of steppings in grids, just like
- all other dimensions, are not affected by the $x$-vector. After all,
- the $x$-vector is only used to determine the coordinate of the upper
- right corner of the grid.
-
- If \meta{value} is a coordinate, the $x$-vector of
- \pgfname's $xyz$-coordinate system to the specified coordinate. If
- \meta{value} contains a comma, it must be put in braces.
+ The last example shows that the size of steppings in grids, just like all
+ other dimensions, are not affected by the $x$-vector. After all, the
+ $x$-vector is only used to determine the coordinate of the upper right
+ corner of the grid.
+ If \meta{value} is a coordinate, the $x$-vector of \pgfname's
+ $xyz$-coordinate system to the specified coordinate. If \meta{value}
+ contains a comma, it must be put in braces.
+ %
\begin{codeexample}[]
\begin{tikzpicture}
\draw (0,0) -- (1,0);
@@ -117,9 +107,9 @@ options:
\end{tikzpicture}
\end{codeexample}
- You can use this, for example, to exchange the meaning of the $x$- and
- $y$-coordinate.
-
+ You can use this, for example, to exchange the meaning of the $x$- and
+ $y$-coordinate.
+ %
\begin{codeexample}[]
\begin{tikzpicture}[smooth]
\draw plot coordinates{(1,0) (2,0.5) (3,0) (3,1)};
@@ -127,17 +117,18 @@ options:
plot coordinates{(1,0) (2,0.5) (3,0) (3,1)};
\end{tikzpicture}
\end{codeexample}
+ %
\end{key}
\begin{key}{/tikz/y=\meta{value} (initially 1cm)}
- Works like the |x=| option, only if \meta{value} is a dimension, the
- resulting vector points to $(0,\meta{value})$.
+ Works like the |x=| option, only if \meta{value} is a dimension, the
+ resulting vector points to $(0,\meta{value})$.
\end{key}
\begin{key}{/tikz/z=\meta{value} (initially \normalfont$-3.85$mm)}
- Works like the |y=| option, but now a dimension is the point
- $(\meta{value},\meta{value})$.
-
+ Works like the |y=| option, but now a dimension is the point
+ $(\meta{value},\meta{value})$.
+ %
\begin{codeexample}[]
\begin{tikzpicture}[z=-1cm,->,thick]
\draw[color=red] (0,0,0) -- (1,0,0);
@@ -145,30 +136,28 @@ options:
\draw[color=orange] (0,0,0) -- (0,0,1);
\end{tikzpicture}
\end{codeexample}
+ %
\end{key}
-
\subsection{Coordinate Transformations}
\pgfname\ and \tikzname\ allow you to specify \emph{coordinate
- transformations}. Whenever you specify a coordinate as in |(1,0)| or
-|(1cm,1pt)| or |(30:2cm)|, this coordinate is first
-``reduced'' to a position of the form ``$x$ points to the right and
- $y$ points upwards.'' For example, |(1in,5pt)| is reduced to
-``$72\frac{72}{100}$ points to the right and 5 points upwards'' and
-|(90:100pt)| means ``0pt to the right and 100 points upwards.''
-
-The next step is to apply the current \emph{coordinate transformation
- matrix} to the coordinate. For example, the coordinate
-transformation matrix might currently be set such that it adds a
-certain constant to the $x$ value. Also, it might be set up such that
-it, say, exchanges the $x$ and $y$ value. In general, any
-``standard'' transformation like translation, rotation, slanting, or
-scaling or any combination thereof is possible. (Internally, \pgfname\
-keeps track of a coordinate transformation matrix very much like the
-concatenation matrix used by \textsc{pdf} or PostScript.)
-
+transformations}. Whenever you specify a coordinate as in |(1,0)| or
+|(1cm,1pt)| or |(30:2cm)|, this coordinate is first ``reduced'' to a position
+of the form ``$x$ points to the right and $y$ points upwards''. For example,
+|(1in,5pt)| is reduced to ``$72\frac{72}{100}$ points to the right and 5 points
+upwards'' and |(90:100pt)| means ``0pt to the right and 100 points upwards''.
+
+The next step is to apply the current \emph{coordinate transformation matrix}
+to the coordinate. For example, the coordinate transformation matrix might
+currently be set such that it adds a certain constant to the $x$ value. Also,
+it might be set up such that it, say, exchanges the $x$ and $y$ value. In
+general, any ``standard'' transformation like translation, rotation, slanting,
+or scaling or any combination thereof is possible. (Internally, \pgfname\ keeps
+track of a coordinate transformation matrix very much like the concatenation
+matrix used by \textsc{pdf} or PostScript.)
+%
\begin{codeexample}[]
\begin{tikzpicture}
\draw[help lines] (0,0) grid (3,2);
@@ -181,42 +170,41 @@ concatenation matrix used by \textsc{pdf} or PostScript.)
\end{tikzpicture}
\end{codeexample}
-The most important aspect of the coordinate transformation matrix is
-\emph{that it applies to coordinates only!} In particular, the
-coordinate transformation has no effect on things like the line width
-or the dash pattern or the shading angle. In certain cases, it is not
-immediately clear whether the coordinate transformation matrix
-\emph{should} apply to a certain dimension. For example, should the
-coordinate transformation matrix apply to grids? (It does.) And what
-about the size of arced corners? (It does not.) The general rule is
-``If there is no `coordinate' involved, even `indirectly,' the matrix
-is not applied.'' However, sometimes, you simply have to try or look
-it up in the documentation whether the matrix will be applied.
-
-Setting the matrix cannot be done directly. Rather, all you can do is
-to ``add'' another transformation to the current matrix. However, all
-transformations are local to the current \TeX-group. All
-transformations are added using graphic options, which are described
-below.
-
-Transformations apply immediately when they are encountered ``in the
-middle of a path'' and they apply only to the coordinates on the path
-following the transformation option.
-
+The most important aspect of the coordinate transformation matrix is \emph{that
+it applies to coordinates only!} In particular, the coordinate transformation
+has no effect on things like the line width or the dash pattern or the shading
+angle. In certain cases, it is not immediately clear whether the coordinate
+transformation matrix \emph{should} apply to a certain dimension. For example,
+should the coordinate transformation matrix apply to grids? (It does.) And what
+about the size of arced corners? (It does not.) The general rule is: ``If there
+is no `coordinate' involved, even `indirectly', the matrix is not applied.''.
+However, sometimes, you simply have to try or look it up in the documentation
+whether the matrix will be applied.
+
+Setting the matrix cannot be done directly. Rather, all you can do is to
+``add'' another transformation to the current matrix. However, all
+transformations are local to the current \TeX-group. All transformations are
+added using graphic options, which are described below.
+
+Transformations apply immediately when they are encountered ``in the middle of
+a path'' and they apply only to the coordinates on the path following the
+transformation option.
+%
\begin{codeexample}[]
\tikz \draw (0,0) rectangle (1,0.5) [xshift=2cm] (0,0) rectangle (1,0.5);
\end{codeexample}
A final word of warning: You should refrain from using ``aggressive''
-transformations like a scaling of a factor of 10000. The reason is
-that all transformations are done using \TeX, which has a fairly low
-accuracy. Furthermore, in certain situations it is necessary that
-\tikzname\ \emph{inverts} the current transformation matrix and this will
-fail if the transformation matrix is badly conditioned or even
-singular (if you do not know what singular matrices are, you are blessed).
+transformations like a scaling of a factor of 10\,000. The reason is that all
+transformations are done using \TeX, which has a fairly low accuracy.
+Furthermore, in certain situations it is necessary that \tikzname\
+\emph{inverts} the current transformation matrix and this will fail if the
+transformation matrix is badly conditioned or even singular (if you do not know
+what singular matrices are, you are blessed).
\begin{key}{/tikz/shift={\ttfamily\char`\{}\meta{coordinate}{\ttfamily\char`\}}}
- Adds the \meta{coordinate} to all coordinates.
+ Adds the \meta{coordinate} to all coordinates.
+ %
\begin{codeexample}[]
\begin{tikzpicture}
\draw[help lines] (0,0) grid (3,2);
@@ -225,19 +213,19 @@ singular (if you do not know what singular matrices are, you are blessed).
\draw[shift={(30:1cm)},red] (0,0) -- (1,1) -- (1,0);
\end{tikzpicture}
\end{codeexample}
+ %
\end{key}
\begin{key}{/tikz/shift only}
- This option does not take any parameter. Its effect is to cancel all
- current transformations except for the shifting. This means that the
- origin will remain where it is, but any rotation around the origin
- or scaling relative to the origin or skewing will no longer have an
- effect.
-
- This option is useful in situations where a complicated
- transformation is used to ``get to a position,'' but you then wish
- to draw something ``normal'' at this position.
-
+ This option does not take any parameter. Its effect is to cancel all
+ current transformations except for the shifting. This means that the origin
+ will remain where it is, but any rotation around the origin or scaling
+ relative to the origin or skewing will no longer have an effect.
+
+ This option is useful in situations where a complicated transformation is
+ used to ``get to a position'', but you then wish to draw something
+ ``normal'' at this position.
+ %
\begin{codeexample}[]
\begin{tikzpicture}
\draw[help lines] (0,0) grid (3,2);
@@ -246,10 +234,12 @@ singular (if you do not know what singular matrices are, you are blessed).
\draw[rotate=30,xshift=2cm,shift only,red] (0,0) -- (1,1) -- (1,0);
\end{tikzpicture}
\end{codeexample}
+ %
\end{key}
\begin{key}{/tikz/xshift=\meta{dimension}}
- Adds \meta{dimension} to the $x$ value of all coordinates.
+ Adds \meta{dimension} to the $x$ value of all coordinates.
+ %
\begin{codeexample}[]
\begin{tikzpicture}
\draw[help lines] (0,0) grid (3,2);
@@ -258,16 +248,17 @@ singular (if you do not know what singular matrices are, you are blessed).
\draw[xshift=-10pt,red] (0,0) -- (1,1) -- (1,0);
\end{tikzpicture}
\end{codeexample}
+ %
\end{key}
\begin{key}{/tikz/yshift=\meta{dimension}}
- Adds \meta{dimension} to the $y$ value of all coordinates.
+ Adds \meta{dimension} to the $y$ value of all coordinates.
\end{key}
\begin{key}{/tikz/scale=\meta{factor}}
- Multiplies all coordinates by the given \meta{factor}. The
- \meta{factor} should not be excessively large in absolute terms or
- very close to zero.
+ Multiplies all coordinates by the given \meta{factor}. The \meta{factor}
+ should not be excessively large in absolute terms or very close to zero.
+ %
\begin{codeexample}[]
\begin{tikzpicture}
\draw[help lines] (0,0) grid (3,2);
@@ -276,11 +267,13 @@ singular (if you do not know what singular matrices are, you are blessed).
\draw[scale=-1,red] (0,0) -- (1,1) -- (1,0);
\end{tikzpicture}
\end{codeexample}
+ %
\end{key}
\begin{key}{/tikz/scale around={\ttfamily\char`\{}\meta{factor}|:|\meta{coordinate}{\ttfamily\char`\}}}
- Scales the coordinate system by \meta{factor}, with the ``origin
- of scaling'' centered on \meta{coordinate} rather than the origin.
+ Scales the coordinate system by \meta{factor}, with the ``origin of
+ scaling'' centered on \meta{coordinate} rather than the origin.
+ %
\begin{codeexample}[]
\begin{tikzpicture}
\draw[help lines] (0,0) grid (3,2);
@@ -289,11 +282,12 @@ singular (if you do not know what singular matrices are, you are blessed).
\draw[scale around={2:(1,1)},red] (0,0) -- (1,1) -- (1,0);
\end{tikzpicture}
\end{codeexample}
+ %
\end{key}
\begin{key}{/tikz/xscale=\meta{factor}}
- Multiplies only the $x$-value of all coordinates by the given
- \meta{factor}.
+ Multiplies only the $x$-value of all coordinates by the given
+ \meta{factor}.
\begin{codeexample}[]
\begin{tikzpicture}
\draw[help lines] (0,0) grid (3,2);
@@ -302,14 +296,16 @@ singular (if you do not know what singular matrices are, you are blessed).
\draw[xscale=-1,red] (0,0) -- (1,1) -- (1,0);
\end{tikzpicture}
\end{codeexample}
+ %
\end{key}
\begin{key}{/tikz/yscale=\meta{factor}}
- Multiplies only the $y$-value of all coordinates by \meta{factor}.
+ Multiplies only the $y$-value of all coordinates by \meta{factor}.
\end{key}
\begin{key}{/tikz/xslant=\meta{factor}}
- Slants the coordinate horizontally by the given \meta{factor}:
+ Slants the coordinate horizontally by the given \meta{factor}:
+ %
\begin{codeexample}[]
\begin{tikzpicture}
\draw[help lines] (0,0) grid (3,2);
@@ -318,11 +314,12 @@ singular (if you do not know what singular matrices are, you are blessed).
\draw[xslant=-1,red] (0,0) -- (1,1) -- (1,0);
\end{tikzpicture}
\end{codeexample}
+ %
\end{key}
-
\begin{key}{/tikz/yslant=\meta{factor}}
- Slants the coordinate vertically by the given \meta{factor}:
+ Slants the coordinate vertically by the given \meta{factor}:
+ %
\begin{codeexample}[]
\begin{tikzpicture}
\draw[help lines] (0,0) grid (3,2);
@@ -331,11 +328,12 @@ singular (if you do not know what singular matrices are, you are blessed).
\draw[yslant=-1,red] (0,0) -- (1,1) -- (1,0);
\end{tikzpicture}
\end{codeexample}
+ %
\end{key}
-
\begin{key}{/tikz/rotate=\meta{degree}}
- Rotates the coordinate system by \meta{degree}:
+ Rotates the coordinate system by \meta{degree}:
+ %
\begin{codeexample}[]
\begin{tikzpicture}
\draw[help lines] (0,0) grid (3,2);
@@ -344,11 +342,13 @@ singular (if you do not know what singular matrices are, you are blessed).
\draw[rotate=-20,red] (0,0) -- (1,1) -- (1,0);
\end{tikzpicture}
\end{codeexample}
+ %
\end{key}
\begin{key}{/tikz/rotate around={\ttfamily\char`\{}\meta{degree}|:|\meta{coordinate}{\ttfamily\char`\}}}
- Rotates the coordinate system by \meta{degree} around the point
- \meta{coordinate}.
+ Rotates the coordinate system by \meta{degree} around the point
+ \meta{coordinate}.
+ %
\begin{codeexample}[]
\begin{tikzpicture}
\draw[help lines] (0,0) grid (3,2);
@@ -357,18 +357,16 @@ singular (if you do not know what singular matrices are, you are blessed).
\draw[rotate around={-20:(1,1)},red] (0,0) -- (1,1) -- (1,0);
\end{tikzpicture}
\end{codeexample}
+ %
\end{key}
-
\begin{key}{/tikz/rotate around x=\meta{angle}}
-
- This key sets the $x$, $y$ and $z$ vectors of the \pgfname\
- $xyz$-coordinate system so that they
- are rotated by \meta{angle} around the axis corresponding
- to the $x$-vector.
- The rotation is applied so that when looking towards the origin
- along this axis, positive angles result in an anticlockwise rotation.
-
+ This key sets the $x$, $y$ and $z$ vectors of the \pgfname\
+ $xyz$-coordinate system so that they are rotated by \meta{angle} around the
+ axis corresponding to the $x$-vector. The rotation is applied so that when
+ looking towards the origin along this axis, positive angles result in an
+ anticlockwise rotation.
+ %
\begin{codeexample}[]
\begin{tikzpicture}[>=stealth]
\draw [->] (0,0,0) -- (2,0,0) node [at end, right] {$x$};
@@ -380,19 +378,16 @@ singular (if you do not know what singular matrices are, you are blessed).
\draw [blue, rotate around x=90] (0,0,0) -- (1,1,0) -- (1,0,0);
\end{tikzpicture}
\end{codeexample}
-
+ %
\end{key}
-
\begin{key}{/tikz/rotate around y=\meta{angle}}
-
- This key sets the $x$, $y$ and $z$ vectors of the \pgfname\
- $xyz$-coordinate system so that they
- are rotated by \meta{angle} around the axis corresponding
- to the $y$-vector.
- The rotation is applied so that when looking towards the origin
- along this axis, positive angles result in an anticlockwise rotation.
-
+ This key sets the $x$, $y$ and $z$ vectors of the \pgfname\
+ $xyz$-coordinate system so that they are rotated by \meta{angle} around
+ the axis corresponding to the $y$-vector. The rotation is applied so that
+ when looking towards the origin along this axis, positive angles result in
+ an anticlockwise rotation.
+ %
\begin{codeexample}[]
\begin{tikzpicture}[>=stealth]
\draw [->] (0,0,0) -- (2,0,0) node [at end, right] {$x$};
@@ -404,19 +399,16 @@ singular (if you do not know what singular matrices are, you are blessed).
\draw [blue, rotate around y=-90] (0,0,0) -- (1,1,0) -- (1,0,0);
\end{tikzpicture}
\end{codeexample}
-
+ %
\end{key}
-
\begin{key}{/tikz/rotate around z=\meta{angle}}
-
- This key sets the $x$, $y$ and $z$ vectors of the \pgfname\
- $xyz$-coordinate system so that they
- are rotated by \meta{angle} around the axis corresponding
- to the $z$-vector.
- The rotation is applied so that when looking towards the origin
- along this axis, positive angles result in an anticlockwise rotation.
-
+ This key sets the $x$, $y$ and $z$ vectors of the \pgfname\
+ $xyz$-coordinate system so that they are rotated by \meta{angle} around the
+ axis corresponding to the $z$-vector. The rotation is applied so that when
+ looking towards the origin along this axis, positive angles result in an
+ anticlockwise rotation.
+ %
\begin{codeexample}[]
\begin{tikzpicture}[>=stealth]
\draw [->] (0,0,0) -- (2,0,0) node [at end, right] {$x$};
@@ -428,19 +420,18 @@ singular (if you do not know what singular matrices are, you are blessed).
\draw [blue, rotate around z=90] (0,0) -- (1,1) -- (1,0);
\end{tikzpicture}
\end{codeexample}
-
+ %
\end{key}
-
\begin{key}{/tikz/cm={\ttfamily\char`\{}\meta{$a$}|,|\meta{$b$}|,|\meta{$c$}|,|\meta{$d$}|,|\meta{coordinate}{\ttfamily\char`\}}}
- applies the following transformation to all coordinates: Let $(x,y)$
- be the coordinate to be transformed and let \meta{coordinate}
- specify the point $(t_x,t_y)$. Then the new coordinate is given by
- $\left(\begin{smallmatrix} a & c \\ b & d\end{smallmatrix}\right)
- \left(\begin{smallmatrix} x \\ y \end{smallmatrix}\right) +
- \left(\begin{smallmatrix} t_x \\ t_y
- \end{smallmatrix}\right)$. Usually, you do not use this option
- directly.
+ applies the following transformation to all coordinates: Let $(x,y)$ be the
+ coordinate to be transformed and let \meta{coordinate} specify the point
+ $(t_x,t_y)$. Then the new coordinate is given by
+ $\left(\begin{smallmatrix} a & c \\ b & d\end{smallmatrix}\right)
+ \left(\begin{smallmatrix} x \\ y \end{smallmatrix}\right) +
+ \left(\begin{smallmatrix} t_x \\ t_y \end{smallmatrix}\right)$.
+ Usually, you do not use this option directly.
+ %
\begin{codeexample}[]
\begin{tikzpicture}
\draw[help lines] (0,0) grid (3,2);
@@ -449,56 +440,53 @@ singular (if you do not know what singular matrices are, you are blessed).
\draw[cm={0,1,1,0,(1cm,1cm)},red] (0,0) -- (1,1) -- (1,0);
\end{tikzpicture}
\end{codeexample}
+ %
\end{key}
\begin{key}{/tikz/reset cm}
- Completely resets the coordinate transformation matrix to the
- identity matrix. This will destroy not only the transformations
- applied in the current scope, but also all transformations inherited
- from surrounding scopes. Do not use this option, unless you really,
- really know what you are doing.
+ Completely resets the coordinate transformation matrix to the identity
+ matrix. This will destroy not only the transformations applied in the
+ current scope, but also all transformations inherited from surrounding
+ scopes. Do not use this option, unless you really, really know what you are
+ doing.
\end{key}
-
-
\subsection{Canvas Transformations}
A \emph{canvas transformation}, see
-Section~\ref{section-design-transformations} for details, is best
-thought of as a transformation in which the drawing canvas is
-stretched or rotated. Imaging writing something on a balloon (the
-canvas) and then blowing air into the balloon: Not only does the text
-become larger, the thin lines also become larger. In particular, if
-you scale the canvas by a factor of two, all lines are twice as
-thick.
-
-Canvas transformations should be used with great care. In most
-circumstances you do \emph{not} want line widths to change in a
-picture as this creates visual inconsistency.
-
-Just as important, when
-you use canvas transformations \emph{\pgfname\ loses track of
- positions of nodes and of picture sizes} since it does not take the
-effect of canvas transformations into account when it computes
-coordinates of nodes (do not, however, rely on this; it may change in
-the future).
-
-Finally, note that a canvas transformation always applies to a path as
-a whole, it is not possible (as for coordinate transformations) to use
-different transformations in different parts of a path.
-
-In short, you should not use canvas transformations unless you really
-know what you are doing.
+Section~\ref{section-design-transformations} for details, is best thought of as
+a transformation in which the drawing canvas is stretched or rotated. Imaging
+writing something on a balloon (the canvas) and then blowing air into the
+balloon: Not only does the text become larger, the thin lines also become
+larger. In particular, if you scale the canvas by a factor of two, all lines
+are twice as thick.
+
+Canvas transformations should be used with great care. In most circumstances
+you do \emph{not} want line widths to change in a picture as this creates
+visual inconsistency.
+
+Just as important, when you use canvas transformations \emph{\pgfname\ loses
+track of positions of nodes and of picture sizes} since it does not take the
+effect of canvas transformations into account when it computes coordinates of
+nodes (do not, however, rely on this; it may change in the future).
+
+Finally, note that a canvas transformation always applies to a path as a whole,
+it is not possible (as for coordinate transformations) to use different
+transformations in different parts of a path.
+
+In short, you should not use canvas transformations unless you really know what
+you are doing.
\begin{key}{/tikz/transform canvas=\meta{options}}
- The \meta{options} should contain coordinate transformations options
- like |scale| or |xshift|. Multiple options can be given, their
- effects accumulate in the usual manner. The effect of these
- \meta{options} (immediately) changes the current canvas
- transformation matrix. The coordinate transformation matrix is not
- changed. Tracking of the picture size is (locally) switched off and
- the node coordinate will no longer be correct.
+ The \meta{options} should contain coordinate transformations options like
+ |scale| or |xshift|. Multiple options can be given, their effects
+ accumulate in the usual manner. The effect of these \meta{options}
+ (immediately) changes the current canvas transformation matrix. The
+ coordinate transformation matrix is not changed. Tracking of the picture
+ size is (locally) switched off and the node coordinate will no longer be
+ correct.
+ %
\begin{codeexample}[]
\begin{tikzpicture}
\draw[help lines] (0,0) grid (3,2);
@@ -507,4 +495,5 @@ know what you are doing.
\draw[transform canvas={rotate=180},red] (0,0) -- (1,1) -- (1,0);
\end{tikzpicture}
\end{codeexample}
+ %
\end{key}