ページ 11

回転

Posted: 2010年7月15日(木) 23:48
by KEN
回転が上手くいきません


//ここで角度を回す
void rotateMatrix( float Rad )
{
//行列初期化
D3DXMatrixIdentity( &posMat );
D3DXMatrixIdentity( &rotMat );

D3DXMatrixRotationZ( &rotMat, Rad );

for( int i = 0; i < 4; i++ ){
//回転を座標変換で反映させる
D3DXVec2TransformCoord( &z, &z, &rotMat );
}

//変換した値を戻す
MoveMatrix( v, x1, y1, 0.0f );
void Dire()
{
//ここで角度を出す
//自分の位置 - 敵の位置

tmpRad = atan2( A.y - Z.y, A.x - Z.x );

}

宜しくお願いします 画像

Re:回転

Posted: 2010年7月16日(金) 17:24
by ookami
正直よく分かりませんが

この辺は参考になりますでしょうか。
http://www.ceres.dti.ne.jp/~ykuroda/oya ... sic3d.html
http://w3e.kanazawa-it.ac.jp/math/categ ... uretu.html

static float prevRad = tmpRad;
というのもなんだか怪しい気がしますが...

ところで、
http://eow.alc.co.jp/Dire/UTF-8/?ref=sa
Dire ... 「ものすごい」??

Re:回転

Posted: 2010年7月16日(金) 21:59
by Justy
 よくわからない点が多いです。
 CUSTOMVERTEXの型の詳細とか、どうしてその処理をしているのか、とか。


 特に
>D3DXMatrixTranslation( &posMat, v, v, 0 );
に関しては vは CUSTOMVERTEX *型ですが、v[0]とかすると float型になるような特殊な型なのでしょうか?


 で、ookamiさんの
>static float prevRad = tmpRad;
>というのもなんだか怪しい気がしますが...
は同感ですね。

 この処理が自機と敵の角度を見て真横に移動させる関数なのだとしたら
1回目のrotateMatrixの処理で自機の横に敵が移動しているのに
2回目の評価で古い角度(1回目の処理をする前の角度)との差をみて
何度傾けるかを決めているように見えます。

Re:回転

Posted: 2010年7月17日(土) 00:05
by KEN
さいしょからうち直したら治りました

皆さんありがとうございました 画像