
Wie kann ich am einfachstenskizziereneine Sinuswelle in PGF/Tikz? Ich habe Folgendes probiert:
\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}
Wie bekomme ich das Gitter so hin, dass es die ganze Welle abdeckt? Gibt es eine bessere Möglichkeit,Skizzierung(keine grafisch dargestellten) Funktionen/Wellen?
Antwort1
Wie ich in meinem Kommentar sagte, können Sie das Raster anpassen, indem Sie die Koordinaten auf der grid
darin enthaltenen Linie auswählen:
\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}
Ihre zweite \draw
Zeile ändert den Maßstab derXAchse zu 0.5cm
statt 1cm
als ist die Vorgabe. (3,1)
Auf der ersten Linie liegt also derselbe Punkt wie (6,1)
auf der zweiten Linie.
Wenn Sie lediglich Punkte auf einer Kurve reibungslos interpolieren möchten, können Sie den plot
Befehl von Tikz wie folgt verwenden:
\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)};
Es gibt eine tension
Taste, mit der man die Krümmung der Glättung anpassen kann, aber ehrlich gesagt ist mir nichts gelungen, das für mich besser aussah als die Standardeinstellung.
Eine andere Möglichkeit wäre die Verwendung von Bézierkurven. Bei der Angabe einer Bézierkurve zwischen zwei Punkten, zweizusätzlichPunkte werden benötigt. Diese beiden beschreiben den Geschwindigkeitsvektor, der aus jedem Punkt heraus und in ihn hinein geht.
\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) ;
Sie werden feststellen, dass ich die Symmetrie ausgenutzt habe, um die Koordinaten entlang der x-Achse zu eliminieren.
Antwort2
Das trembling
Modul Asymptote
bietet ein Objekt der Klasse tremble
zum Einrichten, um eine zitternde Transformation auf eine beliebige Kurve anzuwenden 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);
Führen Sie es aus asy -f pdf sketch.asy
, um ein eigenständiges zu erhalten sketch.pdf
.