狠狠撸

狠狠撸Share a Scribd company logo
数学関数
第 9 回
プログラムというのは数学的なものです。
コンピュータというのが元は計算機だったこともあり、
数学の計算をサポートするための機能というのが必ずついています。
ソフトウェアにもそれを利用するための方法がやはりついています。
今回はそれの紹介と、
数学がいかにゲームにとって大事なのかを解説していきます。
とはいっても簡単で良く使う物だけです。
数学と密接した物理に関しては解説済みですしね。
ルート
√ 2 = Math.sqrt(2)
絶対値
2 = |-2| = Math.abs(-2)
π
3.1415 = Math.PI
三角関数
sin 90° = Math.sin(Math.PI/2)
cos 90° = Math.cos(Math.PI/2)
tan 90° = Math.tan(Math.PI/2)
ところで、 90° なのに Math.PI/2 と
書いているのに気付きました?
角度は一般にラジアンが使われます。
これは私の時代では数Ⅲにならないと
扱われなかった概念です。
ラジアンとは?
日本の計量法体系では、
ラジアンは
「円の半径に等しい長さの弧の中心に対する角度」
と定義されている。
1 ラジアンは度数法では約 57.295 78° (180°/π) に相当する。
by wikipedia
なんだか小難しいですね。
要は、 180°= π って覚えておけばいいです。
360°= 2π です。
90° = π/2 ですし、
60° = π/3 です。
扱う分にはそれ以上でもそれ以下でもないです。
対数
log 10 = Math.log(10)
ただし、底は e です。
e は常用対数
何のことかわからない場合は Wikipedia へ
整数化
Math.round(3.14) = 3
Math.round(3.65) = 4
四捨五入
Math.floor(3.14) = 3;
Math.floor(-3.14) = -4;
小さくまとめる
JavaScript には整数型というのが無いので地味に必要です。
乱数
Math.random();
但し、範囲は 0 ~ 1 の間で小数点付きの値で返ってきます。
もし 0 ~ 100 の間のランダムが欲しければ、
100 * Math.random() となります。
メルセンヌツイスタのようなものはありません。
ちなみに乱数は数学の範囲にあります。
ランダムというのは計算で求められる、一見するとランダムな数字
というものでしかありません。
なので条件さえ整えればいつでも同じ乱数が再現できます。
計算の条件というのがシードと呼ばれるものです。
1970 年 1 月 1 日 からの経過時間や、 CPU の温度等、
出来る限り人間が予測できなそうなものを
上手く掛け合わせて作る場合が多いです。
ちなみにここで紹介しなかったようなものは
無いと思ってもらって大丈夫です。
例えば、 2 の 3 乗を求めたければ、 2 * 2 * 2 をするしかないです。
さて、ここでせっかくなので数学関数を使ってみましょう。
Enemy.js の
SingleEnemy 内で、 this.y の下に this.baseY = this.y; を追加。
update() 関数内で、
if (enemyList[i].isInScreen) のかっこ内に、
this.y = this.baseY + 10*Math.sin(enemyList[i].x);
を追加してみましょう。
他にもグラディウスで見られるような、
自機の周りをグルグル回るような軌道も三角関数を使って実装できます。
これは興味がある人は実装してみて下さい。
宿題 1
円の面積を求める関数を作成してください。
9回目数学関数
宿題 2
べき乗を求める関数を作成してください
2? = 8
9回目数学関数
宿題 3
FizzBuzz を解きなさい。
// 出力例
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
宿題4
2点間の距離を計算する関数を作りましょう
9回目数学関数
というところで今日は終了になります。
お疲れ様でした。
おわり

More Related Content

9回目数学関数