绘制带状图

绘制带状图

给定一个像下图右侧的图形,我想绘制一个像左侧一样的带状图(即图形的“加粗”版本)。

我已经使用贝塞尔曲线绘制了图形,但我不认为使用贝塞尔曲线是绘制带状图的最佳方法。我该怎么做?

下面是我绘制的图表:

\begin{tikzpicture}
\useasboundingbox (-2,-2) rectangle (2,2.5);
\begin{scope}[very thick,decoration={
markings,
mark=at position 0.3 with {\arrow{>}}}
] 
\draw[ultra thick,postaction={decorate}] (0,0) .. controls +(60:3) and +(120:3) .. (0,0);
\draw[ultra thick,postaction={decorate}] (0,0) .. controls +(-60:3) and +(-120:3) .. (0,0);
\end{scope}
\begin{scope}[very thick,decoration={
markings,
mark=at position 0.5 with {\arrow{>}}}
] 
\draw[ultra thick,postaction={decorate}] (0,0) -- (-1,0) .. controls +(180:1) and +(180:2) .. (0,2.5)
                                                    .. controls +(0:2) and +(0:1) .. (1,0) -- (0,0);
\end{scope}
\fill[fill=black] (0,0) circle (3pt);
\end{tikzpicture}

答案1

我不知道画这个图是否费时间。对我来说,尝试理解这背后的抽象问题可能更费时间。如果有一个明确的、一般性的问题,请让我现在回答,否则你可能需要看看

\documentclass[tikz,border=3.14mm]{standalone}
\usetikzlibrary{decorations.markings}
\begin{document}
\begin{tikzpicture}[insert arrow/.style={decoration={
markings,
mark=at position 0.3 with {\arrow{>}}}}]
\useasboundingbox (-2,-2) rectangle (2,2.5);
\draw[fill=gray!20] (0,1) + (-40:2) arc(-40:220:2) to[out=-50,in=45] (200:1)
arc(135:405:1.3) to[out=135,in=-140] cycle;
\begin{scope}[very thick,insert arrow=0.3] 
\draw[ultra thick,postaction={decorate}] (0,0) .. controls +(60:3) and +(120:3) .. (0,0);
\draw[ultra thick,postaction={decorate}] (0,0) .. controls +(-60:3) and +(-120:3) .. (0,0);
\end{scope}
\begin{scope}[very thick,insert arrow=0.5] 
\draw[ultra thick,postaction={decorate}] (0,0) -- (-1,0) .. controls +(180:1) and +(180:2) .. (0,2.5)
                                                    .. controls +(0:2) and +(0:1) .. (1,0) -- (0,0);
\end{scope}
\fill[fill=black] (0,0) circle (3pt);
\draw[fill=white] (0,1.2)+(-30:1.1) arc(-30:210:1.1) to[out=-60,in=-60,looseness=2] ++(0.1,0)
arc(210:-30:0.985) to[out=-120,in=-120,looseness=2] cycle;
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容