2016年6月10日金曜日

Scratchでコンピュータグラフィックス:円を描く


Scratchでコンピュータグラフィックス

第1回
第2回
第3回

回転で円を描く

グラフィック機能を持ったプログラム言語、例えばMSX BASICでは直線以外に点・円・四角形・塗りつぶしのある図形などがPOINT・CIRCLEなどの命令文で描く事が出来ました。

ですが、Scratchにはそのような命令を行うブロックがありません。

Scratchでは直線的な座標の移動による描画は可能ですが曲線の様な形状はそのままでは描画できないのです。

では、出来なければ「工夫をしてみる」という方針で、何とかして「円の様な形状」を描いてみたいと思います。

角の多い「多角形」を考えてみる

多角形と言えば三角を始めとして頂点が増えていく角の多い図形ですね。

五角形とか六角形とか容易にイメージできると思いますが、例えば10角形とか20角形とかどんな形になるでしょうか?



因みに上の多角形は10角形です。
どうでしょう、円に近いように思いませんか?

という事は、移動しながら角度を変更して回転すれば多角形の描画が出来るという事になり、その角が多ければ円のように見えるという事が考えられます。

これであれば、今まで使ったブロックにちょっと付け足せば出来そうです。

では、やってみましょう。

回転する

Scratchの回転動作を指定するブロックは2つあります。



「動き」の中にあり、上が時計回り、下が反時計回りになります。
両方とも回転角度を指定すればキャラクタの進行方向が曲がって行きます。

円の一周は360度ですので10角形なら10分の1の36度を10回、20角形なら20分の1の18度を20回、キャラクタに回転を指定すれば出来そうです。

つまり、

・プログラムをスタート
・描画を開始(ペンの準備)
・繰り返し回数の指定
 ・頂点から頂点の移動距離の指定
 ・角度の変更
・繰り返しが終わったらプログラムを停止

...という順番を組めば良いのではないのでしょうか?

では、実際に組んでみましょう。

まず開始のイベントとペンの指定をします。



次に繰り返しの指定をします。
これは前回使いましたね。



繰り返しが終わればプログラムを停止しますので、上記のようにしておきます。
先ずは繰り返し回数を10回でやってみます。

では、次に移動を指定します。ここでは最初に使った「・・・歩動かす」を使いましょう。



これだと、30歩の移動を10回繰り返し300歩分の直線を描く事になります。

では、30歩ごとに進行方向の角度を変更しましょう。
先ほどの回転のブロックを挿入します。



今回は36度の時計回り回転を10回繰り返して360度の一回転になるように設定しました。

出来上がったら実行します。



10角形がちゃんと描けましたね。

では、数値を変えてみます。



繰り返し回数を20回、回転角度を半分の18度に変えました。



先ほどよりも大きな20角形が描けましたね。
移動距離が同じ30歩なので角度が小さい分、大周りになりました。

数値を変えると色々な形が考えられそうです、例えば最初の10角形と同じ大きさの20角形を描くならこう出来そうですね。





歩数を半分にすると、かなり円に近い形になりました。

繰り返し回数、移動歩数、回転角度の関係を変える事で、例えば、「大きな10角形」「半円」なども描けそうです。





どうすれば可能か、色々試してみてください。