如何在 tikz 中绘制这个图形(螺旋)?

如何在 tikz 中绘制这个图形(螺旋)?

在此处输入图片描述

我想在 tikz 中绘制此图形。下面这个图形已经在 tikz 中了,但我想开发代码。

答案1

欢迎来到 TeX.SE!由于这是您的第一个问题,因此这里尝试回答一下。请考虑在将来发布您尝试过的方法。(编辑:弥补了空白并添加了两个缺失的注释,感谢 Werner 的提醒。)

\documentclass[tikz,border=3.14mm]{standalone}
\begin{document}
\usetikzlibrary{decorations.markings}
\tikzset{midmark/.style n args={2}{postaction={decorate,decoration={markings,
mark=at position 0.5 with {\node[font=\tiny] at (0,#2) {#1};}}}}}
\begin{tikzpicture}[declare function={R(\x)=0.3+\x/360;}]
\draw[line width=5mm,green] 
node[below right,black,xshift=-3mm,yshift=6mm]{AVA}
plot[variable=\x,domain=65:321] (\x:{R(\x)})
node[above left,black,xshift=2mm,yshift=-2mm]{FVA};
\draw[line width=5mm,orange] plot[variable=\x,domain=320:452,samples=31] (\x:{R(\x)});
\draw[line width=5mm,red] plot[variable=\x,domain=450:551,samples=61] (\x:{R(\x)})
node[black,left]{AVE};
\draw[line width=5mm,blue] plot[variable=\x,domain=550:830,samples=71] (\x:{R(\x)})
node[black,left,yshift=2.5mm,xshift=2mm]{FVE};
%
\draw[thin,<->,midmark={$25^\circ$}{-5pt}] plot[variable=\x,domain=65:90] (\x:{R(\x)+0.2});
\draw[thin,<->,midmark={$50^\circ$}{5pt}] plot[variable=\x,domain=270:320] (\x:{R(\x)+0.2});
\draw[white,thin,<->,midmark={$80^\circ$}{7pt}] plot[variable=\x,domain=550:630] (\x:{R(\x)+0.2});
\draw[white,thin,<->,midmark={$20^\circ$}{-5pt}] plot[variable=\x,domain=810:830] (\x:{R(\x)-0.2});
%
\draw (0,-pi) node[below] {PMI} -- (0,pi) node[above] {PMS};
%
\end{tikzpicture}  
\end{document}

在此处输入图片描述

答案2

编辑:解释用来确定螺旋性质的方法。

这条曲线是一条有两个中心的螺旋线。

为了确定这一点,我打印了你的图像(我的打印机然后,我们用尺子和圆规画出与左侧小绿曲线相交的线段的垂直平分线(因为没有尊重原始颜色)。

这让我明白了这条曲线是一个螺旋形2个中心为了找到第二个中心,我延长了绿色部分与其他两个中心的距离。我能够看到两个中心之间的距离是5 毫米

印刷螺旋

它是通过绘制圆心交替RL间隔 5 毫米的圆弧来构造的。

螺旋结构

根据我的测量,第一个圆的半径为 5 毫米,因此其他每个圆的半径都增加 5 毫米。

首先,我用一条正常厚度的线以这种方式构建它L,并且R是圆弧的中心: 在此处输入图片描述

\documentclass[tikz,border=5mm]{standalone}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}
    [every node/.style={font=\footnotesize,inner sep=0pt,outer sep=1pt},
    >={Straight Barb[inset=3pt,angle=90:3pt]}]
\fill[green!50!black](0,0)circle(1pt)node[left]{L};
\fill[green!50!black](0,5mm)circle(1pt)node[left]{R};

\draw[draw=green,line width=.2mm](0,1)arc(90:65:5mm);
\draw[draw=green,line width=.2mm](0,1)arc(90:270:10mm);
\draw[draw=green,line width=.2mm](0,-1)arc(270:320:15mm)coordinate(a);
\draw[draw=orange,line width=.2mm](a)arc(-40:90:15mm);
\draw[draw=red,line width=.2mm](0,2)arc(90:190:20mm)coordinate(b);
\draw[draw=blue,line width=.2mm](b)arc(-170:-90:20mm)coordinate(c);
\draw[draw=blue,line width=.2mm](c)arc(-90:90:25mm)coordinate(d);
\draw[draw=blue,line width=.2mm](d)arc(90:110:30mm);
\end{tikzpicture}
\end{document}

因此,要构建此螺旋线,必须构建给定中心圆的圆弧。为了避免重新计算这些中心,我将螺旋线结束的点命名为(a)(b)和。(c)(d)

为了绘制箭头,我必须绘制已知中心的圆弧,为此,我使用了@JonathanGratus 在他的回答中指出的技术: 当指定圆心时在 tikz 中绘制圆弧像这样:

\draw[<->] (0,.5)+(65:7mm) arc (65:90:7mm)

最后,我将文本单独放置。

螺旋最终

\documentclass[tikz,border=5mm]{standalone}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}
    [every node/.style={font=\footnotesize,inner sep=0pt,outer sep=1pt},
    >={Straight Barb[inset=3pt,angle=90:3pt]}]
%\fill[green!50!black](0,0)circle(1pt)node[left]{L};
%\fill[green!50!black](0,5mm)circle(1pt)node[left]{R};

\draw[draw=green,line width=6mm](0,1)arc(90:65:5mm);
\draw[draw=green,line width=6mm](0,1)arc(90:270:10mm);
\draw[draw=green,line width=6mm](0,-1)arc(270:320:15mm)coordinate(a);
\draw[draw=orange,line width=6mm](a)arc(-40:90:15mm);
\draw[draw=red,line width=6mm](0,2)arc(90:190:20mm)coordinate(b);
\draw[draw=blue,line width=6mm](b)arc(-170:-90:20mm)coordinate(c);
\draw[draw=blue,line width=6mm](c)arc(-90:90:25mm)coordinate(d);
\draw[draw=blue,line width=6mm](d)arc(90:110:30mm);

% arrows placement 
% from https://tex.stackexchange.com/a/453649/138900
\draw[<->] (0,.5)+(65:7mm) arc (65:90:7mm)node[shift={(9pt,6pt)}]{$25^\circ$};
\draw[<->](0,.5)+(-90:17mm)arc(-90:-40:17mm)node[midway,above]{$50^\circ$};
\draw[<->,white](0,0)+(190:22mm)arc(190:270:22mm)node[midway,above right,inner sep=0pt]{$80^\circ$};
\draw[<->,white](0,0)+(90:28mm)arc(90:110:28mm)node[midway,above,inner sep=1pt]{$20^\circ$};

% node placement 
\node[anchor=north west] at ([shift={(-.1,.5)}]65:2mm){AVA};
\node[above left]at([shift={(-5pt,5pt)}]a){FVA};
\node[anchor=east]at(190:23mm){AVE};
\draw[node font=\bf](0,-3)node[below]{PMI}--(0,4)node[above]{PMS};
\end{tikzpicture}
\end{document}

编辑:只是为了好玩,构建这个螺旋的动画。

其代码尚未优化。

螺旋动画

\documentclass[tikz,border=5mm]{standalone}
\usetikzlibrary{arrows.meta}
\begin{document}


%\begin{tikzpicture}
%\useasboundingbox(-2.5,-2.5)rectangle(3,3.5);
%\fill[green!50!black](0,0)circle(1pt)node[left]{L};
%\fill[green!50!black](0,5mm)circle(1pt)node[left]{R};
%\end{tikzpicture}
\tikzset{every node/.style={font=\footnotesize,inner sep=0pt,outer sep=1pt},>={Straight Barb[inset=3pt,angle=90:3pt]}}
\foreach \a in {-90,-85,...,65}{
\begin{tikzpicture}
\useasboundingbox(-2.5,-2.5)rectangle(3,3.5);
\fill[green!50!black](0,0)circle(1pt)node[left]{L};
\fill[green!50!black](0,5mm)circle(1pt)node[left]{R};
\draw(0,5mm)--([shift={(0,5mm)}]\a:8mm);
%\draw[draw=green,line width=6mm](0,5mm)+(65:5mm)arc(65:\a:5mm);
\draw(0,-3)--(0,3.5);
\end{tikzpicture}

}

\foreach \a in {70,75,...,90}{
\begin{tikzpicture}
\useasboundingbox(-2.5,-2.5)rectangle(3,3.5);
\fill[green!50!black](0,0)circle(1pt)node[left]{L};
\fill[green!50!black](0,5mm)circle(1pt)node[left]{R};
\draw(0,5mm)--([shift={(0,5mm)}]\a:8mm);
\draw[draw=green,line width=6mm](0,5mm)+(65:5mm)arc(65:\a:5mm);
\draw(0,-3)--(0,3.5);
\end{tikzpicture}
}
\foreach \a in {95,100,...,270}{
\begin{tikzpicture}
\useasboundingbox(-2.5,-2.5)rectangle(3,3.5);
\fill[green!50!black](0,0)circle(1pt)node[left]{L};
\fill[green!50!black](0,5mm)circle(1pt)node[left]{R};

\draw[draw=green,line width=6mm](0,5mm)+(65:5mm)arc(65:90:5mm);
%\draw[<->] (0,.5)+(65:7mm) arc (65:90:7mm)node[shift={(9pt,6pt)}]{$25^\circ$};
\draw(0,0)--(\a:13mm);
\draw[draw=green,line width=6mm](0,1)arc(90:\a:10mm);
\draw(0,-3)--(0,3.5);
\end{tikzpicture}
}
\foreach \a in {275,280,...,320}{
\begin{tikzpicture}
\useasboundingbox(-2.5,-2.5)rectangle(3,3.5);
\fill[green!50!black](0,0)circle(1pt)node[left]{L};
\fill[green!50!black](0,5mm)circle(1pt)node[left]{R};

\draw[draw=green,line width=6mm](0,5mm)+(65:5mm)arc(65:90:5mm);
%\draw[<->] (0,.5)+(65:7mm) arc (65:90:7mm)node[shift={(9pt,6pt)}]{$25^\circ$};
\draw[draw=green,line width=6mm](0,1)arc(90:270:10mm);
\draw(0,5mm)--([shift={(0,5mm)}]\a:18mm);
\draw[draw=green,line width=6mm](0,-1)arc(270:\a:15mm);
\draw(0,-3)--(0,3.5);
\end{tikzpicture}
}
\foreach \a in {-35,-30,...,90}{
\begin{tikzpicture}
\useasboundingbox(-2.5,-2.5)rectangle(3,3.5);
\fill[green!50!black](0,0)circle(1pt)node[left]{L};
\fill[green!50!black](0,5mm)circle(1pt)node[left]{R};

\draw[draw=green,line width=6mm](0,5mm)+(65:5mm)arc(65:90:5mm);
%\draw[<->] (0,.5)+(65:7mm) arc (65:90:7mm)node[shift={(9pt,6pt)}]{$25^\circ$};

\draw[draw=green,line width=6mm](0,1)arc(90:270:10mm);
\draw[draw=green,line width=6mm](0,-1)arc(270:320:15mm)coordinate(a);
%\draw[<->](0,.5)+(-90:17mm)arc(-90:-40:17mm)node[midway,above]{$50^\circ$};
\draw(0,.5)--([shift={(0,5mm)}]\a:18mm);
\draw[draw=orange,line width=6mm](a)arc(-40:\a:15mm);
\draw(0,-3)--(0,3.5);
\end{tikzpicture}
}
\foreach \a in {95,100,...,190}{
\begin{tikzpicture}
\useasboundingbox(-2.5,-2.5)rectangle(3,3.5);
\fill[green!50!black](0,0)circle(1pt)node[left]{L};
\fill[green!50!black](0,5mm)circle(1pt)node[left]{R};

\draw[draw=green,line width=6mm](0,5mm)+(65:5mm)arc(65:90:5mm);
%\draw[<->] (0,.5)+(65:7mm) arc (65:90:7mm)node[shift={(9pt,6pt)}]{$25^\circ$};
\draw[draw=green,line width=6mm](0,1)arc(90:270:10mm);
\draw[draw=green,line width=6mm](0,-1)arc(270:320:15mm)coordinate(a);
%\draw[<->](0,.5)+(-90:17mm)arc(-90:-40:17mm)node[midway,above]{$50^\circ$};
\draw[draw=orange,line width=6mm](a)arc(-40:90:15mm);
\draw[draw=red,line width=6mm](0,2)arc(90:\a:20mm)coordinate(b);
\draw(0,0)--(\a:23mm);
\draw(0,-3)--(0,3.5);
\end{tikzpicture}
}
\foreach \a in {-165,-160,...,-90}{
\begin{tikzpicture}
\useasboundingbox(-2.5,-2.5)rectangle(3,3.5);
\fill[green!50!black](0,0)circle(1pt)node[left]{L};
\fill[green!50!black](0,5mm)circle(1pt)node[left]{R};

\draw[draw=green,line width=6mm](0,5mm)+(65:5mm)arc(65:90:5mm);
%\draw[<->] (0,.5)+(65:7mm) arc (65:90:7mm)node[shift={(9pt,6pt)}]{$25^\circ$};
\draw[draw=green,line width=6mm](0,1)arc(90:270:10mm);
\draw[draw=green,line width=6mm](0,-1)arc(270:320:15mm)coordinate(a);
%\draw[<->](0,.5)+(-90:17mm)arc(-90:-40:17mm)node[midway,above]{$50^\circ$};
\draw[draw=orange,line width=6mm](a)arc(-40:90:15mm);
\draw[draw=red,line width=6mm](0,2)arc(90:190:20mm)coordinate(b);
\draw[draw=blue,line width=6mm](b)arc(-170:\a:20mm)coordinate(c);
\draw(0,0)--(\a:23mm);
\draw(0,-3)--(0,3.5);
\end{tikzpicture}
}
\foreach \a in {-85,-80,...,90}{
\begin{tikzpicture}
\useasboundingbox(-2.5,-2.5)rectangle(3,3.5);
\fill[green!50!black](0,0)circle(1pt)node[left]{L};
\fill[green!50!black](0,5mm)circle(1pt)node[left]{R};

\draw[draw=green,line width=6mm](0,5mm)+(65:5mm)arc(65:90:5mm);
%\draw[<->] (0,.5)+(65:7mm) arc (65:90:7mm)node[shift={(9pt,6pt)}]{$25^\circ$};
\draw[draw=green,line width=6mm](0,1)arc(90:270:10mm);
\draw[draw=green,line width=6mm](0,-1)arc(270:320:15mm)coordinate(a);
%\draw[<->](0,.5)+(-90:17mm)arc(-90:-40:17mm)node[midway,above]{$50^\circ$};
\draw[draw=orange,line width=6mm](a)arc(-40:90:15mm);
\draw[draw=red,line width=6mm](0,2)arc(90:190:20mm)coordinate(b);
\draw[draw=blue,line width=6mm](b)arc(-170:-90:20mm)coordinate(c);
%\draw[<->,white](0,0)+(190:22mm)arc(190:270:22mm)node[midway,above right,inner sep=0pt]{$80^\circ$};
\draw[draw=blue,line width=6mm](c)arc(-90:\a:25mm)coordinate(d);
\draw(0,.5)--([shift={(0,5mm)}]\a:28mm);
\draw(0,-3)--(0,3.5);
\end{tikzpicture}
}
\foreach \a in {95,100,...,110}{
\begin{tikzpicture}
\useasboundingbox(-2.5,-2.5)rectangle(3,3.5);
\fill[green!50!black](0,0)circle(1pt)node[left]{L};
\fill[green!50!black](0,5mm)circle(1pt)node[left]{R};

\draw[draw=green,line width=6mm](0,5mm)+(65:5mm)arc(65:90:5mm);
%\draw[<->] (0,.5)+(65:7mm) arc (65:90:7mm)node[shift={(9pt,6pt)}]{$25^\circ$};
\draw[draw=green,line width=6mm](0,1)arc(90:270:10mm);
\draw[draw=green,line width=6mm](0,-1)arc(270:320:15mm)coordinate(a);
%\draw[<->](0,.5)+(-90:17mm)arc(-90:-40:17mm)node[midway,above]{$50^\circ$};
\draw[draw=orange,line width=6mm](a)arc(-40:90:15mm);
\draw[draw=red,line width=6mm](0,2)arc(90:190:20mm);
\draw[draw=blue,line width=6mm](b)arc(-170:-90:20mm)coordinate(c);
%\draw[<->,white](0,0)+(190:22mm)arc(190:270:22mm)node[midway,above right,inner sep=0pt]{$80^\circ$};
\draw[draw=blue,line width=6mm](c)arc(-90:90:25mm)coordinate(d);
\draw[draw=blue,line width=6mm](d)arc(90:\a:30mm);
%\draw[<->,white](0,0)+(90:28mm)arc(90:110:28mm)node[midway,above,inner sep=1pt]{$20^\circ$};
\draw(0,0)--(\a:33mm);
\draw(0,-3)--(0,3.5);
\end{tikzpicture}
}
\foreach \a in {115,120,...,270}{
\begin{tikzpicture}
\useasboundingbox(-2.5,-2.5)rectangle(3,3.5);
\fill[green!50!black](0,0)circle(1pt)node[left]{L};
\fill[green!50!black](0,5mm)circle(1pt)node[left]{R};

\draw[draw=green,line width=6mm](0,5mm)+(65:5mm)arc(65:90:5mm);
%\draw[<->] (0,.5)+(65:7mm) arc (65:90:7mm)node[shift={(9pt,6pt)}]{$25^\circ$};
\draw[draw=green,line width=6mm](0,1)arc(90:270:10mm);
\draw[draw=green,line width=6mm](0,-1)arc(270:320:15mm)coordinate(a);
%\draw[<->](0,.5)+(-90:17mm)arc(-90:-40:17mm)node[midway,above]{$50^\circ$};
\draw[draw=orange,line width=6mm](a)arc(-40:90:15mm);
\draw[draw=red,line width=6mm](0,2)arc(90:190:20mm);
\draw[draw=blue,line width=6mm](b)arc(-170:-90:20mm)coordinate(c);
%\draw[<->,white](0,0)+(190:22mm)arc(190:270:22mm)node[midway,above right,inner sep=0pt]{$80^\circ$};
\draw[draw=blue,line width=6mm](c)arc(-90:90:25mm)coordinate(d);
\draw[draw=blue,line width=6mm](d)arc(90:110:30mm);
%\draw[<->,white](0,0)+(90:28mm)arc(90:110:28mm);%node[midway,above,inner sep=1pt]{$20^\circ$};
\draw(0,0)--(\a:33mm);
\draw(0,-3)--(0,3.5);
\end{tikzpicture}
}

\end{document}

相关内容