3Dで使う基本的な数学の知識その1(javascript編)
3Dを使う上で必須の数学の知識があります。 まずは基礎からやっていこうと思います。
ラジアン
通常円の角度は 度数法を使って表現されます。 360°は度数法です。
javascriptでオブジェクトを回転させたりする場合は度数法ではなく 弧度法(ラジアン)を使う必要があります。
弧度法の場合は角度の基準となるものが円周になります。
円周の公式
算数ですが復習の為。
円周 = 2 * PI(π) * r(半径)
半径が1.0の円周は
半径1の円の円周 = 2 * PI * 1
つまり下になります。
2 * PI
度数法では、円の1周は360°。 弧度法では1周が2PI(π)になります。
ラジアンを使って円の座標を計算してみる
javascriptでPIを求める場合は Math.PIを利用します。
cosの求め方
Math.cos(rad) * 半径
30°のcosは単純に書くと下のようになる。
Math.cos(2 * Math.PI * (30/360)) * radius
sinの求め方
Math.sin(rad) * 半径
30°のsinは単純に書くと下のようになる。
Math.sin(2 * Math.PI * (30/360)) * radius
ベクトル
ベクトルとは向きと大きさを持った量のことを言います。 簡単に書くと下のようになります。「向きと大きさ(長さ)」をもつ量です。
単位ベクトル
ベクトルの大きさを無視した(1に揃えた)、向きだけをもったベクトル。 大きさを正規化することで1に揃えていきます。
式はこのようになります。これは2Dでも3Dでも同じです。
◎2D
V = [x,y]; Vの大きさ = Math.sqrt(x * x + y * y); //sqrtは平方根 Vの単位ベクトル = [x / 大きさ, y / 大きさ];
◎3D
V = [x,y,z]; Vの大きさ = Math.sqrt(x * x + y * y + z * z); //sqrtは平方根 Vの単位ベクトル = [x / 大きさ, y / 大きさ, z / 大きさ];
単位ベクトルは向きだけに注目したい場合に使用します。
単位ベクトルの例
See the Pen Njzbmx by nogson (@satofaction) on CodePen.
ベクトルの加算
ベクトルの加算はその名の通り、2つのベクトルを足し合わせるだけでよい。
参考図はunityドキュメントから引用
まとめ
ラジアンとベクトルは基礎なのでしっかり理解したいと思います。