"BOKU"のITな日常

BOKUが勉強したり、考えたことを頭の整理を兼ねてまとめてます。

Scratch(スクラッチ)(10)/ペンを使って、花びらを描いてみる

f:id:arakan_no_boku:20200824233948p:plain

ペンを使って、花びらを描いてみます。

Scratchの用語でわからないときは、以下を参照ください。

arakan-pgm-ai.hatenablog.com

目次

花びら関数

花びら関数というものがあります。

何通りかありますが、一番シンプルなのが、このような式です。 

f:id:arakan_no_boku:20210624194248p:plain

この式をScratchにあてはめて、ちょっとだけ工夫すると、花びらが描けます。

スクリプト::変数の定義

まず、変数の定義です。

f:id:arakan_no_boku:20210624215542p:plain

上記の式と変数の対比は以下の通りです。

  • a:パラメータ
  • b:B変数
  • θ:ラジアン
  • r:原点からの距離
  • Cosθ:COS
  • Sinθ:SIN
  • X:X
  • Y:Y
スクリプト:花びらを描く

花びらを描くスクリプトです。

角度の一回りは360度なので、360回繰り返しをします。

繰り返しの中でやっているのは、ほぼ上記の式をスクリプトに定義しているだけです。

上記の式と変数の対比を頭にいれてみれば、すぐわかると思います。

f:id:arakan_no_boku:20210624194612p:plain

ポイントはここです。

f:id:arakan_no_boku:20210624220412p:plain

角度をどれくらいずつ変えるか・・で、どんな図がかけるか決まります。

これに影響を与えるのは「b:B変数」の値です。

 「b:B変数」の値を今回は「2」固定でやってます。

これが「2」の時、360回繰り返しで、角度を115ずつ変える・・が成り立ちます。

2以外になると、繰り返し回数も角度の変更数も変える必要があります。

あと、Scratchでやる場合、式のままだと図形が小さくなりすぎます。

そのため、原点からの距離を計算するときに、計算式にはない「150」という数を加算して、大きな図形が描けるようにしています。

f:id:arakan_no_boku:20210625000327p:plain

ここですね。

スクリプト:初期化

初期状態に戻すスクリプトは必要です。

f:id:arakan_no_boku:20210624220814p:plain

X・Y座標を0,0・・つまり、中央に戻し、パラメータをデフォルトの「5」にします。

そして描画した花びらを全部消す。

今回は、ただこれだけです。

スクリプト:スプライトは蝶にしました

画面です。

スプライトは、なんとなく、花びらなので蝶々にしてみました。

f:id:arakan_no_boku:20210624221024p:plain

パラメータはスライダーにして、5 ~ 39 まで変更できるようにします。

ポイントとしては、パラメータは奇数のほうが枚数の多い花びらが描けます。

偶数だと同じところを2回通ってしまうので、花びらの数が減ってしまうからです。

なので、最大値も奇数の39になってます。

あとは、パラメータを適当な数に変更して実行するだけです。

実行:デフォルトの「5」の結果

デフォルト「5」だとこんな感じです。

色を変えながら描くようにしているので、グラデーションっぽい線になってます。

f:id:arakan_no_boku:20210624221646p:plain

実行:MAXのパラメータ「39」の結果

パラメータの設定値のMAXの[39」だとこんな感じ。

f:id:arakan_no_boku:20210624222346p:plain

プロジェクトは公開してます

以下に埋め込んで動かせるようにしています。

実際にパラメータを変更して動かしてください。

なんで、こういう風に花びらが描けるのかを数学的に考えたりするのも楽しい人にはいいのでしょうが、単純に、動かして蝶々が花びらを描くのを「ぼーーっ」とみているのも悪くないかな(笑)と思ってます。

プロジェクトへのリンクはこちらです。

https://scratch.mit.edu/projects/546798200

 今回はこんなところで。

ではでは。