螺旋形图案由沿环移动的“圆形”轮子中的一点绘制。
是否可以编辑 Spirograph 代码以回答 这个问题使用非圆形内轮(例如椭圆轮)代替圆形内轮)。下图显示了商业 Spirograph 玩具中使用的一些非圆形内轮。
左内轮产生这些图案
以下是我所指的基本 Spirograph 代码从这个问题。
\documentclass{beamer}
\beamertemplatenavigationsymbolsempty
\usepackage{tikz}
\begin{document}
\tikzset{pics/spiro/.style={code={
\tikzset{spiro/.cd,#1}
\def\pv##1{\pgfkeysvalueof{/tikz/spiro/##1}}
\draw[trig format=rad,pic actions]
plot[variable=\t,domain=0:2*pi*\pv{nRotations}, samples=90*\pv{nRotations}+1, smooth cycle]
(
{(\pv{R}+\pv{r})*cos(\t)+\pv{p}*cos((\pv{R}+\pv{r})*\t/\pv{r})},
{(\pv{R}+\pv{r})*sin(\t)+\pv{p}*sin((\pv{R}+\pv{r})*\t/\pv{r})}
);
}},
spiro/.cd,R/.initial=6,r/.initial=-1.5,p/.initial=1,nRotations/.initial=1}
\begin{frame}[t]
\frametitle{}
\begin{center}
\begin{tikzpicture}[line width=.4mm]
\pic[draw,blue,fill=blue!40,scale=.7]{spiro={R=6,r=-1.5,p=1.52}};
\end{tikzpicture}
\end{center}
\end{frame}
\end{document}
产生了这个简单的图形
答案1
以下是获得此类结果的建议。
\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{decorations.pathmorphing}
\begin{document}
\begin{tikzpicture}
\draw[decoration={coil,aspect=0.25,segment length=pi*1cm/10.75},decorate]
(0,0) arc[start angle=-60,end angle=60,radius=3cm]
arc[start angle=120,end angle=240,radius=3cm];
\draw[decoration={coil,aspect=0.25,segment length=pi*0.75cm/10.75},decorate]
(7,1) arc[start angle=-15,end angle=75,radius=3cm]
arc[start angle=105,end angle=195,radius=3cm]
arc[start angle=225,end angle=315,radius=3cm];
\end{tikzpicture}
\end{document}
我完全理解这并不完美。但是,要创造更好的东西,需要明确的处方。在您之前关于这个问题的问题中,有一个明确的处方可以产生一个平滑的图形。在这里我看到了一些角落,只有有一些处方,才能以明确的方式将其平滑。
在这方面的一个建议是
\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}[pics/narcs/.style={code={
\tikzset{spiro/.cd,#1}
\def\pv##1{\pgfkeysvalueof{/tikz/spiro/##1}}
\draw plot[variable=\t,trig format=rad,domain=0:{2*pi*0.99},smooth
cycle,samples=15*\pv{S}]
({\pv{R}*cos(\t/\pv{S}-pi/(\pv{S}*\pv{S})
+(\pv{S}-1)*2*pi*int(\pv{S}*\t/(2*pi))/(\pv{S}*\pv{S}))
-\pv{R}*cos(pi/4)*cos(2*pi*int(\pv{S}*\t/(2*pi))/\pv{S})},
{\pv{R}*sin(\t/\pv{S}-pi/(\pv{S}*\pv{S})
+(\pv{S}-1)*2*pi*int(\pv{S}*\t/(2*pi))/(\pv{S}*\pv{S}))
-\pv{R}*cos(pi/4)*sin(2*pi*int(\pv{S}*\t/(2*pi))/\pv{S})});}},
spiro/.cd,R/.initial=3,S/.initial=2]
\path pic{narcs} (5,0) pic{narcs={S=3}}
(10,0) pic{narcs={S=4}};
\end{tikzpicture}
\end{document}
我保存它主要是为了自己的记录。