を与え、私は次の座標によって定義されたキューブがあります。は私のOpenGLアプリケーションのために間違った結果
coords=new float [] {-0.5f,0.5f,0.5f,1f,
-0.5f,-0.5f,0.5f,1f,
0.5f,-0.5f,0.5f,1f,
0.5f,0.5f,0.5f,1f,
-0.5f,0.5f,-0.5f,1f,
-0.5f,-0.5f,-0.5f,1f,
0.5f,-0.5f,-0.5f,1f,
0.5f,0.5f,-0.5f,1f};
次の行列を表す:
-0.5 -0.5 0.5 0.5 -0.5 -0.5 0.5 0.5
0.5 -0.5 -0.5 0.5 0.5 -0.5 -0.5 0.5
0.5 0.5 0.5 0.5 -0.5 -0.5 -0.5 -0.5
1 1 1 1 1 1 1 1
私は定義を回転行列:
float [] matrix=new float[16];
Matrix.setRotateM(matrix,0,90,1,0,0);
は、だから私の行列は次のとおりです。
1 0 0 0
0 0 -1 0
0 1 0 0
0 0 0 1
私はMatrix.multiplyMM(coords,0,matrix,0,coords,0);
と座標に回転を適用しようとすると、私は次のような結果を得る:
-0,5 -0,5 0,5 0,5 -0,5 -0,5 0,5 0,5
-0,5 -0,5 -0,5 -0,5 0,5 -0,5 -0,5 0,5
0,5 -0,5 -0,5 0,5 -0,5 -0,5 -0,5 -0,5
1 1 1 1 1 1 1 1
、そして同様に私の電卓によると、6日と7日の要素を2番目の行は間違っています(両方とも正でなければなりません)。 3行目の5番目と8番目の要素についても同じです。
問題がどこにあるか教えていただけますか?
私が間違っている可能性が、どのように1は、1次元配列を使用して行列を表しているん:?マトリックスによってベクトルの集合を変換するには、適切なオフセットで
Matrix.multiplyMV
を繰り返し呼び出す必要がありますか – CKing@CKingこれは、行列が扱われる通常の方法です。 – QBrute
@QBrute私は従いません。 OPは1D配列を作成しますが、データを2D配列として表しますか? – CKing