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}

2\draw行目はスケールを変更しますバツデフォルトでは、 as0.5cmではなくaxis to が使用されます。つまり、最初の行は2 番目の行と同じポイントになります。1cm(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が、率直に言って、デフォルトよりも見栄えの良いものを得ることができませんでした。

サンプルコード出力

もう一つの選択肢はベジェ曲線を使うことです。しかし、2点間のベジェ曲線を指定する場合、2つの追加ポイントが必要です。これら 2 つは、各ポイントから出入りする速度ベクトルを表します。

\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

関連情報