
Существует ли простой способ сместить кривую Безье целиком, например, на 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}
Производит: