Android Matrix.rotateM приводит к NaN - PullRequest
2 голосов
/ 09 июля 2011

Я пытаюсь сделать Matrix.rotateM (); и я заметил, что если все параметры рядом с самой матрицей равны 0.0f, тогда Матрица испортится с некоторыми значениями NaN.

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

Результаты в такой матрице.

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

Перед вращением матрица выглядит следующим образом

[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]

Но если мой вызов Matrix.rotateM () содержит значения, которые не равны 0.0f, тогда матрица выглядит нормально. Это ожидаемое поведение? Или я что-то не так делаю?

1 Ответ

3 голосов
/ 09 июля 2011

Как указано в документе:

Вращает матрицу m на угол a (в градусах) вокруг оси (x, y, z)

ось, вокруг которой вы пытаетесь вращаться, равна нулю.Нет возможности вращаться вокруг нулевой оси, он просто не знает, как вращаться, и терпит неудачу.Я обычно использую 1.0f для x, y или z, и 0.0f для другого 2. Это дает вам вращение вокруг данной оси.

...