SSブログ

フェルマーのらせん Fermat's spiral [見て楽しむ三角関数]

Scratchフェルマーのらせんを描きます。

[フェルマーのらせん]

曲線を描く処理の詳細は初回で説明していますので、そちらを参照してみてください。違う曲線ですが流れは同じです。

今回の式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。前回の放物らせんに似ています。
\[ r=\pm a\sqrt{\theta} \] 一見単純ですが、=の右側に±の記号があるので、プラスの式とマイナスの式の二つの計算が必要になります。このため、スプライトを二つ作り、画面中心から正(プラス)回転と逆(マイナス)回転で同時に二本の曲線を描きます。上の曲線で色が二種類あるのはこのためです。

正回転スプライト

正回転と逆回転の違いは「計算」ブロックの式だけで、逆回転では-1を掛けます。その他は共通です。

ではプログラムを見ていきましょう。最初に変数です。

[変数]

今回はスプライトを二つ作りますので、変数には注意が必要です。Scratchには「すべてのスプライト用」の変数と「このスプライトのみ」の2二種類の変数が存在します。XやYはそれぞれのスプライトの座標を保持するための変数ですので、正回転スプライトと逆回転スプライトで別々にXとYを持っておく必要があります。角度や半径、倍率も同様で、すべてのスプライト用変数にすると複数のスプライトから同時に更新され、正しい値にならない可能性があります。したがってこれらも各スプライト用に持っておく必要があります。このため、「大きさ」以外は「このスプライトのみ」の変数にしています。

次に本体です。前回と同様、今回も描画範囲の端に到達したら終了します。繰り返しの水色の部分です。

[本体]

次は準備です。いつもと同じで、開始点を計算して移動しています。

[準備]

正回転の計算はこうなります。倍率と角度から半径を計算し、半径からX座標とY座標を求めます。

[正回転計算]

逆回転の計算はこうなります。正回転の式に-1を掛けて、符号を反転しています。

[逆回転計算]

移動はいつも通りです。

[移動]

完成版はこちら
nice!(0)  コメント(0) 
共通テーマ:日記・雑感

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。