三角関数なんて誰が使うの?という人へ。

初めてプログラミングをしたのは小学6年生の頃。MSXという8ビットのPC上でBASICを使っていました。当時はインターネットという言葉すらなく、プログラミングについての情報源は主に雑誌でした。MSX・FANを毎月購読し特に読者が自作のゲームプログラムを公開し合うファンダムというコーナーを熟読し掲載されているプログラミングを一文字ずつ地道に入力しゲームを作りながらプログラミングの技術や知識を手に入れていました。少しずつコードの書き方を覚え、難しいことができるようになっていく過程がとても楽しかったものです。小学生なりにじっくり考えればたいていのことは理解できたのですが、ある日どうしても解決できない疑問の壁にぶつかりました。ゲーム上でキャラクターを円周状に並べる部分でSINとかCOSとか書いてある。これらは何なのか、どうして円周状に並べる処理が実現できているのか。今ならググってすぐ解決なのかもしれませんが、結局少しも糸口をつかめず諦めたわけです。それから4年を経て高校の数学の時間に三角関数を習い、その中で単位円という考え方を知ったとき、ああこれだったのか、とようやく長年の疑問が解消した瞬間をよく覚えています。さて、その後さっそく三角関数を利用してプログラムを書いてみたかのかというと、当時の私はジャズバンドの部活に所属しギターの練習にすべてを捧げていたためプログラミングとは無縁の生活をしていました。ということでさらに30年近くの年月をはさみ、今あらためて三角関数を使って単位円を描くことを体感できるサンプルプログラムを書いてみました。

下のスライダーを左右に動かすことで中心角を0°〜360°まで変更できます。JavaScriptでは中心角θをラジアンで指定するのでラジアンに変換した数値も表示しています。スライダーの操作にともなってキャンバス上で小さな丸が円周状に動きます。赤い辺の長さはcosθになっていてx座標に使えます。青い方がsinθでy座標に使えます。右のチェックボックスにチェックを入れると軌跡で単位円が描かれる様子がよくわかります。よくある「数学勉強しても意味ないよね文脈」の中でその代表格として「サインコサインとか一生使わないし」みたいなことを言われがちな三角関数ですが、そんなこんなで私はとても愛着を持っています。