Dibujar una onda sinusoidal en Tikz.

Dibujar una onda sinusoidal en Tikz.

¿Cuál es la manera más fácil debosquejo¿Una onda sinusoidal en PGF/Tikz? He probado esto:

\begin{tikzpicture}
  \draw[loosely dotted] (0,0) grid (4,2);
  \draw[x=0.5cm,y=1cm, ultra thick, red]
    (0,1) cos (1,0) sin (2,-1) cos (3,0) sin (4,1) cos (5,0) sin (6,-1);
\end{tikzpicture}

¿Cómo consigo que la rejilla cubra toda la ola? ¿Hay una mejor manera dedibujando(sin trazar) funciones/ondas?

Respuesta1

Como dije en mi comentario, puedes ajustar la cuadrícula eligiendo las coordenadas en la línea que gridcontiene:

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
  \draw[loosely dotted] (0,-1) grid (3,1);
  \draw[x=0.5cm,y=1cm, ultra thick, red]
    (0,1) cos (1,0) sin (2,-1) cos (3,0) sin (4,1) cos (5,0) sin (6,-1);
\end{tikzpicture}
\end{document}

Su segunda \drawlínea cambia la escala delXeje a 0.5cmen lugar de 1cmcomo es el valor predeterminado. Entonces (3,1)en la primera línea está el mismo punto que (6,1)en la segunda línea.

salida de código de muestra

Si solo desea interpolar puntos en una curva sin problemas, puede usar el plotcomando tikz de esta manera:

\draw[x=0.5cm,y=1cm, ultra thick, red]
    plot[smooth] coordinates {(0,1) (1,0) (2,-1) (3,0) (4,1) (5,0) (6,-1)};

Hay una tensiontecla que ajusta la curvatura del suavizado pero, francamente, no pude conseguir nada que me pareciera mejor que el predeterminado.

salida de código de muestra

Otra opción sería utilizar curvas de Bézier. Sin embargo, al especificar una curva de Bézier entre dos puntos, dosadicionalSe necesitan puntos. Estos dos describen el vector de velocidad que sale y entra en cada punto.

\draw[x=0.5cm,y=1cm, ultra thick, red]  (0,1) 
  .. controls ([xshift=\dx]0,1)  and ([xshift=-\dx]2,-1)  .. (2,-1) 
  .. controls ([xshift=\dx]2,-1) and ([xshift=-\dx]4,1)   .. (4,1) 
  .. controls ([xshift=\dx]4,1)  and ([xshift=-\dx]6,-1)  .. (6,-1) ;

salida de código de muestra

Notarás que aproveché la simetría para eliminar las coordenadas a lo largo del eje $x$.

Respuesta2

ingrese la descripción de la imagen aquí

El tremblingmódulo Asymptoteofrece un objeto de clase tremble para configurar, para aplicar una transformación temblorosa en una curva arbitraria. sketch.asy:

import graph; // for cos
import trembling;
import math; // for the grid

size(8cm);

real xmin=0, xmax=1.5pi;
real ymin=-1, ymax=1;

tremble tr=tremble(angle=20,frequency=0.6,random=50,fuzz=1);
path sinesketch=tr.deform(graph(cos,xmin,xmax)); 

int rows=2, cols=3;
add(
  shift(xmin,ymin)*scale((xmax-xmin)/cols,(ymax-ymin)/rows)
  *grid(cols,rows, red+dotted+1.2pt)
);
draw(sinesketch,darkblue+1.2pt);

Corre asy -f pdf sketch.asypara conseguir uno independiente sketch.pdf.

información relacionada