
Gibt es eine einfache Möglichkeit, eine Bézierkurve als Ganzes zu verschieben, z. B. 2 cm in x-Richtung, 1 cm in y-Richtung, ohne die Kontrollpunkte zu ändern?
\documentclass[11pt]{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\draw (0,0) .. controls (1,1) and (2,-1) .. (3,0);
\end{tikzpicture}
\end{document}
Die xshift- und yshift-Taste scheinen dafür nicht brauchbar zu sein. Danke
Bearbeiten:Wie Guilherme betonte,SchichtEigenschaft funktioniert gut:
\documentclass[11pt]{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\draw (0,0) .. controls (1,1) and (2,-1) .. (3,0);
\draw[shift={(2cm,1cm)}] (0,0) .. controls (1,1) and (2,-1) .. (3,0);
\end{tikzpicture}
\end{document}
Allerdings funktioniert es nicht, wenn man vorher die Koordinaten der Kurve festlegt:
\documentclass[11pt]{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\coordinate (A1) at (0,0);
\coordinate (A2) at (1,1);
\coordinate (A3) at (2,-1);
\coordinate (A4) at (3,0);
\draw (A1) .. controls (A2) and (A3) .. (A4);
\draw[shift={(2cm,1cm)}] (A1) .. controls (A2) and (A3) .. (A4);
\end{tikzpicture}
\end{document}
Die zweite Kurve bewegt sich dann nicht von ihrer Ausgangsposition.
Antwort1
Koordinaten werden nicht verschoben, sie sind fixiert (was gut ist, normalerweise ist das, was wir wollen). Sie können dies auf zwei Arten tun: transform canvas={shift={(2cm,1cm)}}
statt einfach shift
.
Oder Sie können alle Koordinaten verschieben: c/.style={shift={(2cm,1cm)}}
dann:
\draw[shift={(2cm,1cm)}] ([c]A1) .. controls ([c]A2) and ([c]A3) .. ([c]A4);
Beides sollte funktionieren, wobei die zweite Methode bevorzugt werden sollte. Das Herumspielen mit Koordinatensystemtransformationen kann zu unerwarteten Ergebnissen führen (unerwartet, wenn Sie nicht wissen, was das Tool macht ...).
Antwort2
Eine andere Idee (die für Ihren Fall geeignet sein kann oder nicht, ich weiß es nicht) besteht darin, die erforderliche Form als zu definieren pic
. Innerhalb von pic
können Sie benannte Koordinaten verwenden, um Ihre Form zu zeichnen, und wenn die dann pic
als Teil Ihrer Zeichnung verwendet wird, kann sie einfach verschoben, skaliert oder gedreht werden:
\documentclass[11pt]{standalone}
\usepackage{tikz}
%\usepackage{pgfplots}
\tikzset{
mybezier/.pic = {
\coordinate (A1) at (0,0);
\coordinate (A2) at (1,1);
\coordinate (A3) at (2,-1);
\coordinate (A4) at (3,0);
\draw (A1) .. controls (A2) and (A3) .. (A4);
}
}
\begin{document}
\begin{tikzpicture}
\path (0,0) pic {mybezier};
\path (2,1) pic {mybezier};
\path (0,-1) pic[red, rotate=-30, scale=1.5] {mybezier};
\end{tikzpicture}
\end{document}
Produziert: