DXライブラリで行列を使って移動させたあとのモデルの座標を知るにはどうすればいいのでしょうか?
//MPos モデルの座標
void Target::Roll(int Pad)
{
//-----左右回転-----//
//R1を押したら
if((Pad & PAD_INPUT_6) && !(Pad & PAD_INPUT_5)){
//回転させる角度を右へ(+)
Angle = DX_PI_F/180.0f;
}
//L1を押したら
if((Pad & PAD_INPUT_5) && !(Pad & PAD_INPUT_6)){
//回転させる角度を左へ(-)
Angle = DX_PI_F/-180.0f;
}
//どっちも押されてたら
if((Pad & PAD_INPUT_6) && (Pad & PAD_INPUT_5)){
Angle = 0;
}
//どっちも押されてなければ
if(!(Pad & PAD_INPUT_6) && !(Pad & PAD_INPUT_5)){
Angle = 0;
}
ModelAngle = ModelAngle + Angle;
//モデルの角度が360ならゼロに戻す
if((ModelAngle == DX_PI_F*2) || (ModelAngle == -DX_PI_F*2)){
ModelAngle=0;
}
m1 = MGetRotY(ModelAngle);//回転
m2 = MGetTranslate(MPos);//平行移動
m3 = MMult(m2,m1);//行列を掛け合わす
MV1SetMatrix(MHandle,m3);//行列をモデルに設定
こんな感じにプログラミングするとモデルは原点を中心に常に原点に一方向を見せながらMPos分離れて回ります。
(ちょうど地球を中心に回る月みたいな感じです)
ここで回転するということは座標が変化してるわけですが、その変化した後のワールド座標を知りたいのです。
行列で計算して出すのならどんな計算をすればいいのか知りたいです。
よろしくお願いします。
環境 Windows7 Visual Studio2008 C++ DXライブラリ