
¿Existe una manera fácil de desplazar una curva de Bézier en su conjunto, por ejemplo, 2 cm en la dirección x, 1 cm en la dirección y sin cambiar los puntos de control?
\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}
Las teclas xshift e yshift no parecen utilizarse para eso. Gracias
Editar:Como señaló Guilhermecambiola propiedad funciona bien:
\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}
Sin embargo, no funciona cuando defines las coordenadas para la curva de antemano:
\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}
La segunda curva entonces no se mueve de su posición original.
Respuesta1
Las coordenadas no se desplazan, son fijas (lo cual es bueno, normalmente eso es lo que queremos). Puedes hacer esto de dos maneras: transform canvas={shift={(2cm,1cm)}}
en lugar de simplemente shift
.
O puedes cambiar todas las coordenadas: c/.style={shift={(2cm,1cm)}}
entonces:
\draw[shift={(2cm,1cm)}] ([c]A1) .. controls ([c]A2) and ([c]A3) .. ([c]A4);
Ambos deberían funcionar y se debe preferir la segunda forma, alterar las transformaciones del sistema de coordenadas puede llevar a resultados inesperados (inesperados si no sabes lo que hace la herramienta...).
Respuesta2
Otra idea (que podría o no ser apropiada para tu caso, no lo sé) es definir la forma requerida como un archivo pic
. Dentro de pic
puede usar coordenadas con nombre para dibujar su forma y luego, cuando pic
se usa como parte de su dibujo, se puede mover, escalar o rotar fácilmente:
\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}
Produce: