我想要通过 x = 2.5 线(AB)镜像以下部分,xscale 将通过 x = 0 线镜像它。
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\def\parts{(1,1) -- (2.5,3) -- (1,4)}
\begin{tikzpicture}
\draw [help lines, dashed] (0,0) grid(5,4);
\draw[] \parts [xscale=-1] \parts;
\draw[red] (2.5,1) node[below]{A} -- (2.5,4) node[above]{B};
\end{tikzpicture}
\end{document}
答案1
这引入了一个键mirror
,无论你传递给这个键什么都会被镜像。在你的图中,这相当于说
\tikzset{mirror={\draw (1,1) -- (2.5,3) -- (1,4);}}
有样式mirrored
和unmirrored
,可用于改变变换定律,引入偏移或名称前缀等。
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[mirror/.code={\tikzset{mirrored stuff/.code={#1}}
\begin{scope}[unmirrored]
\tikzset{mirrored stuff}
\end{scope}
\begin{scope}[mirrored]
\tikzset{mirrored stuff}
\end{scope}},mirrored/.style={xscale=-1},unmirrored/.style={}]
\draw [help lines, dashed] (0,0) grid(5,4);
\tikzset{mirrored/.append style={xshift=-5cm},
mirror={\draw (1,1) -- (2.5,3) -- (1,4);}}
\draw[red] (2.5,1) node[below]{A} -- (2.5,4) node[above]{B};
\end{tikzpicture}
\end{document}
请注意,还有更多可用的选项,例如这个这是我在完成示例后发现的。
答案2
xshift 帮助解决了这个问题!
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\def\parts{(1,1) -- (2.5,3) -- (1,4)}
\begin{tikzpicture}
\draw [help lines, dashed] (0,0) grid(5,4);
\draw[] \parts[x={(-1,0)},y={(0,1)},xshift=2*2.5cm] \parts;
\draw[red] (2.5,1) node[below]{A} -- (2.5,4) node[above]{B};
\end{tikzpicture}
\end{document}
答案3
这个想法是 x 轴移动到原点,然后使用[xscale=-1]
镜像,再 x 轴移动回来。注意:选项的顺序很重要!
该代码由@beetlej 修正。
\documentclass[tikz,border=5mm]{standalone}
\begin{document}
\begin{tikzpicture}
% object to be mirrored
\def\xmirror{2.5}
\def\myobject{(1,1) -- (2.5,3) -- (1,4)}
\draw[violet,opacity=.3] (0,0) grid (5,5);
\draw[red] (\xmirror,1) node[below]{A} -- (\xmirror,4) node[above]{B};
\draw \myobject;
\draw[shift={(\xmirror,0)},xscale=-1,shift={(-\xmirror,0)}] \myobject;
\end{tikzpicture}
\end{document}