Scratchプログラミングでsin(サイン)cos(コサイン)を使用する方法

KIDSPRO

Scratch(スクラッチ)でゲームなどのプログラミングをしていると、実社会ではあまり見かけないsin(サイン)cos(コサイン)などを使うことがあります。
sin(サイン)cos(コサイン)だけでなく、得点計算や判定などに使用する変数、切り下げ、切り上げ、絶対値、割り算余りなど、数学の知識を実際に活用するケースが多々あります。

KIDSPRO

プログラミング学習により勉強の必要性を実感

プログラミング学習により「学校で習った事が実社会で利用されており、活用することが出来る」という事を体感できます。

実際に、変数を使った得点の付け方を知ったとき、ほとんどの子供たちは何かを得たような嬉しそうな顔をします。

もしも「学校で習った事が社会に出てから役立つのか?」と疑問に思っている子がいたら、プログラミングで数学を利用することにより「学校の勉強も必要だから、もっと勉強しよう」という考え方に変わるかもしれません。

そう思えるぐらい、変数の使い方などを知った子供たちの反応は大きいものでした。

sin(サイン)cos(コサイン)が必要なケースとは?
「〇〇へ行く」というスクリプトブロックを使って、飛行機雲(白い丸)を飛行機に移動させると飛行機の中心部分に移動します。その後に「x座標を〇ずつ変える」というブロックにより飛行機雲を尾翼のあたりに移動させます。飛行機が水平方向にしか動かないのであれば、このブロックだけで問題ありません。しかし、飛行機が傾くと右上図のように飛行機雲の位置がずれてしまいます。ここで、sin(サイン)cos(コサイン)の出番となります。

ここがポイント1

「〇〇の向き」というブロックから、飛行機の傾き(角度)を知ることが出来ます。Scratch(スクラッチ)の場合、上が0度、右が90度という決まりになっているので、90度から飛行機の傾き(角度)を引いた角度のsin(サイン)cos(コサイン)を演算ブロックで算出します。

ここがポイント2

このsin(サイン)cos(コサイン)の値と、飛行機の中心から尾翼までの距離a(今回の例では50ピクセル)を、sinθ = b ÷ a、cosθ = c ÷ aの公式に当てはめれば、飛行機の中心から尾翼までの距離bとcが分かり、飛行機雲の発生位置を指定する事が出来るようになります。

KIDSPRO

飛行機がどのような傾きになっても尾翼から飛行機雲が表示されるか、お時間のある方は実際にゲームを試してみて下さい。

Scratch 3.0(スクラッチ3.0)アクロバット飛行ゲーム(飛行機煙付き)