Я пытаюсь создать матрицу поворота вокруг оси Х, используя GLM :: GTC :: matrix_transform :: поворот:матрица вращения GLM отличается от ожидаемого результата
glm::rotate(glm::mat4f(1.0f), glm::radians(90.f), glm::vec3f(1.f, 0.f, 0.f));
Я ожидал, что результирующая матрица будет (поступательные смещения удалены):
1, 0, 0
0, cos(90), -sin(90)
0, sin(90), cos(90)
0, 0, 0
(смотри, например https://en.wikipedia.org/wiki/Rotation_matrix#Basic_rotations)
Однако результат немного смещен, то есть:
1, 0, 0
0, 0.9996240, -0.0274121
0, 0.0274121, 0.9996240
0, 0, 0
Я посмотрел https://github.com/g-truc/glm/blob/master/glm/gtc/matrix_transform.inl, и, конечно же, реализация использует странный коэффициент c + (1 - c), который объясняет результаты.
Вопрос сейчас, почему? Почему определение матрицы вращения glm отличается? Какова теория этого?
glm не использует «странный фактор», он использует хорошо известную формулу для поворота вокруг произвольной оси (которая будет просто на основе поворотов при выборе этой конкретной оси). Обратите внимание, что общая формула приведена в той же самой статье wikipedia, которую вы уже связали. Совершенно неясно, что вы делаете, я не могу воспроизвести этот эффект с помощью glm. – derhass