SSブログ

ワットの曲線 Watt's Curve [見て楽しむ三角関数]

Scratchワットの曲線を描きます。

[ワットの曲線]

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

今回は式から始めます。rは半径、a, b, cは固定値、θは角度です。
\[ r^2=b^2-\left(a\sin(\theta)\pm\sqrt{c^2-a^2\cos^2(\theta)}\right)^2 \] この式をr=の形式にすると次のようになります。
\[ r=\sqrt{b^2-\left(a\sin(\theta)\pm\sqrt{c^2-a^2\cos^2(\theta)}\right)^2} \] ±の記号があるので、プラス用の式とマイナス用の式を実装します。式が二つなので、今回はスプライトを式ごとに二つ作り、上半分と下半分を別々に描画しています。

[上]

[下]

このため、上と下で違う色を使っています。

また、後で出てきますが、二つの式に共通する処理はステージに定義しています。

[ステージ]

次に変数です。ステージの変数はすべてのスプライト用にしてプラスの式とマイナスの式の両方から参照できるようにします。

[ステージ変数]

各スプライトでは、ステージで定義した変数に加えて式や描画に必要な変数を用意します。同じ名前の変数を二つのスプライトで使うので、各スプライトで「このスプライトのみ」として定義します。

[スプライト変数]

次に本体です。緑色の旗をクリックすると、ステージに定義した本体を実行します。

[ステージ本体]

ステージの本体では二つのスプライトから参照される変数を初期設定し、最後に「初期設定完了」イベントを送っています。

二つの描画用スプライトはこのイベントを受け取ると描画を開始します。

[スプライト本体]

角を0度から361度まで変化させながら計算、移動を繰り返すと曲線が描画できます。この処理は上のスプライトと下のスプラストで共通で、両方のスプライトに同じ内容を定義します。

次に準備です。この処理も上のスプライトと下のスプライトで共通です。

[準備]

上半分の曲線の計算は次のようになります。上のスプライトに定義します。式が長いので、右側のカッコの中を一旦、変数zに入れておき、そのあとの計算に使っています。

[上計算]

また、下半分の曲線の計算は次のようになります。こちらは下のスプライトに定義します。

[下計算]

違いは、二行目の式の+と-の部分です。

移動はいつも通りです。

[移動]

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

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