
¿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 grid
contiene:
\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 \draw
línea cambia la escala delXeje a 0.5cm
en lugar de 1cm
como es el valor predeterminado. Entonces (3,1)
en la primera línea está el mismo punto que (6,1)
en la segunda línea.
Si solo desea interpolar puntos en una curva sin problemas, puede usar el plot
comando 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 tension
tecla que ajusta la curvatura del suavizado pero, francamente, no pude conseguir nada que me pareciera mejor que el predeterminado.
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) ;
Notarás que aproveché la simetría para eliminar las coordenadas a lo largo del eje $x$.
Respuesta2
El trembling
módulo Asymptote
ofrece 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.asy
para conseguir uno independiente sketch.pdf
.