使用非圆形内轮绘制螺旋形图案

使用非圆形内轮绘制螺旋形图案

螺旋形图案由沿环移动的“圆形”轮子中的一点绘制。

是否可以编辑 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}

在此处输入图片描述

我保存它主要是为了自己的记录。

相关内容