
Existe uma maneira fácil de deslocar uma curva Bézier como um todo, por exemplo, 2 cm na direção x, 1 cm na direção y sem alterar os pontos de controle?
\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}
As teclas xshift e yshift não parecem ser utilizáveis para isso. Obrigado
Editar:Como Guilherme destacoumudançapropriedade funciona bem:
\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}
No entanto, não funciona quando você define previamente as coordenadas da curva:
\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}
A segunda curva então não se move da sua posição original.
Responder1
As coordenadas não são alteradas, são fixas (o que é bom, normalmente é isso que queremos). Você pode fazer isso de duas maneiras: transform canvas={shift={(2cm,1cm)}}
em vez de apenas shift
.
Ou você pode mudar todas as coordenadas: c/.style={shift={(2cm,1cm)}}
então:
\draw[shift={(2cm,1cm)}] ([c]A1) .. controls ([c]A2) and ([c]A3) .. ([c]A4);
Ambos devem funcionar e o segundo modo deve ser preferido, mexer nas transformações do sistema de coordenadas pode levar a resultados inesperados (inesperados se você não souber o que a ferramenta faz...).
Responder2
Outra ideia (que pode ou não ser adequada ao seu caso, não sei) é definir a forma necessária como pic
. Dentro do pic
você pode usar coordenadas nomeadas para desenhar sua forma e, então, quando pic
for usado como parte do seu desenho, ele poderá ser facilmente deslocado, dimensionado ou girado:
\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}
Produz: