# 算術関連

## 関数
static VECTOR | VGet (float x, float y, float z)
static VECTOR | VAdd (VECTOR v1, VECTOR v2)
| 二つのベクトルを足し算します。
static VECTOR | VSub (VECTOR v1, VECTOR v2)
| 二つのベクトルを引き算します。
static float | VDot (VECTOR v1, VECTOR v2)
| 二つのベクトルの内積を計算します
static VECTOR | VCross (VECTOR v1, VECTOR v2)
| 二つのベクトルの外積を計算します
static VECTOR | VScale (VECTOR v, float scale)
| ベクトルをスカラー倍します
static float | VSize (VECTOR v)
| ベクトルの大きさを計算します
static float | VSquareSize (VECTOR v)
| ベクトルの大きさの二乗を計算します
static VECTOR | VNorm (VECTOR v)
| 正規ベクトル(長さが1となるようなベクトル)を求めます
static VECTOR | VTransform (VECTOR v, MATRIX m)
| ベクトルを行列で座標変換にかけます。
static VECTOR | VTransformSR (VECTOR v, MATRIX m)
| ベクトルを行列で座標変換にかけます。ただし、平行移動を行いません
static MATRIX | MGetIdent ()
| 単位行列を取得します
static MATRIX | MGetScale (VECTOR v)
| 拡大変換行列を取得します
static MATRIX | MGetTranslate (VECTOR v)
| 平行移動行列を取得します
static MATRIX | MGetRotX (float angle)
| X軸回転行列を取得します.
static MATRIX | MGetRotY (float angle)
| Y軸回転行列を取得します.
static MATRIX | MGetRotZ (float angle)
| Z軸回転行列を取得します.
static MATRIX | MGetRotAxis (VECTOR v, float angle)
| 任意軸回転行列を取得します
static MATRIX | MGetRotVec2 (VECTOR v1, VECTOR v2)
| あるベクトルの方向から別のベクトルの方向に回転する回転行列を取得します
static MATRIX | MGetAxis1 (VECTOR xAxis, VECTOR yAxis, VECTOR zAxis, VECTOR pos)
| 指定の座標系のベクトルを基本座標系上のベクトルに直す変換行列を取得します
static MATRIX | MGetAxis2 (VECTOR xAxis, VECTOR yAxis, VECTOR zAxis, VECTOR pos)
| 基本座標系のベクトルを指定の座標系上のベクトルに直す変換行列を取得します
static MATRIX | MAdd (MATRIX m1, MATRIX m2)
| 行列同士を足し算します
static MATRIX | MMult (MATRIX m1, MATRIX m2)
| 行列同士を乗算します
static MATRIX | MScale (MATRIX m, float scale)
| 行列を拡大します
static MATRIX | MTranspose (MATRIX m)
| 転置行列を取得します
static MATRIX | MInverse (MATRIX m)
| 逆行列を取得します

## 関数

static MATRIX MAdd | ( | MATRIX | m1,
|  | MATRIX | m2 |
| ) |  |  | `[inline, static]`

行列同士を足し算します

引数:

  | m1 | 足されるベクトル
  | m2 | 足すベクトル

戻り値:
  結果の行列

static MATRIX MGetAxis1 | ( | VECTOR | xAxis,
|  | VECTOR | yAxis,
|  | VECTOR | zAxis,
|  | VECTOR | pos |
| ) |  |  | `[inline, static]`

指定の座標系のベクトルを基本座標系上のベクトルに直す変換行列を取得します

引数:

  | xAxis | 変換元座標系のX軸方向を表すベクトル
  | yAxis | 変換元座標系のY軸方向を表すベクトル
  | zAxis | 変換元座標系のZ軸方向を表すベクトル
  | pos | 変換元座標系の原点の基本座標系での位置

戻り値:
  変換行列

static MATRIX MGetAxis2 | ( | VECTOR | xAxis,
|  | VECTOR | yAxis,
|  | VECTOR | zAxis,
|  | VECTOR | pos |
| ) |  |  | `[inline, static]`

基本座標系のベクトルを指定の座標系上のベクトルに直す変換行列を取得します

引数:

  | xAxis | 変換先座標系のX軸方向を表すベクトル
  | yAxis | 変換先座標系のY軸方向を表すベクトル
  | zAxis | 変換先座標系のZ軸方向を表すベクトル
  | pos | 変換先座標系の原点の基本座標系での位置

戻り値:
  変換行列

static MATRIX MGetIdent | ( |  | ) | `[inline, static]`

単位行列を取得します

戻り値:
  単位行列

static MATRIX MGetRotAxis | ( | VECTOR | v,
|  | float | angle |
| ) |  |  | `[inline, static]`

任意軸回転行列を取得します

引数:

  | v | 回転軸の方向を指定するベクトル
  | angle | 指定した軸に対しての回転角度

戻り値:
  回転行列

static MATRIX MGetRotVec2 | ( | VECTOR | v1,
|  | VECTOR | v2 |
| ) |  |  | `[inline, static]`

あるベクトルの方向から別のベクトルの方向に回転する回転行列を取得します

ベクトルのなす角が90度を超えていると正しく値を取得できないので注意してください。

引数:

  | v1 | 変換元方向のベクトル
  | v2 | 変換先方向のベクトル

戻り値:
  回転行列

static MATRIX MGetRotX | ( | float | angle | ) | `[inline, static]`

X軸回転行列を取得します.

引数:

  | angle | X軸に対しての回転角度

戻り値:
  回転行列

static MATRIX MGetRotY | ( | float | angle | ) | `[inline, static]`

Y軸回転行列を取得します.

引数:

  | angle | Y軸に対しての回転角度

戻り値:
  回転行列

static MATRIX MGetRotZ | ( | float | angle | ) | `[inline, static]`

Z軸回転行列を取得します.

引数:

  | angle | Z軸に対しての回転角度

戻り値:
  回転行列

static MATRIX MGetScale | ( | VECTOR | v | ) | `[inline, static]`

拡大変換行列を取得します

引数:

  | v | XYZそれぞれの軸方向に対する拡大率を表すベクトル

戻り値:
  拡大変換行列

static MATRIX MGetTranslate | ( | VECTOR | v | ) | `[inline, static]`

平行移動行列を取得します

引数:

  | v | XYZそれぞれの軸方向に対する移動距離を表すベクトル

戻り値:
  平行移動行列

static MATRIX MInverse | ( | MATRIX | m | ) | `[inline, static]`

逆行列を取得します

行列式が0となるような行列には逆行列が存在しないので、単位行列を返します

引数:

  | m | 逆にしたい行列

戻り値:
  逆行列

static MATRIX MMult | ( | MATRIX | m1,
|  | MATRIX | m2 |
| ) |  |  | `[inline, static]`

行列同士を乗算します

引数:

  | m1 | 掛けられるベクトル
  | m2 | 掛けるベクトル

戻り値:
  結果の行列

static MATRIX MScale | ( | MATRIX | m,
|  | float | scale |
| ) |  |  | `[inline, static]`

行列を拡大します

引数:

  | m | 変換元行列
  | scale | 拡大率

戻り値:
  結果の行列

static MATRIX MTranspose | ( | MATRIX | m | ) | `[inline, static]`

転置行列を取得します

引数:

  | m | 転置したい行列

戻り値:
  転置行列

static VECTOR VAdd | ( | VECTOR | v1,
|  | VECTOR | v2 |
| ) |  |  | `[inline, static]`

二つのベクトルを足し算します。

引数:

  | v1 | 足されるベクトル
  | v2 | 足すベクトル

戻り値:
  ベクトル同士を足した結果

static VECTOR VCross | ( | VECTOR | v1,
|  | VECTOR | v2 |
| ) |  |  | `[inline, static]`

二つのベクトルの外積を計算します

引数:

  | v1 | ベクトル
  | v2 | ベクトル

戻り値:
  二つのベクトルの外積

static float VDot | ( | VECTOR | v1,
|  | VECTOR | v2 |
| ) |  |  | `[inline, static]`

二つのベクトルの内積を計算します

引数:

  | v1 | ベクトル
  | v2 | ベクトル

戻り値:
  二つのベクトルの内積

static VECTOR VGet | ( | float | x,
|  | float | y,
|  | float | z |
| ) |  |  | `[inline, static]`

static VECTOR VNorm | ( | VECTOR | v | ) | `[inline, static]`

正規ベクトル(長さが1となるようなベクトル)を求めます

引数:

  | v | ベクトル

戻り値:
  正規ベクトル

static VECTOR VScale | ( | VECTOR | v,
|  | float | scale |
| ) |  |  | `[inline, static]`

ベクトルをスカラー倍します

引数:

  | v | ベクトル
  | scale | スケーリングの値

戻り値:
  結果

static float VSize | ( | VECTOR | v | ) | `[inline, static]`

ベクトルの大きさを計算します

引数:

  | v | ベクトル

戻り値:
  ベクトルの大きさ

static float VSquareSize | ( | VECTOR | v | ) | `[inline, static]`

ベクトルの大きさの二乗を計算します

引数:

  | v | ベクトル

戻り値:
  ベクトルの大きさの二乗

static VECTOR VSub | ( | VECTOR | v1,
|  | VECTOR | v2 |
| ) |  |  | `[inline, static]`

二つのベクトルを引き算します。

引数:

  | v1 | 引かれるベクトル
  | v2 | 引くベクトル

戻り値:
  ベクトル同士を引き算した結果

static VECTOR VTransform | ( | VECTOR | v,
|  | MATRIX | m |
| ) |  |  | `[inline, static]`

ベクトルを行列で座標変換にかけます。

引数:

  | v | ベクトル
  | m | 変換行列

戻り値:
  変換結果

static VECTOR VTransformSR | ( | VECTOR | v,
|  | MATRIX | m |
| ) |  |  | `[inline, static]`

ベクトルを行列で座標変換にかけます。ただし、平行移動を行いません

引数:

  | v | ベクトル
  | m | 変換行列

戻り値:
  変換結果