SSブログ

Right Serpentine [見て楽しむ三角関数]

ScratchRight Serpentineを描きます。serpentineは蛇行といった意味です。

[Right Serpentine]

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

今回の曲線は右上部分と左下部分を別々に描画しますので、スプライトが二つあります。

[スプライトとステージ]

最初に変数です。大きさと色はステージで定義して両方のスプライトから使います。大きさはスライダー表示にして画面上で値を変えられるようにします。

[ステージの変数]

その他の変数はスプライトごとに一つずつ定義します。大きさと色は上で定義したものが表示されているだけです。

[スプライト変数]

次に本体です。緑の旗をクリックすると、ステージに定義した本体が実行されます。ここでは色を適当に選んで、「開始」イベントを送信しています。

[ステージ本体]

二つのスプライトは、「開始」イベントを受け取るとそれぞれに描画処理を始めます。この処理は両方のスプライトで同じ内容を記述します。描画領域の端から中心に向かって曲線を描画し、座標が画面の中心に達したら終了します。

[スプライト本体]

次に準備です。右上用のスプライトと左下用のスプライトには座標(X, Y)や角度のような固有の変数があるので、それぞれのスプライトで別々の初期化処理を行います。最初に右上用スプライトの準備処理です。

[準備1]

次に左下用スプライトの準備処理です。

[準備2]

内容はほとんど同じで、角度だけが違います。いつもよりかなり長い処理になっています。描画領域の外側の座標で描画しようとすると描画領域の周縁部に余分な線が出てしまうので、座標が領域の内側に入ったところから描画を開始するように、角度を調整しています。繰り返しの部分がその処理になります。

式はこうなっています。rは半径、aは倍率(大きさ)、θは角度です。
\[ r^2=a^2\cot(\theta) \] この式をプログラムにすると次のようになります。このブロックは両方のスプライトで同じ内容を記述します。

[計算]

cotは三角関数でtanの逆数ですので、次のように定義します。このブロックも両方のスプライトで同じ内容を記述します。

[cotangent]

Scratchのブロックは一般的なプログラム言語の関数とは違い値を返せないので、cot変数に値を格納しておき、計算でその値を使っています。

移動はいつも通りです。このブロックも両方のスプライトで同じ内容を記述します。

[移動]

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

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