アーネシの曲線 Witch of Agnesi [見て楽しむ三角関数]
Scratchでアーネシの曲線を描きます。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。cotは三角関数の一種cotangentの計算結果を保持します。
次に本体です。パラメータを変えて曲線を16本描くため、二重ループになっています。内側の繰り返しでアーネシの曲線を一本描画します。曲線を一本描き終わったら変数aの値を1ずつ変更しますが、a=0の場合は角度を変えて計算しても常にX=0, Y=0になるため、原点(0, 0)に点が描かれるだけになります。これを避けるため、a=0の場合はa=1に設定して次の曲線を描画します。
次に初期設定です。このブロックはプログラムを実行したときに一度だけ呼び出されます。ペンと変数を初期化しています。
次に準備です。一本の曲線を描く前に毎回呼び出され、描画を開始する座標に移動します。
式はこうなっています。aは倍率(大きさ)、θは角度です。
\[ x = 2a\cot(\theta) \\
y = a(1-\cos(2\theta)) \] この式をScratchで実装したのが次の計算ブロックです。
上の式ではX座標の計算で2を掛けていますが、計算ブロックではこれを省略しています。2倍するとどうなるかは試してみてください。
計算の最初に呼び出しているcotは上にも書いた通り三角関数のcotangentです。cotangent関数はScratchには備わっていないため次のようなブロックを定義して計算しています。
移動はいつも通りです。
完成版はこちら。
曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。
最初に変数です。cotは三角関数の一種cotangentの計算結果を保持します。
次に本体です。パラメータを変えて曲線を16本描くため、二重ループになっています。内側の繰り返しでアーネシの曲線を一本描画します。曲線を一本描き終わったら変数aの値を1ずつ変更しますが、a=0の場合は角度を変えて計算しても常にX=0, Y=0になるため、原点(0, 0)に点が描かれるだけになります。これを避けるため、a=0の場合はa=1に設定して次の曲線を描画します。
次に初期設定です。このブロックはプログラムを実行したときに一度だけ呼び出されます。ペンと変数を初期化しています。
次に準備です。一本の曲線を描く前に毎回呼び出され、描画を開始する座標に移動します。
式はこうなっています。aは倍率(大きさ)、θは角度です。
\[ x = 2a\cot(\theta) \\
y = a(1-\cos(2\theta)) \] この式をScratchで実装したのが次の計算ブロックです。
上の式ではX座標の計算で2を掛けていますが、計算ブロックではこれを省略しています。2倍するとどうなるかは試してみてください。
計算の最初に呼び出しているcotは上にも書いた通り三角関数のcotangentです。cotangent関数はScratchには備わっていないため次のようなブロックを定義して計算しています。
移動はいつも通りです。
完成版はこちら。
コメント 0