Я заметил, что два дня назад у меня была какая-то странная странная проблема, когда моя библиотека превращала mat4 (матрица 4x4, строчный порядок) в quat (quaternion), когда у меня было 180 ° по осям z и 1 ° на х, все остальные значения работают нормально, то есть 180 ° и 2 ° или 179 ° и 1 ° и так далее ..Java, ошибка при добавлении
После некоторой глубокой отладки, я нашел проблему
double trace = 0, s, x, y, z, w;
trace = m.c0.x + m.c1.y + m.c2.z + 1;
Это должно вернуться trace = 0, данный
m.c0.x -1.0
m.c1.y -0.9998477
m.c2.z 0.9998477
trace 5.9604644775390625E-8
Бу Это не ... Почему?
я нашел временное решение, вычисляя след, как:
trace += m.c0.x;
trace += m.c1.y;
trace += m.c2.z;
trace += 1;
Во всяком случае я хотел бы знать причину для того, чтобы действовать соответствующим образом в будущем
Ps: Я пытался преобразовать его в два раза, они раньше плавали, но ничего не изменилось. Here полный код
Характеристики: Java 7 x64 на Win7 x64.
Типы с плавающей запятой 'float' и' double' не являются бесконечно точными. См. Http://floating-point-gui.de/ – Jesper