QUAフォーマットをちょっとだけ見た

QUAのフォーマットが公開されましたので、ちょっとだけ見てました。



解析をしてみたい場合は、普通にC言語で構造体を使って、
バイナリ読み出しをするのが一番いいと思います。
が、最初、私は、HSPでフォーマットの解析を行ってました。
(途中まで行って、面倒になってやめましたが)



なんで、そんなことをしたかというと、
ソースを公開したときに、DirectX SDKをインストールしていない人でも、
解析できるようにしたかったからなんですが、





よくよく考えたら、C言語で書いても、以下のように置き換えれば、
特別なヘッダーが必要ない(DirectX SDKが必要ない)気がしてきましたorz



D3DXVECTOR3 hogehoge;

float hogehogeX;
float hogehogeY;
float hogehogeZ;



D3DXVECTOR2 foofoo;

float foofooX;
float foofooY;



CQuaternionっていうのは、よくわからない構造体ですが、
float barT;
float barX;
float barY;
float barZ;
って置き換えればいいのかな?



あと、QUAでは、基本的な姿勢はクォータニオン指定らしいので、
オイラー角も使っているけど、クォータニオンから変換している)
クォータニオンを勉強しないと、姿勢を与えることができませんですね。



とりあえず、調べて分かったのは、


1.クォータニオンは、四元数とも呼ばれている
2.クォータニオンは、回転の軸が(α, β, γ)のとき、θ回す回転を表す四元数
  RPQと掛け算する。このとき、
  P = (0; x, y, z)
  Q = (cos(θ/2); α sin(θ/2), β sin(θ/2), γ sin(θ/2))  
  R = (cos(θ/2); -α sin(θ/2), -β sin(θ/2), -γ sin(θ/2))


ということです。



なんだか、クォータニオンって、同次変換行列に似てますね。
sin(θ/2)とか、cos(θ/2)とかが乗算されている理由がよくわかりませんが。



とりあえず、
1)QUA読み出し → CSVファイル作成
2)CSV → QUAフォーマット生成
3)他形式のファイルなど → 2)の形式のCSV作成
という3段階を踏んで、QUAに反映させてみたいな。



1)と2)は、自分でやらなくても、いずれ公式でサポートされると思いますが・・・




ちなみに、HSPでやってみた様子を知りたい方は こちらからどうぞ
www.geocities.jp/yonkoushi/quaview.zip
たぶん、どこかでバイト数の計算が間違っていて、途中から変になります。