在 Tikz 中繪製正弦波

在 Tikz 中繪製正弦波

最簡單的方法是什麼草圖PGF/Tikz 中的正弦波?我已經嘗試過這個:

\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}

如何讓網格覆蓋所有波浪?有沒有更好的方法素描(不是繪圖)函數/波?

答案1

正如我在評論中所說,您可以透過選擇其中的行上的座標來調整網格grid

\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}

你的第二\draw行改變了Xaxis to0.5cm而不是1cmas 是預設值。所以(3,1)第一行和(6,1)第二行是同一個點。

範例程式碼輸出

如果你只是想平滑地在曲線上插值點,你可以使用plottikz 指令,如下所示:

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

有一個tension鍵可以調整平滑的曲線,但坦白說,我無法得到比預設值更好的東西。

範例程式碼輸出

另一種選擇是使用貝塞爾曲線。然而,在指定兩點之間的貝塞爾曲線時,兩個額外的需要積分。這兩個描述了進出每個點的速度向量。

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

範例程式碼輸出

您會注意到我利用對稱性來消除沿著 $x$ 軸的座標。

答案2

在此輸入影像描述

trembling模組提供了一個 要設定Asymptote的類別對象,以在任意曲線上應用顫動變換。 :tremblesketch.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);

運行asy -f pdf sketch.asy以獲取獨立的sketch.pdf.

相關內容