Хай!
У меня каждый геометрический примитив имеет матрицу трансформации.
Для удобства пока что я храню две матрицы:
в локальных координатах, и в глобальных.
Также каждый объект имеет (или может иметь) родительский объект.
При любом обновлении координат текущего объекта, локальная матрица объекта текущего перемножается на глобальную матрицу родительского объекта, и получается т.о. глобальная матрица текущего объекта.
Вопрос: мне необходимо реализовать две функции:
трансформация локальных координат в глобальные (по сути это и есть вышеописанное перемножение матриц),
и трансформацию из глобальных координат в локальные.
Вот именно со вторым у меня случился затык.
Посоветуйте направление =)
Понимаю, что со словом "направление" я открываю ящик пандоры, ну штош, ну ладна)))

barbanel
> и трансформацию из глобальных координат в локальные.
Это умножение координат на обратную матрицу
Все равно не понял зачем две матрицы одному объекту, наверное я тупой.
Мне всегда одной хватало.
Объясните пожалуйста.
MikeNew
Не считать каждый раз обратную ?
Нужно умножить на обратную матрицу.
Конкретно для 3Д преобразований можно считать обратную матрицу более быстрым способом.
@!!ex
Ортонормирваность ?
Поворотная часть транспонированием, трансляционная часть - инверсией знака.
Поворотная часть транспонированием
Это как ? Обычно поворотная часть это 3х3 float.
Формулой можно показать ?
трансляционная часть
Это последние нижние 4 float матрицы или нет ?
@!!ex
Конкретно для 3Д преобразований можно считать обратную матрицу более быстрым способом.
Быстро это инверсия поворотной части матрицы ? Которая 3х3 float.
А не всю матрицу 4х4
ronniko
>Формулой можно показать ?
| e11 e12 e13 | | e11 e21 e31 |
| e21 e22 e23 | => | e12 e22 e32 |
| e31 e32 e33 | | e13 e23 e33 |nes
Это ты сделал так транспонирование ?
ronniko
Ага.
Выглядит просто.
Ага.
А ты всё правильно сделал ?
Напоминает directx matrix convert to opengl matrix.
ronniko
Транспонирование матрицы, это когда строки меняются местами со столбцами, сам посмотри.
Да нашел. Так и есть.
innuendo
> Не считать каждый раз обратную ?
Действительно. Ясно-понятно.
Тема в архиве.