Dibujar dos engranajes engranados con límites que se asemejan a funciones sinusoidales de la misma amplitud

Dibujar dos engranajes engranados con límites que se asemejan a funciones sinusoidales de la misma amplitud

Estoy buscando un código simple para TikZdibujar dos engranajes engranados de modo que los dientes de cada engranaje estén hechos de una función sinusoidal envuelta alrededor de un círculo. El engranaje más grande será de color amarillo y tendrá 50 dientes, el engranaje más pequeño será de color rojo y tendrá 10 dientes. Los dientes de ambos engranajes deben tener la misma amplitud, que es una pequeña fracción (tal vez un octavo) del radio del engranaje más pequeño. El engranaje más pequeño debe ubicarse encima del engranaje más grande, con un hueco del engranaje más pequeño alineado con un diente del engranaje más grande.

No tengo código para esto. El código más cercano que encontré para lo que quiero está en el siguiente sitio web. Creando engranajes en TikZ Aunque no sirve de nada.

No tengo ningún código para envolver 10 períodos de una función sinusoidal alrededor de un círculo.

Respuesta1

Esto define una picpara el engranaje. Toma los parametros

  • el número de engranajes n,
  • el radio del círculo interior r1,
  • el radio del engranaje r2,
  • la amplitud a.

Las otras cosas como el color de dibujo, el color de relleno y las transformaciones como rotaciones se pueden pasar a las opciones del archivo pic. También agregué la proporción \Ratiode dientes.

\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}[pics/sinus gear/.style={code={
   \tikzset{gear/.cd,#1}
   \def\pv##1{\pgfkeysvalueof{/tikz/gear/##1}}
   \pgfmathtruncatemacro{\mymod}{360/\pv{n}}
   \draw[pic actions] 
    plot[variable=\t,domain=0:360,samples=12*\pv{n}+1,smooth cycle] 
    (\t:{\pv{r2}+\pv{a}*sin(\pv{n}*Mod(\t,\mymod))})
     (0,0) circle[radius=\pv{r1}];
    }},
    gear/.cd,r1/.initial=0.8cm,r2/.initial=1cm,n/.initial=12,a/.initial=0.1cm]
   \begin{scope}[local bounding box=gears]
    \def\Ratio{5}
    \path (0,0) pic[fill=orange!20,draw=orange,even odd rule]
        {sinus gear={n=10*\Ratio,r1=\Ratio*0.3cm,r2=\Ratio*0.5cm}} 
        (135:{(1+\Ratio)*0.5cm+\pgflinewidth}) 
        pic[fill=red!20,even odd rule,draw=red,rotate=90/\Ratio]{sinus
        gear={n=10,r1=0.3cm,r2=0.5cm}};
   \end{scope}  
\end{tikzpicture}
\end{document}

ingrese la descripción de la imagen aquí

Esta es una versión recortada con diferentes colores y radios internos (y una flecha). La razón por la que uno puede querer recortarlo es que los engranajes coinciden. Si desea que un engranaje suba o baje, gire el engranaje en múltiplos enteros de 90/n, donde nestá el número de engranajes.

\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}[pics/sinus gear/.style={code={
   \tikzset{gear/.cd,#1}
   \def\pv##1{\pgfkeysvalueof{/tikz/gear/##1}}
   \pgfmathtruncatemacro{\mymod}{360/\pv{n}}
   \clip plot[variable=\t,domain=0:360,samples=12*\pv{n}+1,smooth cycle] 
    (\t:{\pv{r2}+\pv{a}*sin(\pv{n}*Mod(\t,\mymod))})
     (0,0) circle[radius=\pv{r1}];
   \draw[pic actions] 
    plot[variable=\t,domain=0:360,samples=12*\pv{n}+1,smooth cycle] 
    (\t:{\pv{r2}+\pv{a}*sin(\pv{n}*Mod(\t,\mymod))})
     (0,0) circle[radius=\pv{r1}];
    }},
    gear/.cd,r1/.initial=0.8cm,r2/.initial=1cm,n/.initial=12,a/.initial=0.1cm]
   \begin{scope}[local bounding box=gears]
    \def\Ratio{5}
    \path (0,0) pic[fill=yellow,draw=orange,ultra thick,even odd rule,rotate=90/50]
        {sinus gear={n=10*\Ratio,r1=\Ratio*0.3cm,r2=\Ratio*0.5cm}} 
        (90:{(1+\Ratio)*0.5cm}) 
        pic[fill=blue,even odd rule,draw=purple,ultra thick,
            rotate={90*(\Ratio+1)+\Ratio*90/50+18}]{sinus gear={n=10,r1=0.3cm,r2=0.5cm}};
    \draw[-latex,] (90:{(1+\Ratio)*0.5cm+\pgflinewidth}) 
    ++ (0,-0.8*0.3cm) -- ++(0,1.6*0.3cm);
   \end{scope}  
\end{tikzpicture}
\end{document}

ingrese la descripción de la imagen aquí

Una versión animada.

\documentclass[tikz,border=3mm]{standalone}
\tikzset{pics/sinus gear/.style={code={
   \tikzset{gear/.cd,#1}
   \def\pv##1{\pgfkeysvalueof{/tikz/gear/##1}}
   \pgfmathtruncatemacro{\mymod}{360/\pv{n}}
   \draw[pic actions] 
    plot[variable=\t,domain=0:360,samples=12*\pv{n}+1,smooth cycle] 
    (\t:{\pv{r2}+\pv{a}*sin(\pv{n}*Mod(\t,\mymod))})
     (0,0) circle[radius=\pv{r1}];
    }},
    gear/.cd,r1/.initial=0.8cm,r2/.initial=1cm,n/.initial=12,a/.initial=0.1cm}
\begin{document}
\foreach \X in {1,...,36}
{\begin{tikzpicture}
    \path[use as bounding box] (-3.1,-2.6) rectangle (2.6,3.1);
    \def\Ratio{5}
    \path (0,0) pic[fill=orange!20,draw=orange,even odd rule,rotate=\X/\Ratio]
        {sinus gear={n=10*\Ratio,r1=\Ratio*0.3cm,r2=\Ratio*0.5cm}} 
        (135:{(1+\Ratio)*0.5cm+\pgflinewidth}) 
        pic[fill=red!20,even odd rule,draw=red,rotate=90/\Ratio-\X]{sinus
        gear={n=10,r1=0.3cm,r2=0.5cm}};  
\end{tikzpicture}}
\end{document}

ingrese la descripción de la imagen aquí

\documentclass[tikz,border=3mm]{standalone}
\tikzset{pics/sinus gear/.style={code={
   \tikzset{gear/.cd,#1}
   \def\pv##1{\pgfkeysvalueof{/tikz/gear/##1}}
   \pgfmathtruncatemacro{\mymod}{360/\pv{n}}
   \draw[pic actions] 
    plot[variable=\t,domain=0:360,samples=12*\pv{n}+1,smooth cycle] 
    (\t:{\pv{r2}+\pv{a}*sin(\pv{n}*Mod(\t,\mymod))})
     (0,0) circle[radius=\pv{r1}];
    }},
    gear/.cd,r1/.initial=0.8cm,r2/.initial=1cm,n/.initial=12,a/.initial=0.1cm}
\newsavebox\BigGear
\newsavebox\SmallGear
\def\Ratio{5}
\sbox\BigGear{\tikz{\pic[fill=orange!20,draw=orange,even odd rule]
        {sinus gear={n=10*\Ratio,r1=\Ratio*0.3cm,r2=\Ratio*0.5cm}};}}
\sbox\SmallGear{\tikz{\pic[fill=red!20,even odd rule,draw=red]{sinus
        gear={n=10,r1=0.3cm,r2=0.5cm}};}}
\begin{document}
\foreach \X in {1,...,90}
{\begin{tikzpicture}
    \path[use as bounding box] (-3.4,-3.4) rectangle (3.4,3.4);
    \path (0,0) node{\usebox\BigGear}
        (4*\X:{(1+\Ratio)*0.5cm+\pgflinewidth}) 
        node[rotate={4*(\Ratio+1)*\X}]{\usebox\SmallGear};
\end{tikzpicture}}
\end{document}

ingrese la descripción de la imagen aquí

información relacionada