はじめまして、プリントエフです。ふだんはQuizKnock開発部の一員として、webサイト制作などのプログラミング作業で、裏側からQuizKnockに関わっています。
突然ですが、「中学・高校の数学って何の役に立つの?」「三角関数とかベクトルとか、生きてて何に使うの?」なんてことがよく言われます。そんな声を受け、「何に使うの?」とされる学校の知識を実際に使っている場面を見せるべく、このたび新たな試みとして、QuizKnock開発部で、ゲームを開発してみました。『AstroCleaner』というゲームです。
インストールはこちらから↓
(現状iOSでしか配信していません。Androidなど他機種スマートフォンユーザーにはご不便おかけします、申し訳ありません)
画面タップで宇宙船を操作して、宇宙に散らばったガラクタを集めるというゲームです。詳しくは実際にプレイしていただくとして、さて、ではこのゲームのどんなところに数学が使われているのでしょうか。一つ例をあげて説明……する前に、そもそもこのゲームと数学の関わりについて、説明させてください。
このゲームと数学の関わり
先取りして言うと、たとえばこのゲーム中で、画面をタップし続けて星のまわりをグルグル周っている状態から、画面のタップを離すと、宇宙船は一直線に飛んでいくわけですが、その進行方向を計算しなければなりません。ここでひとつ数学が使われています。
現実をシミュレートする
たとえばソフトボールの投球の場面を考えてみましょう。現実世界なら、握った手を離すと、ボールは自然法則にしたがって飛んでいってくれるのですが、コンピュータ上では自然法則は実際に働いてはくれません。そこで、現実世界ならこう動くだろうという自然な動き方を再現する(今回の場面なら、宇宙船が向いている方向に一直線に飛んでいくという動き方をさせる)べく、数学を用いてプログラムをしてやる必要があるわけです。
現実世界での自然な動き方を分解して、それをコンピュータ上で再現すると、現実でどうなるかのシミュレーションができます。たとえば津波が街を襲ってきたとして、どこに一番水が早く押し寄せるかとか、建物にどれぐらいの負荷がかかるかとかをシミュレーションすることで、予め対策を講じることができます。こうしたシミュレーションで数学が役に立っているのです。
自分で動かして楽しいシミュレーション
そしてときに、コンピュータで再現して、自分でそのアクションを操作してみると楽しい、ということがあります。そういうものがゲームになり、数学は現実への応用のためのシミュレーションというだけでなく、さらには人を楽しませるのにも結果的に役立つことになります。
このゲームには、(「現実への応用のための」という側面は薄く、「人を楽しませるための」という側面が強くなっていますが)ある現実のアクションのシミュレーションであり、そこに数学が役立っている、という意図を込めた……つもりです。
さて、前置きが長くなってしまいましたが、宇宙船が一直線に飛んでいく場面で実際にどういう計算が行われているのでしょうか。ここでは高校数学でおなじみの概念、ベクトルと三角関数が使われています。具体的な説明は長くなってしまうので、下の方にまとめておくとして、いったん、概略をざっくり説明してみます。
宇宙船が飛んでいく方向の計算をざっくり説明
星→宇宙船のベクトルを計算する
ゲーム画面をxy平面として扱えば、宇宙船の位置も星の位置も、xy座標で表すことができます。宇宙船のいる座標と星の座標の差をとると、星から宇宙船に伸びるベクトルを導くことができます。ここではベクトルは、「ある場所から、どの方向にどれだけ動かせば別の場所まで行けるか」を表す矢印、ぐらいに考えてください。
星→宇宙船のベクトルを傾ける
宇宙船が時計回りをしていたか反時計回りをしていたかによって、宇宙船の進行方向と、いま得たベクトルの向きの関係が変わります。宇宙船の進行方向は(慣習にならい、反時計回りを正として)
- 反時計回りの場合、星→宇宙船のベクトルの向きを +π/2(= +90°)した方向に
- 時計回りの場合、星→宇宙船のベクトルの向きを -π/2(= -90°)した方向に
なります。
星→宇宙船のベクトルと、それを傾けたベクトルの関係は、三角関数を用いて導くことができます。結論から先に言えば、xy成分表示を用いて (X, Y) で表されるベクトルは、
- +π/2 傾ければ、 (-Y, X)
- -π/2 傾ければ、 (Y, -X)
と、ずいぶん単純な形で変換されることになります。
具体的な計算は以下をご参照ください。
以上細かい計算
これで飛んでいく方向自体はわかったので、宇宙船の速度を一定にするために補正をかけてやれば、宇宙船の飛び方を決めることができます。
学問のチカラ
こんなふうに、xy座標・ベクトル・三角関数といった、中高で習う数学の概念が、このゲームを成り立たせるのに使われているわけです。他にも、画面をタップして宇宙船が一番近くの星のまわりを周りはじめるとき、時計回りと反時計回り、どちらに周るのが自然かを判定するのに、ちょっとだけ高校数学の範囲を超えた方法を使ったりしています。
数学含め学問は、それ自体として新たな知を得て楽しむことができるのはもちろんのこと、現実世界のあらゆる場所でその知を活かすこともできる、たいへん豊かな営みです。前置きに書いたとおり、災害対策のシミュレーション、あるいは建築・航行などにも、さらには今回のように人を楽しませるためのゲームにも、数学が使われています。それを「難しいから」「すぐに役に立ちそうにないから」と切り捨ててしまうのは、もったいないような気がします。
「中高で習う数学は現実世界のシミュレーションなどで実際に役立っており、さらにはゲームに応用して人を楽しませるのにも使うことができる」という今回の記事・ゲームのメッセージから、学問のチカラを少しでも感じ取っていただければ幸いです。