如何正确恢复并使用已保存的爱好路径?

如何正确恢复并使用已保存的爱好路径?

优秀的 Hobby 库文档指出,可以保存和重复使用 Hobby 路径。示例包括使用不同属性进行移动和重新绘制的路径。

但是,我不知道如何让恢复的路径正常运行。它们似乎在绘制路径的起点或终点时迷失了方向,最终出现在错误的位置。

据我了解,红色、蓝色和灰色曲线应该完全相同,蓝色和灰色略微向原始红色的左右偏移。然而,蓝色和灰色的形状都与红色不同,我认为它们应该是相同的。

我究竟做错了什么?

\documentclass[tikz,12pt]{standalone}
\usetikzlibrary{hobby}
\begin{document}
\begin{tikzpicture}
  \path [draw=red] (0,0) coordinate (f) to[curve through={+(.125,-.5) +(-.5,-1) +(0,-1.5) +(.5,-.75) }, save Hobby path={ff1}] (f);
  \path [draw=blue,xshift=1mm] (f) [restore and use Hobby path={ff1}{}];
  \path [draw=gray,xshift=-1.5mm] (f) [restore and use Hobby path={ff1}{}];
\end{tikzpicture}
\end{document}

任性的爱好路径

答案1

(f)用相对替换绝对值(0,0)可得到所需的结果(这里也使用变体scope):

\documentclass[tikz,12pt]{standalone}
\usetikzlibrary{hobby}
\begin{document}
\begin{tikzpicture}
%  \path [draw=red] (0,0) coordinate (f) to[curve through={+(.125,-.5) +(-.5,-1) +(0,-1.5) +(.5,-.75) }, save Hobby path={ff1}] (f);
\path [draw=red] (0,0) coordinate (f) to[curve through={+(.125,-.5) +(-.5,-1) +(0,-1.5) +(.5,-.75) }, save Hobby path={ff1}] (f);
\begin{scope}[xshift=+1mm]
%  \path [draw=blue,xshift=1mm] (f) [restore and use Hobby path={ff1}{}];
 \path [draw=blue] (0,0) [restore and use Hobby path={ff1}{}];
 \end{scope} 
  \path [draw=gray,xshift=-1.5mm] (0,0) [restore and use Hobby path={ff1}{}];
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

仅用于语法的比较,这里是 Hobby 自己的 Metapost 中写的相同图表……

\RequirePackage{luatex85}
\documentclass[border=10bp]{standalone}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
  path ff;
  ff = ((0,0) .. (1/8,-1/2) .. (-1/2,-1) .. 
     (0,-3/2) .. (1/2,-3/4) .. (0,0) .. cycle) scaled 28;
  draw ff withcolor red;
  draw ff shifted 3 right withcolor blue;
  draw ff shifted 5 left  withcolor 1/2 white;
endfig;
\end{mplibcode}
\end{document}

在此处输入图片描述

相关内容