Saltar al contenido

La relación entre el movimiento circular y el movimiento armónico simple en LaTeX

Solución:

Parece tener estudiantes muy viejos, que saben cómo se veían estos tocadiscos.

documentclass[tikz,border=3mm]standalone
usepackagetikz-3dplot
usetikzlibraryshadings
begindocument
tdplotsetmaincoords7030
foreach Angle in 180,185,...,360
begintikzpicture[tdplot_main_coords,line cap=round,line join=round,
    pics/cyl/.style=code=
        draw[left color=orange,right color=orange!20] (tdplotmainphi:0.2) arc[start angle=tdplotmainphi,
            end angle=tdplotmainphi-180,radius=0.2] 
            -- ($(tdplotmainphi-180:0.2)+(0,0,1)$)
            arc[start angle=tdplotmainphi-180,
            end angle=tdplotmainphi,radius=0.2] -- cycle;
        draw[fill=orange] (0,0,1) circle[radius=0.2];  
    ,pics/projected cyl/.style=code=
    draw[gray,fill=gray!20] (-0.2,0) rectangle (0.2,1);
    ]
 beginscope[canvas is xz plane at y=5.5]
  fill[gray] (-6,0) rectangle (6,-2);
  fill[gray!10] (-6,0) rectangle (6,2);
  path (4*cos(Angle),0) pic[transform shape]projected cyl;
 endscope
 beginscope[canvas is xy plane at z=0]
  shade[upper left=black,upper right=gray!30,
    lower left=gray!50,lower right=black,even odd rule] circle[radius=5]
    circle[radius=2];
    draw foreach r in 2.1,2.2,...,4.9 circle[radius=r];
    fill[blue!50!gray] (0,0) circle[radius=2];
 endscope
 path (Angle:4) piccyl;
endtikzpicture
enddocument

ingrese la descripción de la imagen aquí

PD: Al principio no entendí lo que se quería decir con “detalles”, pero después de protagonizar el tiempo suficiente en la captura de pantalla, yo también pude ver un pato (aunque todavía no estoy seguro de si realmente está allí).

documentclass[tikz,border=3mm]standalone
usepackagetikz-3dplot
usepackagetikzducks
usetikzlibraryarrows.meta,bending,shadings
begindocument
tdplotsetmaincoords7030
foreach Angle in 5,15,...,355
begintikzpicture[tdplot_main_coords,line cap=round,line join=round,
    pics/cyl/.style=code=
        draw[left color=orange,right color=orange!80,middle color=orange!10] 
        (tdplotmainphi:0.2) arc[start angle=tdplotmainphi,
            end angle=tdplotmainphi-180,radius=0.2] 
            -- ($(tdplotmainphi-180:0.2)+(0,0,1)$)
            arc[start angle=tdplotmainphi-180,
            end angle=tdplotmainphi,radius=0.2] -- cycle;
        draw[fill=orange] (0,0,1) circle[radius=0.2];  
    ,pics/projected cyl/.style=code=
    draw[gray,fill=gray!20] (-0.2,0) rectangle (0.2,1);
    ]
 beginscope[canvas is xz plane at y=5.5]
  fill[gray] (-6,0) rectangle (6,-2);
  fill[gray!10] (-6,0) rectangle (6,2);
  draw[thick,-Stealth] (-6,3) -- (6,3);
  draw[transform shape] (-4,2.8) -- ++ (0,0.4) node[above]$x=-A$
   (0,2.8) -- ++ (0,0.4) node[above]$x=0$
   (4,2.8) -- ++ (0,0.4) node[above]$x=A$;
  path (4*cos(Angle),0) pic[transform shape]projected cyl;
 endscope
 beginscope[canvas is xy plane at z=0]
  shade[upper left=black,upper right=gray!30,
    lower left=gray!50,lower right=black,even odd rule] circle[radius=5]
    circle[radius=2];
  draw foreach r in 2.1,2.2,...,4.9 circle[radius=r];
  fill[blue!50!gray] (0,0) circle[radius=2];
  path[nodes=transform shape,anchor=base,font=largesffamily,text=white] 
   foreach Char [count=Z,
    evaluate=Z as myangle using tdplotmainphi+Angle+Z*8+(Z==1?-4:0)] 
    in M,o,z,a,r,t
    (myangle:1.5) node[rotate=myangle+90]Char;
  duck[rotate=Angle,xshift=-1cm,yshift=-1cm]  
  pgflowlevelsynccm
  draw[very thick,blue,-Stealth[bend]] 
    (180:5.5) arc[start angle=180,end angle=240,radius=5.5];
 endscope
 path (Angle:4) piccyl;
endtikzpicture
enddocument

ingrese la descripción de la imagen aquí

PD: De alguna manera, no es del todo trivial de usar decorations.text junto con proyecciones en un plano.

Si solo necesita el GIF, ¿se requiere necesariamente LaTeX? Si considera otra alternativa y mi respuesta no se considera spam, hay un ejemplo de ConTeXt (compílelo aquí cuando una instalación no sea factible en su caso). Desafortunadamente, no hay 3D sofisticado:

starttext
%#1: start; #2: end; #3: step; #4: content
dostepwiserecurse033030%
startMPpage
labeloffset := 5bp;
numeric u;  u := 1cm;
numeric alpha; alpha := recurselevel;
pair peg, lilshadow; 
path stick;
stick := fullsquare xscaled 0.2u yscaled 2.2u shifted (1.5u*right);
peg := u*dir alpha;
lilshadow := (1.5u,ypart peg);
fill fullsquare scaled 2.2u withcolor .75[blue,white];
fill stick withcolor 0.75;
fill fullcircle scaled 2u;
fill fullcircle scaled 1/2u withcolor darkblue;
for i = 1/2 step 1/4 until 2:
    draw fullcircle scaled (i*u) withcolor 0.25; 
endfor
fill fullcircle scaled 1/8u withcolor (1,4/5,0);
%Comment the next line if you don't want a dashed line connecting the peg and its shadow
draw peg -- lilshadow dashed evenly withcolor (1,1,0);
drawdot lilshadow withpen pencircle scaled 4 withcolor 0.4;
drawdot peg withpen pencircle scaled 4 withcolor (1,1/2,0);
drawarrow (urcorner stick -- lrcorner stick) shifted (3bp*right);
label.rt("$tfxx x=-A$", urcorner stick);
label.rt("$tfxx x=+A$", lrcorner stick);
label.rt("$tfxx x=0$", 1/2[urcorner stick, lrcorner stick]);
setbounds currentpicture to (fullsquare xscaled 4u yscaled 2.5u shifted (0.75u*right));
stopMPpage%

stoptext

Elegí colores simples, pero el ajuste adicional depende de su gusto. Usando lo siguiente en la línea de comando (mi archivo es 104.pdf en el ejemplo):

convert -density 200 104.pdf 104-%02d.png
convert -delay 15 -dispose 2 104-*.png 104.gif

Finalmente obtengo este GIF:

ingrese la descripción de la imagen aquí

EDITAR: Como se señaló anteriormente, al cambiar el paso y el punto final, tenemos un GIF que se mueve más rápido o más lento. Si usamos

dostepwiserecurse034515{%

en su lugar, y con la misma configuración para convert, obtenemos esto:

ingrese la descripción de la imagen aquí

Una solución de PSTricks solo para fines divertidos o de comparación.

documentclass[pstricks,border=12pt]standalone
usepackagepst-node
begindocument
foreach i in0,10,...,350%
beginpspicture(-5,-5)(6.5,5)
    pscircle(0,0)4
    psline(5,-5)(5,5)
    pnodes(4;i)P(!5 4 ispace sin mul)Q(5,-4)B(5,0)O(5,4)T
    pssetlinecolor=gray,labelsep=12pt
    psline(0,0)(P)
    qdisk(B)2pt
    qdisk(O)2pt
    qdisk(T)2pt  
    uput[0](B)$y=-A$
    uput[0](O)$y=0$
    uput[0](T)$y=A$
    %
    pcline[linestyle=dashed](P)(Q)
    pssetlinecolor=red
    qdisk(P)5pt
    qdisk(Q)5pt
    %
    pnode[!0 ispace cos 1.5 mul](Q)Qy
    psLine[linecolor=blue,linewidth=4pt,arrowinset=0]->(Q)(Qy)
endpspicture
enddocument

ingrese la descripción de la imagen aquí

Si sostienes algún titubeo y disposición de progresar nuestro tutorial te sugerimos escribir una nota y con mucho placer lo ojearemos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *