opengl 회전 예제

마찬가지로 [0 0 0 0 1] (w=1)은 각도 = 2 * acos (1) = 0을 의미하므로 회전이 전혀없는 단위 쿼터니온입니다. 쿼터니온은 이러한 문제를 해결하는 회전을 나타내는 도구입니다. 회전에 대한 기사를 읽는 동안 어휘 때문에 혼란 스러울 수 있습니다. 이 자습서에서: 이 형식은 확실히 Euler 각도 보다 덜 직관적, 하지만 그것은 여전히 읽을 수: xyz 구성 요소는 대략 회전 축 일치, 그리고 w 회전 각도의 acos (2로 분할). 예를 들어 디버거에 [0.7 0 0 0.7]이라는 값이 표시되어 있다고 가정해 보겠습니다. x = 0.7, y와 z보다 크므로 X 축을 중심으로 주로 회전하는 것을 알 수 있습니다. 및 2 * acos (0.7) = 1.59 라디안, 그래서 90 °의 회전입니다. 당신은 하지 않습니다. 쿼터니온을 회전 행렬로 변환하고 모델 매트릭스에서 사용합니다.

정점이 MVP 행렬과 함께 평소와 같이 회전됩니다. 이 튜토리얼은 OpenGL의 범위를 조금 벗어나지만 그럼에도 불구하고 매우 일반적인 문제를 해결합니다 : 회전을 나타내는 방법 ? 따라서 본질적으로 쿼터니온은 회전 축과 회전 각도를 저장하여 회전을 쉽게 결합할 수 있도록 합니다. 즉, 회전을 적용하면 방향이 변경됩니다. 둘 다 동일한 도구로 표현될 수 있으며, 이로 인해 혼란이 야기됩니다. 이제 시작해 봅시다… 회전 중심은 항상 원점입니다. 다른 점을 중심으로 회전하려면: 자습서 3 – 행렬에서 행렬은 특정 축을 중심으로 점을 회전할 수 있다는 것을 배웠습니다. 행렬은 정점을 변환하는 깔끔한 방법이지만 행렬을 처리하는 것은 어렵습니다. 이 예제에서 어떤 일이 발생하는지 여전히 이해하지 못하는 경우 세 개의 삼각형 구현에 있는 glTranslatef() 메서드의 값을 사용해 보십시오. 예를 들어 녹색 삼각형의 경우 glTranslatef(5.0f, 0.0f, 0.0f)와 glTranslatef(0.0f, -5.0f, 0.0f)를 사용하는 파란색 삼각형으로 값을 변경합니다.

이러한 3개의 회전은 일반적으로 이 순서로 연속적으로 적용됩니다: 첫 번째 Y, 다음 Z, X(반드시 그런 것은 아님). 다른 순서를 사용하면 다른 결과가 생성됩니다. 쿼터니온은 다음과 같은 방식으로 회전을 나타내는 4개의 숫자 [x y z w]의 집합입니다: 이 메서드는 X, Y 및 Z의 3축을 중심으로 회전하도록 설계되었습니다.