帮我用 Hobby 绘制以下情节。
我尝试绘制它。我的代码是
\begin{tikzpicture}[use Hobby shortcut]
\draw (-.3 ,1).. (0, 0) .. ( 1.2 , 0 ) .. ( 0 , 0 ) .. (-.3 ,-1);
\draw (.45, 0) .. ( .9 , 0 ) .. ( .6 , 0 ) .. ( .7 , -0.01);
\draw (-.15, 1.2).. (-.01, .2) ..(.01, .22).. (.6, .1) .. ( 1.3 , 0 ) .. ( 0 , -.1 ) .. (-.3 ,-1.2);
\node[inner sep=1pt,circle,fill=black] at ( .7 , -0.01) {};
\end{tikzpicture}
请更正我的代码以获得所需的图。我还想在图旁边写上 HL。
答案1
该图可以按照以下示例进行写出。
箭头作为装饰标记。请参阅回答Alain Matthes 和第 30.5.1 节箭头标记TikZ & PGF 手册。
定义样式是为了使
\draw
命令更加紧凑:- 样式
/my marks
通过选项收集箭头标记设置mark
。 arrow mark
并reversed arrow mark
设置箭头尖或反方向的箭头尖。mark
选项设置存储在 中/my marks
。- Style
do marks
在路径上安装带有箭头标记的装饰。它使用/my marks
,因此必须指定后(reversed) arrow mark
。
- 样式
标签“HL”位于图纸正下方,与右侧齐平。
顺便说一下,垂直坐标值被翻转,因此是单位设置为负值(
y=-1bp
)。(我从 gimp 中的图像位置获取了坐标,其中垂直位置从顶部到底部。)
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{
decorations,
decorations.markings,
hobby,
}
\begin{document}
\begin{tikzpicture}[
x=1bp,
y=-1bp,
use Hobby shortcut,
every circle/.style={radius=2},
thick,
my marks/.style={},
arrow mark/.style={
/my marks/.append style={
mark=at position #1 with {\arrow[ultra thick]{stealth}},
},
},
reversed arrow mark/.style={
/my marks/.append style={
mark=at position #1 with {\arrowreversed[ultra thick]{stealth}},
},
},
do marks/.style={
decorate,
postaction={
decoration={
markings,
/my marks,
},
decorate,
},
},
]
\fill (60,57) circle;
\draw[
arrow mark=.14,
do marks,
]
(34,56)..(53,44)..(64,45)..(73,57)..(60,68)..(49,61)..(54,53)
;
\draw[
arrow mark=1,
do marks,
shorten >=1pt,
]
(134,83)..(117,75)..(86,91)..(51,103)..(1,58)..(53,12)..(87,18)..
(113,25)..(148,0)
;
\fill (118,50) coordinate (cross) circle;
\draw[
arrow mark=.06,
reversed arrow mark=.24,
reversed arrow mark=.78,
arrow mark=.92,
do marks,
]
(152,86)..(cross)..(59,26)..(21,56)..(55,84)..(cross)..(152,11)
;
\node[
below left,
inner sep=0pt,
outer sep=0pt,
font=\sffamily,
] at (current bounding box.south east) {HL};
\end{tikzpicture}
\end{document}