私はそれが回転マトリックスローテーションで何が問題になりますか?
(float) Math.atan2(-camX.getXf() * padX, -camDir.getZf() * padY)
Y
と
-MathUtils.HALF_PI
Z
しかし
model.setRotation(new Matrix3(1,0,0,
0,(float) Math.atan2(-camX.getXf() * padX, -camDir.getZf() * padY),0,
0,0,-MathUtils.HALF_PI));
でモデルを回転しようとしています(それはmd2モデルなので、横向きですが)Z軸を回転させても、それは右上がりにはなりません。どんな考え?
それぞれの変数は、マトリックスのそれぞれの領域にあります。
EDIT:大丈夫、今私はこのコードを使用しています:
float x = 0;
float y = (float) Math.atan2(-camX.getXf() * padX, -camDir.getZf() * padY);
float z = (float) -MathUtils.HALF_PI;
float a = (float) Math.sin(x);
float A = (float) Math.cos(x);
float b = (float) Math.sin(y);
float B = (float) Math.cos(y);
float c = (float) Math.sin(z);
float C = (float) Math.cos(z);
Matrix3 m = new Matrix3(A*b, -(B*a),b,
(C*a)+(A*b*c), (A*C)-(a*b*c), -(B*c),
(a*c)-(A*C*b), (A*c)+(C*a*b), B*C);
しかし、今の軸のどれが正しく回転されていません。
xx, xy, xz,
yx, yy, yz,
zx, zy, zz
私はcom.threed.jpct.Matrixを使用していません:( x軸とy軸を使用して2つのデカルト座標をどのように使用すればよいですか?IEではx軸とy軸を使用しています。それ以外の軸を0にリセットします。 – William
あなたは何を使っていますか?無理矢理行くことができます:a = sin x、A = cos x、b = sin y、B = cos y、c = sin z、C = cos zとすると、行列{(AB、-Ba、b)、(Ca + Abc、AC-abc、-Bc)、(ac-ACb、Ac + Cab、BC)}を試す。私の計算は正しいです。回転Xとxに対応し、次に回転Yをy、回転Zをzとします。 –
ああ、matMultを使って行列を乗算することもできます。それを回転させて、恒等行列をとり、rotateZして、それらを整列させてください。 –