Сдвиг кривой Безье в целом в тикз

Сдвиг кривой Безье в целом в тикз

Существует ли простой способ сместить кривую Безье целиком, например, на 2 см по оси x и на 1 см по оси y, не меняя контрольные точки?

\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}

Клавиши xshift и yshift, похоже, для этого не годятся. Спасибо

Редактировать:Как отметил Гильерме,сдвигсвойство работает хорошо:

\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}

Однако это не сработает, если заранее определить координаты кривой:

\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}

Вторая кривая при этом не смещается из своего первоначального положения.

решение1

Координаты не смещаются, они фиксируются (что хорошо, обычно это то, что нам нужно). Это можно сделать двумя способами: transform canvas={shift={(2cm,1cm)}}вместо просто shift.

Или вы можете сместить все координаты: c/.style={shift={(2cm,1cm)}}тогда:

\draw[shift={(2cm,1cm)}] ([c]A1) .. controls ([c]A2) and ([c]A3) .. ([c]A4);

Оба варианта должны работать, и второй способ предпочтительнее, так как вмешательство в преобразования системы координат может привести к неожиданному результату (неожиданному, если вы не знаете, что делает инструмент...).

решение2

Другая идея (которая может или не может быть уместной в вашем случае, я не знаю) — определить требуемую форму как pic. Внутри picвы можете использовать именованные координаты для рисования вашей формы, а затем, когда , picиспользуется как часть вашего рисунка, ее можно легко сместить, масштабировать или повернуть:

\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}

Производит:

Результат

Связанный контент