
最簡單的方法是什麼草圖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
而不是1cm
as 是預設值。所以(3,1)
第一行和(6,1)
第二行是同一個點。
如果你只是想平滑地在曲線上插值點,你可以使用plot
tikz 指令,如下所示:
\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
的類別對象,以在任意曲線上應用顫動變換。 :tremble
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);
運行asy -f pdf sketch.asy
以獲取獨立的sketch.pdf
.