tikz-使用相对坐标和控制命令

tikz-使用相对坐标和控制命令

为了将 svg 命令转换为 tikz,我尝试了以下两种情况,它们应该输出相同的曲线。根据 svg 规范,C 表示绝对坐标,c 表示相对坐标。

下面两个 svg 命令应该表示相同的形状:

M145,399 C219,75 371,92 460,323
M145,399 c74,-324 226,-307 315,-76

我尝试使用下面的 tikz 代码来生成相同的路径,但看起来我的理解是错误的!

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[x=0.1,y=0.1]
    %M145,399 C219,75 371,92 460,323 
    \draw [yscale=-1] (145,399) .. controls (219,75) and (371,92) .. (460,323);
    %M145,399 c74,-324 226,-307 315,-76
    \draw [yscale=-1,red] (145,399) .. controls +(74,-324) and +(226,-307) .. +(315,-76); 
    \end{tikzpicture}
\end{document}

在此处输入图片描述

答案1

这可能不是很明显,但它在第 13.4.1 节中有记录指定相对坐标TikZ 手册(适用于版本 3.1.8b)。我引用一下:

有一种特殊情况,相对坐标的解释不同。如果使用相对坐标作为贝塞尔曲线的控制点,则适用以下规则:首先,相对第一个控制点是相对于曲线的起点取的。其次,相对于曲线的末端取相对的第二个控制点。第三,曲线的相对终点是相对于曲线的起点而言的。

重点是我。这意味着你的第二个相对控制点必须是(371-460, 92-323) = (-89,-231)

在此处输入图片描述

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[x=0.1,y=0.1]
    \draw [yscale=-1, very thick] (145,399) .. controls (219,75) and (371,92) .. (460,323);
    \draw [yscale=-1,red, dashed] (145,399) .. controls +(74,-324) and +(-89,-231) .. +(315,-76); 
    \end{tikzpicture}
\end{document}

相关内容