2011-07-09 4 views
2

Im essayant de faire un Matrix.rotateM(); et j'ai remarqué que si tous les paramètres à côté de la matrice elle-même est 0.0f alors la matrice va être foiré avec certaines valeurs de NaN.Android Matrix.rotateM résultats dans NaN

mModelMatrix = new float[16]; 
Matrix.setIdentityM(mModelMatrix, 0); 
Matrix.rotateM(mModelMatrix, 0, 0.0f, 0.0f, 0.0f, 0.0f); 

Résultats dans une matrice de ce type.

[NaN, NaN, NaN, 0.0] 
[NaN, NaN, NaN, 0.0] 
[NaN, NaN, NaN, 0.0] 
[NaN, NaN, NaN, 1.0] 

Avant la rotation de la matrice ressemble à ceci

[1.0, 0.0, 0.0, 0.0] 
[0.0, 1.0, 0.0, 0.0] 
[0.0, 0.0, 1.0, 0.0] 
[0.0, 0.0, 0.0, 1.0] 

Mais si mon appel à Matrix.rotateM() contient des valeurs qui ne sont pas 0.0f alors la matrice semble bien. Est-ce un comportement attendu? Ou est-ce que je fais quelque chose de mal?

Répondre

3

Comme indiqué dans le doc:

matrice Pivote m en place par l'angle d'un (en degrés) autour de l'axe (x, y, z)

L'axe que vous essayez tourner autour est nul. Il n'y a aucun moyen de tourner autour d'un axe nul, il ne sait pas comment faire pivoter, et échoue. J'utilise généralement 1.0f pour x, y ou z, et 0.0f pour les autres 2. Cela vous donne une rotation autour d'un axe donné.