我对 LaTeX 和 Tikz 都是新手,正在探索生态系统的各个方面。在查找 Tikz 相关信息的过程中,我看到了以下回复:Tikz 中的正弦波。
这有效,但我不明白它是如何工作的。有人能指点我或解释一下这些命令如何组合起来生成正弦波吗?
答案1
最后一个错误给出了手册中的片段,不应该有任何错误不再。但是还是有一些插图会更好。这个答案就是为了这个目的。
让我们考虑一下这个构造:
\draw[ultra thick, red] (3,0) sin (4,1)
在
\documentclass[tikz,border=10pt]{standalone}
\begin{document}
\begin{tikzpicture}
\draw (0,0) -- (12,0);
\draw (0.2,1)node[left,font=\tiny] {$y=1$} -- (11.8,1);
\draw (0.2,-1)node[left,font=\tiny] {$y=-1$} -- (11.8,-1);
\foreach \x in {0,0.5,...,12}{
\draw (\x,-0.2)node [below,font=\tiny,] {\x} -- (\x,0.2) ;
}
\draw[ultra thick, red] (3,0) sin (4,1); %% the real business in this line
\end{tikzpicture}
\end{document}
它表示从点开始(3,0)
绘制一条sin
e 曲线,并在点处结束曲线(4,1)
:
请注意,sin
和cos
命令仅绘制四分之一正弦/余弦曲线,并且y
两个点的坐标应该不同。例如,如果您绘制
(3,0) sin (11,0) %%% same y-coordinate
你会得到一条直线,如:
现在添加行
\draw[ultra thick, blue] (4,1) cos (5,0); %% the real business in this line
这表示一条cos
直线曲线在 处开始(4,1)
并在 处结束(5,0)
:
蓝色曲线是余弦曲线。您可以像这样连续交替地添加sin
和cos
曲线,以得到连续的正弦波:
\documentclass[tikz,border=10pt]{standalone}
\begin{document}
\begin{tikzpicture}
\draw (0,0) -- (12,0);
\draw (0.2,1)node[left,font=\tiny] {$y=1$} -- (11.8,1);
\draw (0.2,-1)node[left,font=\tiny] {$y=-1$} -- (11.8,-1);
\foreach \x in {0,0.5,...,12}{
\draw (\x,-0.2)node [below,font=\tiny,] {\x} -- (\x,0.2) ;
}
\draw[ultra thick, red] (3,0) sin (4,1); %% the real business in this line
\draw[ultra thick, blue] (4,1) cos (5,0); %% the real business in this line
\draw[ultra thick, red] (5,0) sin (6,-1); %% the real business in this line
\draw[ultra thick, blue] (6,-1) cos (7,0); %% the real business in this line
\draw[ultra thick, red] (7,0) sin (8,1); %% the real business in this line
\draw[ultra thick, blue] (8,1) cos (9,0); %% the real business in this line
\draw[ultra thick, red] (9,0) sin (10,-1); %% the real business in this line
\draw[ultra thick, blue] (10,-1) cos (11,0); %% the real business in this line
\end{tikzpicture}
\end{document}
所有red
曲线都是正弦曲线,blue
1 是余弦曲线。您无需像这样放置许多单独的\draw
命令,而是可以将它们全部塞入一个\draw
命令中:
\draw[ultra thick, red]
(3,0) sin (4,1) cos (5,0) sin (6,-1) cos (7,0)
sin (8,1) cos (9,0) sin (10,-1) cos (11,0);
正如 Peter Grill 在他的链接答案中所做的那样
答案2
根据 Karl 的学生(他们几乎不关心 TikZ 中的所有内容)在 TikZ 文档第 30 页(通过texdoc tikz
在终端、shell、DOS 提示符中调用)中的说法,他们说
正弦
记住3个重要行为:
sin (x,y)
仅绘制完整正弦曲线的前 1/4。换句话说,绘制第一象限的曲线。前一个点作为起点。
如果前一个点低于
(x,y)
则绘制正弦波,振幅为正。否则绘制负振幅。
如果您仍然对这 3 条规则感到困惑,下面的渐进示例应该可以帮助您理解它的行为。
\begin{tikzpicture}
\draw[gray] (0,0) grid (5,5);
\draw[red] (0,0) sin (1,2);
\end{tikzpicture}
\begin{tikzpicture}
\draw[gray] (0,0) grid (5,5);
\draw[red] (0,0) sin (1,2) sin (3,5);
\end{tikzpicture}
\begin{tikzpicture}
\draw[gray] (0,0) grid (5,5);
\draw[red] (0,0) sin (1,2) sin (3,5) sin (5,0);
\end{tikzpicture}
余弦
余弦是正弦的“补”。下面的例子应该能让你更清楚地理解。
\begin{tikzpicture}
\draw[gray] (0,0) grid (5,5);
\draw[red] (0,0) sin (1,2);
\draw[blue] (0,0) cos (1,2);
\end{tikzpicture}
\begin{tikzpicture}
\draw[gray] (0,0) grid (5,5);
\draw[red] (0,0) sin (1,2) sin (3,5);
\draw[blue] (0,0) cos (1,2) cos (3,5);
\end{tikzpicture}
\begin{tikzpicture}
\draw[gray] (0,0) grid (5,5);
\draw[red] (0,0) sin (1,2) sin (3,5) sin (5,0);
\draw[blue] (0,0) cos (1,2) cos (3,5) cos (5,0);
\end{tikzpicture}
概括
如果你想创建一个完整的正弦波,那么你需要交替使用sin
和cos
,如下所示,
\begin{tikzpicture}
\draw[gray] (0,-3) grid (5,3);
\draw[green] (0,0) sin (1,2) cos (2,0) sin (3,-2) cos (4,0);
\end{tikzpicture}
因为sin
单独使用不会产生您想要的结果,如下所示。
\begin{tikzpicture}
\draw[gray] (0,-3) grid (5,3);
\draw[red] (0,0) sin (1,2) sin (2,0) sin (3,-2) sin (4,0);
\end{tikzpicture}