% !TeX spellcheck = en_US
% !TeX root = tikz-ext-manual.tex
% Copyright 2022 by Qrrbrbirlbel
%
% This file may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU Free Documentation License.
%
\clearpage
\section{Mirror, Mirror on the Wall}
\label{library:mirror}
\begin{tikzlibrary}{ext.transformations.mirror}
This library adds more transformations to \tikzname.
\end{tikzlibrary}
As explained in section~\ref{pgflibrary:transformations}, there are two approaches to setting a mirror transformation.
As with the commands in \pgfname, we'll be using a lowercase |m| for the reflection matrix and an uppercase |M| for the built-in approach.
\begin{key}{/\tikzext/xmirror=\meta{value or coordinate} (default 0pt)}\keycompat{tikz}
Sets up a transformation that mirrors along a horizontal line that goes through point $(\text{\meta{value}}, 0)$ or \meta{coordinate}.
\begin{key}{/\tikzext/ymirror=\meta{value or coordinate} (default 0pt)}\keycompat{tikz}
Sets up a transformation that mirrors along a vertical line that goes through point $(0, \text{\meta{value}})$ or \meta{coordinate}.
\end{key}
\begin{key}{/\tikzext/mirror x=\meta{coordinate} (default {(0,0)})}\keycompat{tikz}
Similar to |xmirror|, this however uses the |xyz| coordinate system instead of the |canvas| system.
\begin{codeexample}[preamble=\usetikzlibrary{ext.transformations.mirror}]
\begin{tikzpicture}[x=.5cm, y=(45:1cm)]
\begin{key}{/\tikzext/mirror y=\meta{coordinate} (default {(0,0)})}\keycompat{tikz}
Similar to |ymirror|, this however uses the |xyz| coordinate system instead of the |canvas| system.
\end{key}
\begin{key}{/\tikzext/mirror=\meta{point A}|--|\meta{point B}}\keycompat{tikz}
Sets up a transformation that mirrors along a line that goes through \meta{point A} and \meta{point B}.
When only \meta{point A} is given that line goes through \meta{point A} and the origin.
\end{key}
\begin{key}{/\tikzext/xMirror=\meta{value or coordinate} (default 0pt)}\keycompat{tikz}
Sets up a transformation that mirrors along a horizontal line that goes through point $(\text{\meta{value}}, 0)$ or \meta{coordinate}.
\begin{key}{/\tikzext/yMirror=\meta{value or coordinate} (default 0pt)}\keycompat{tikz}
Sets up a transformation that mirrors along a vertical line that goes through point $(0, \text{\meta{value}})$ or \meta{coordinate}.
\end{key}
\begin{key}{/\tikzext/Mirror x=\meta{coordinate} (default {(0,0)})}\keycompat{tikz}
Similar to |xMirror|, this however uses the |xyz| coordinate system instead of the |canvas| system.
\begin{codeexample}[preamble=\usetikzlibrary{ext.transformations.mirror}]
\begin{tikzpicture}[x=.5cm, y=(45:1cm)]
\begin{key}{/\tikzext/Mirror y=\meta{coordinate} (default {(0,0)})}\keycompat{tikz}
Similar to |yMirror|, this however uses the |xyz| coordinate system instead of the |canvas| system.
\end{key}
\begin{key}{/\tikzext/Mirror=\meta{point A}\opt{|--|\meta{point B}}}\keycompat{tikz}
Sets up a transformation that mirrors along a line that goes through \meta{point A} and \meta{point B}.
When only \meta{point A} is given that line goes through \meta{point A} and the origin.
\end{key}