のぐそんブログ

暗いおじさんがシコシコ書くブログです。

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つのベクトルを足し合わせるだけでよい。

Kobito.VG6lRN.png

参考図はunityドキュメントから引用

まとめ

ラジアンとベクトルは基礎なのでしっかり理解したいと思います。