Sinuswelle in Tikz skizzieren

Sinuswelle in Tikz skizzieren

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 griddarin 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 \drawZeile ändert den Maßstab derXAchse zu 0.5cmstatt 1cmals ist die Vorgabe. (3,1)Auf der ersten Linie liegt also derselbe Punkt wie (6,1)auf der zweiten Linie.

Beispielcodeausgabe

Wenn Sie lediglich Punkte auf einer Kurve reibungslos interpolieren möchten, können Sie den plotBefehl 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 tensionTaste, 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.

Beispielcodeausgabe

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) ;

Beispielcodeausgabe

Sie werden feststellen, dass ich die Symmetrie ausgenutzt habe, um die Koordinaten entlang der x-Achse zu eliminieren.

Antwort2

Bildbeschreibung hier eingeben

Das tremblingModul Asymptotebietet 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.

verwandte Informationen