Quaternion.cpp

Summary
Quaternion.cpp
Functions
QInitクォータニオンを引数で指定した数値で初期化
QGenRot回転クォータニオンqを生成 q = {cos(r/2):x*sin(r/2),y*sin(r/2),z*sin(r/2)}
QConjugation共役クォータニオンを生成
QMultクォータニオンの積を求める
QRotクォータニオンによる回転ベクトル演算
QtoRクォータニオンqを回転行列rへ変換
QtoRクォータニオンqを回転行列rへ変換(オーバーロード)
QCopyクォータニオンのコピー p <- q
QtoCクォータニオンの3つの虚部をCoord構造体に代入する
CtoQクォータニオン実部を0、虚部をCoordとしてクォータニオンを生成
QSlerpクォータニオンによる球面線形補間

Functions

QInit

Quat QUATERNION::QInit(double t,
double x,
double y,
double z)

クォータニオンを引数で指定した数値で初期化

Parameters

t実部 x,y,z -虚部

Return

初期化されたQuat

QGenRot

Quat QUATERNION::QGenRot(double r,
double x,
double y,
double z)

回転クォータニオンqを生成 q = {cos(r/2):x*sin(r/2),y*sin(r/2),z*sin(r/2)}

Parameters

r回転角[rad]
x,y,z回転軸ベクトル

Return

回転クォータニオンq

QConjugation

Quat QUATERNION::QConjugation(Quat q)

共役クォータニオンを生成

Parameters

qクォータニオン

Return

qの共役クォータニオン

QMult

Quat QUATERNION::QMult(Quat p,
Quat q)

クォータニオンの積を求める

Parameters

p,qp x q

Return

計算結果

QRot

Quat QUATERNION::QRot(Quat r,
Quat p,
Quat q)

クォータニオンによる回転ベクトル演算

Parameters

rqの共役クォータニオン
p回転したい座標値を持ったクォータニオン
q回転クォータニオン

Return

計算結果

QtoR

void QUATERNION::QtoR(double r[],
Quat q)

クォータニオンqを回転行列rへ変換

Parameters

r[16]4*4行列を1次元配列で表現したもの
q変換するクォータニオン

QtoR

void QUATERNION::QtoR(double r[],
double t,
double x,
double y,
double z)

クォータニオンqを回転行列rへ変換(オーバーロード)

Parameters

r[16]4*4行列を1次元配列で表現したもの
t,x,y,z変換するクォータニオンの要素表現

QCopy

Quat QUATERNION::QCopy(Quat q)

クォータニオンのコピー p <- q

Parameters

qコピー元クォータニオン

Return

コピー先クォータニオン

QtoC

Coord QUATERNION::QtoC(Quat q)

クォータニオンの3つの虚部をCoord構造体に代入する

Parameters

q代入するクォータニオン

Return

クォータニオン虚部(x,y,z)をそのままCoord値(x,y,z)としたもの

CtoQ

Quat QUATERNION::CtoQ(Coord a)

クォータニオン実部を0、虚部をCoordとしてクォータニオンを生成

Parameters

a虚部となるCoord値

Return

生成されたクォータニオン

QSlerp

Quat QUATERNION::QSlerp(Quat p,
Quat q,
double t)

クォータニオンによる球面線形補間

2つのベクトルp(t=0)、q(t=1)間をtで指定した内分上に球面線形補間する. p,qは単位ベクトルであること.

Parameters

p, q分割したい両端の点の座標を虚部としたクォータニオン
t内分比

Return

補間された点を表すクォータニオン

Quat QUATERNION::QInit(double t,
double x,
double y,
double z)
クォータニオンを引数で指定した数値で初期化
Quat QUATERNION::QGenRot(double r,
double x,
double y,
double z)
回転クォータニオンqを生成 q = {cos(r/2):x*sin(r/2),y*sin(r/2),z*sin(r/2)}
Quat QUATERNION::QConjugation(Quat q)
共役クォータニオンを生成
Quat QUATERNION::QMult(Quat p,
Quat q)
クォータニオンの積を求める
Quat QUATERNION::QRot(Quat r,
Quat p,
Quat q)
クォータニオンによる回転ベクトル演算
void QUATERNION::QtoR(double r[],
Quat q)
クォータニオンqを回転行列rへ変換
Quat QUATERNION::QCopy(Quat q)
クォータニオンのコピー p <- q
Coord QUATERNION::QtoC(Quat q)
クォータニオンの3つの虚部をCoord構造体に代入する
Quat QUATERNION::CtoQ(Coord a)
クォータニオン実部を0、虚部をCoordとしてクォータニオンを生成
Quat QUATERNION::QSlerp(Quat p,
Quat q,
double t)
クォータニオンによる球面線形補間