# 固定小数関連 API 機能一覧

## データ型

### 固定小数型

fx16 |  | 整数部 3ビット小数部12ビットの符号付固定小数を表す型です。
fx32 |  | 整数部19ビット小数部12ビットの符号付固定小数を表す型です。
fx64 |  | 整数部51ビット小数部12ビットの符号付固定小数を表す型です。
fx64c |  | 整数部31ビット小数部32ビットの符号付固定小数を表す型です。

### 行列・ベクトル型

MtxFx22 |  | 2x2行列で要素の型はfx32です。
MtxFx33 |  | 3x3行列で要素の型はfx32です。
MtxFx43 |  | 4x3行列で要素の型はfx32です。
MtxFx44 |  | 4x4行列で要素の型はfx32です。
VecFx32 |  | 3次元ベクトルで要素の型はfx32です。
VecFx16 |  | 3次元ベクトルで要素の型はfx16です。

## 初期化

FX_Init |  | 固定小数APIの初期化です。

## 計算

### 固定小数の計算

FX_Whole |  | 小数点以下を切り捨て結果を整数として返します。
FX_Floor |  | 小数点以下を切り捨てます。
FX_Modf |  | fx32型を整数部と小数部に分割します。
FX_Mul |  | fx32型同士の乗算を行います。
FX_Mul32x64c |  | fx32型とfx64c型の乗算を行います。
FX_Div |  | fx32型同士の除算を行います。
FX_DivFx64c |  | fx32型同士の除算を行い、結果をfx64c型で返します。
FX_Mod |  | fx32型同士で除算を行い、剰余を返します。
FX_Sqrt |  | fx32型の平方根を計算します。
FX_InvSqrt |  | fx32型の平方根の逆数を計算します。
FX_Inv |  | fx32型の逆数を計算します。
FX_InvFx64c |  | fx32型の逆数を計算し、結果をfx64c型で返します。
FX_SinIdx |  | 正弦を計算します。16ビットのインデックスを受け取り、結果をfx16型で返します(テーブル引き)。
FX_CosIdx |  | 余弦を計算します。16ビットのインデックスを受け取り、結果をfx16型で返します(テーブル引き)。
FX_SinFx64c |  | 正弦を計算します。fx32型でラジアンを受け取り、結果をfx64c型で返します(精度が必要な場合)。
FX_CosFx64c |  | 余弦を計算します。fx32型でラジアンを受け取り、結果をfx64c型で返します(精度が必要な場合)。
FX_AtanIdx |  | 逆正接を計算します。fx32型を受け取り、結果をu16型で返します（テーブル引き）
FX_Atan2Idx |  | 逆正接を計算します。(y,x)をfx32型で受け取り、結果をu16型で返します(テーブル引き)
FX_Atan |  | 逆正接を計算します。fx32型を受け取り、結果をfx16型(ラジアン単位)で返します（テーブル引き）
FX_Atan2 |  | 逆正接を計算します。(y,x)をfx32型で受け取り、結果のfx16型(ラジアン単位)で返します(テーブル引き)
FX_AsinIdx |  | 逆正弦を計算します。fx32型を受け取り、結果をu16型で返します（テーブル引き）
FX_AcosIdx |  | 逆余弦を計算します。fx32型を受け取り、結果をu16型で返します（テーブル引き）

### 固定小数の計算（非同期版）

FX_DivAsync |  | 非同期の除算を行います。
FX_DivAsyncImm |  | 非同期の除算を行います。除算モードの設定も行いません。
FX_GetDivResultFx64c |  | 除算の計算結果をfx64c型で取得します。
FX_GetDivResult |  | 除算の計算結果をfx32型で取得します。
FX_InvAsync |  | 非同期で逆数の計算を行います。
FX_InvAsyncImm |  | 非同期で逆数の計算を行います。除算モードの設定も行いません。
FX_GetInvResultFx64c |  | FX_GetDivResultFx64cと同様です。
FX_GetInvResult |  | FX_GetDivResultと同様です。
FX_SqrtAsync |  | 非同期で平方根計算を行います。
FX_SqrtAsyncImm |  | 非同期で平方根計算を行います。平方根演算モードの設定も行いません。
FX_GetSqrtResult |  | 平方根計算の結果をfx32型で取得します。

### 2x2行列計算

MTX_Identity22 |  | 単位行列をセットします。
MTX_Transpose22 |  | 転置行列をセットします。
MTX_Scale22 |  | スケール行列をセットします。
MTX_ScaleApply22 |  | スケール行列を左から乗じます。
MTX_Rot22 |  | 回転行列をセットします。
MTX_Inverse22 |  | 逆行列を求めます。
MTX_Concat22 |  | 行列の乗算を行います。
MTX_Copy22 |  | 行列をコピーします。

### 3x3行列計算

MTX_Identity33 |  | 単位行列をセットします。
MTX_Copy33To43 |  | 行列をコピーします。
MTX_Copy33To44 |  | 行列をコピーします。
MTX_Transpose33 |  | 転置行列をセットします。
MTX_Scale33 |  | スケール行列をセットします。
MTX_ScaleApply33 |  | スケール行列を左から乗じます。
MTX_RotX33 |  | X軸に関する回転行列をセットします。
MTX_RotY33 |  | Y軸に関する回転行列をセットします。
MTX_RotZ33 |  | Z軸に関する回転行列をセットします。
MTX_RotAxis33 |  | 任意の軸に関する回転行列をセットします。
MTX_Inverse33 |  | 逆行列を求めます。
MTX_Concat33 |  | 行列の乗算を行います。
MTX_MultVec33 |  | 行列にベクトルを左から乗じます。
MTX_Copy33 |  | 行列をコピーします。

### 4x3行列計算

MTX_Identity43 |  | 単位行列をセットします。
MTX_Copy43To33 |  | 行列をコピーします。
MTX_Copy43To44 |  | 行列をコピーします。
MTX_Transpose43 |  | 転置行列をセットします。
MTX_Scale43 |  | スケール行列をセットします。
MTX_ScaleApply43 |  | スケール行列を左から乗じます。
MTX_RotX43 |  | X軸に関する回転行列をセットします。
MTX_RotY43 |  | Y軸に関する回転行列をセットします。
MTX_RotZ43 |  | Z軸に関する回転行列をセットします。
MTX_RotAxis43 |  | 任意の軸に関する回転行列をセットします。
MTX_Inverse43 |  | 逆行列を求めます。
MTX_Concat43 |  | 行列の乗算を行います。
MTX_MultVec43 |  | 行列にベクトルを左から乗じます。
MTX_TransApply43 |  | 行列に平行移動行列を左から乗じます。
MTX_LookAt |  | 行列にカメラ行列を設定します。
MTX_Copy43 |  | 行列をコピーします。

### 4x4行列計算

MTX_Identity44 |  | 単位行列をセットします。
MTX_Copy44To33 |  | 行列をコピーします。
MTX_Copy44To43 |  | 行列をコピーします。
MTX_Transpose44 |  | 転置行列をセットします。
MTX_Scale44 |  | スケール行列をセットします。
MTX_ScaleApply44 |  | スケール行列を左から乗じます。
MTX_RotX44 |  | X軸に関する回転行列をセットします。
MTX_RotY44 |  | Y軸に関する回転行列をセットします。
MTX_RotZ44 |  | Z軸に関する回転行列をセットします。
MTX_RotAxis44 |  | 任意の軸に関する回転行列をセットします。
MTX_Concat44 |  | 行列の乗算を行います。
MTX_TransApply44 |  | 行列に平行移動行列を左から乗じます。
MTX_Frustum |  | 射影行列をセットします。
MTX_Perspective |  | 射影行列をセットします
MTX_Ortho |  | 射影行列をセットします。
MTX_FrustumW |  | 射影行列をセットします。（scaleWパラメータ付）
MTX_PerspectiveW |  | 射影行列をセットします（scaleWパラメータ付）
MTX_OrthoW |  | 射影行列をセットします。（scaleWパラメータ付）
MTX_Copy44 |  | 行列をコピーします。

### ベクトル計算

VEC_Set |  | fx32型の3次元ベクトルに値を設定します。
VEC_Add |  | 2つのfx32型の3次元ベクトルを加算します。
VEC_Subtract |  | 2つのfx32型の3次元ベクトルを減算します。
VEC_DotProduct |  | fx32型の3次元ベクトルの内積を計算します。
VEC_CrossProduct |  | fx32型の3次元ベクトルの外積を計算します。
VEC_Mag |  | fx32型の3次元ベクトルの長さを求めます。
VEC_Distance |  | fx32型の2つの3次元ベクトル間の距離を求めます。
VEC_Normalize |  | fx32型の3次元ベクトルを正規化します。
VEC_MultAdd |  | fx32型の3次元ベクトルのスカラー倍してfx32型の3次元ベクトルを加算します。
VEC_MultSubtract |  | fx32型の3次元ベクトルのスカラー倍してfx32型の3次元ベクトルを減算します。
VEC_Fx16Set |  | fx16型の3次元ベクトルに値を設定します。
VEC_Fx16Add |  | 2つのfx16型の3次元ベクトルを加算します。
VEC_Fx16Subtract |  | 2つのfx16型の3次元ベクトルを減算します。
VEC_Fx16DotProduct |  | fx16型の3次元ベクトルの内積を計算します。
VEC_Fx16CrossProduct |  | fx16型の3次元ベクトルの外積を計算します。
VEC_Fx16Mag |  | fx16型の3次元ベクトルの長さを求めます。
VEC_Fx16Distance |  | fx16型の2つの3次元ベクトル間の距離を求めます。
VEC_Fx16Normalize |  | fx16型の3次元ベクトルを正規化します。

### その他

FX_DivS32 |  | s32型同士の除算を行います。
FX_ModS32 |  | s32型同士の剰余を求めます。

## マクロ

fx16型用のマクロ

fx32型用のマクロ

fx64型用のマクロ

fx64c型用のマクロ

## 定数

fx16型の定数マクロ

fx32型の定数マクロ

fx64c型の定数マクロ