glm::rotate
을 사용하여 장면의 큐브에 대한 변형 행렬을 회전합니다.4x4 매트릭스를 회전하면 시간이 지남에 따라 스케일이 발생합니다.
"cube->t = glm::rotate(cube->t, stepTime * 50.f, glm::vec3(0.f, 1.f, 0.f));"
은 프레임 당 한 번 호출되며 여기서 cube->t
은 문제의 매트릭스입니다.
이상한 것은입니다 (I 대신 stepTime * 50.f
의 stepTime * 5000.f
에 의해 회전하는 경우 또는 두 개의 분) 20 분에 걸쳐,이 두 축에 배율이 동일 X 및 Z 축에 띄게 큐브 저울 항상 (큐브의 높이는 결코 바뀌지 않지만 너비와 깊이는 정확히 같은 양만큼 바뀝니다). 5000.f
의 경우, 작아지고, 통상적으로 50.f
또는 100.f
이 커짐.
나는 이것이 반올림 오류의 문제 일 수 있다고 생각했지만 그 이외에 무엇이 그 원인이 될 수 있는지 전혀 모른다. 이 반올림 오류가 있습니까? 행렬을 정규화하여 해결할 수 있습니까? glm은 행렬을 정규화하는 함수를 가지고 있습니까? 아니면 직접 작성해야합니까?
수학적 분석과 반복적 인 수치 결과 사이의 실제적인 차이점을 드러내는 흥미로운 질문을 던집니다. 나는 당신이 매트릭스를 표준화하는 것이 옳다고 생각합니다. – thb
반올림 오류가 발생하지만 yonks 용 OpenGL을 사용하지 않았습니다. 매트릭스를 정규화하면 아이디어처럼 들릴 수 있습니다. 회전 매개 변수를 다른 회전 벡터와 다르게 적용하는지 확인하려고 시도 했습니까? – Charleh
다른 벡터로 시도하지 않았습니다. 일단 내가 테스트 해보면 어떻게되는지 말해 줄께. – Miles