내 장면에 gluDisk()
을 사용하여 평면 디스크를 그립니다. gluDisk()
은 디스크가 양의 Z 축 방향을 향하게하지만 나는 임의의 정상적인 방향에 직면하고 싶습니다.
분명히 디스크를 올바로 마주 치게하려면 glRotate()
을 사용해야하지만 회전해야하는 것은 무엇입니까? Quaternions를 사용하여 계산할 수 있지만 수학을 기억할 수는 없다는 것을 기억합니다.회전에 대한 쿼터니언 수학?
답변
솔루션은 상당히 단순해야하며 쿼런 티온이 필요하지 않습니다.
Normal1에서 Normal2로 회전하는 축은 양쪽 모두와 직각이어야하므로 벡터 교차 제품을 사용하십시오.
회전 량은 내적 물에서 쉽게 파생됩니다. 이 값은 | A |. | B | .cos (theta)입니다. 그러나 두 법선 벡터를 정규화해야하므로 cos (theta)가됩니다. 따라서 회전 양을 얻기 위해 역 코사인을 취하십시오.
결과 벡터 및 각도는 의 필수 매개 변수입니다. 실제 회전 행렬을 직접 계산할 필요가 없습니다.
p.s. glRotate()
이 각도를 필요로한다는 것을 잊지 마라. 그러나 일반적인 C trig 함수는 라디안으로 작동한다.
쿼터니언은 축을 중심으로 한 회전을 나타냅니다. <w,x,y,z>
은 w
의 크기와 벡터의 크기 사이의 균형에 따라 어느 정도의 양의 축 주위로 회전합니다 (<x,y,z>
).
<cos θ/2, x*sin θ/2, y*sin θ/2, z*sin θ/2>, where |<x, y, z>| = 1
예를 들어 양의 Y 축을 향하도록 회전 시키려면 X 축을 중심으로 90 ° 회전해야합니다. 벡터는 <0, 1, 0>
이고 쿼터니온은 <cos 90°, 0, sin 90°, 0>
= <0, 0, 1, 0>
이됩니다.
그림을 양의 Z 축 방향에서 벡터 <x,y,z>
방향으로 회전하려면 회전 벡터와 회전 각도를 찾아야합니다. 회전 축을 찾으려면 현재 벡터의 교차 곱과 원하는 위치를 가져올 수 있습니다.
양의 Z 축 방향을 기준으로하면 현재 벡터는 <0, 0, 1>
입니다. <x,y,z>
을 원하면 회전 축은 <0, 0, 1> x <x, y, z> = <-y, x, 0>
이고 각도는 arctan(sqrt(x^2+y^2),z)
이됩니다. 사원 수는 임의의 축을 중심
<cos(θ/2), -y*sin(θ/2), x*sin(θ/2), 0>, where θ = arctan(sqrt(x^2+y^2), z)
회전된다 :
q0 = cos(r/2)
q1 = sin(r/2) a
q2 = sin(r/2) b
q3 = sin(r/2) c
하고 : 라디안 단위 벡터 U 각도 R 주어를 = + BJ + CK 또는 [A, B가 C]는, 정의 인공 지능 이 값에서 회전 행렬 구성 :
(q0^2+q1^2 - q2^2 - q3^2 | 2*(q1*q2 - q0*q3) | 2*(q1*q3 + q0*q2) )
Q =(2*(q2*q1 + q0*q3) | (q0^2 - q1^2 + q2^2 - q3^2) | 2*(q2*q3 - q0*q1) )
(2*(q3*q1 - q0*q2) | 2*(q3*q2 + q0*q1) | q0^2 - q1^2 - q2^2 + q3^2)
은 당신이 할 필요가 회전을 찾으려면을, 현재 벡터와 목표 벡터의 외적을 계산할 수 있습니다. 직교 벡터 (쿼터니온을 생성하기위한 회전 벡터)를 얻을 수 있으며이 벡터의 길이는 시작점과 대상 벡터가 겹치도록 보정해야하는 각도의 죄입니다.
- 1. 슬라이더 회전에 대한 질문
- 2. 쿼터니언 보간 속도 매칭
- 3. 회전에 모달보기
- 4. MKMapView 회전에 대한 응답으로 iOS rotate MKAnnotationView
- 5. .Net에서 포인트 회전에 관한 수학에 대한 질문입니다.
- 6. OpenGL ES 학습 - 회전에 대한 약간의 질문
- 7. 여러보기가 관련된 경우 회전에 대한 질문
- 8. AdWhirl 회전에 Mobfox 추가
- 9. 오일러 각 및 쿼터니언 방향
- 10. PHP의 수학 방정식에 대한 정규식
- 11. Django 주석에 대한 수학 연산
- 12. CBasicAnimation을 사용하여 오브젝트의 중심을 중심으로 한 회전에 대한 질문
- 13. 수학 학습을위한 언어 - "평신도를위한 수학"
- 14. 수식 선형 수학 방정식에 대한 해법
- 15. 수학 연산
- 16. 보기에 수학 표기법 및 수학 질문 표시?
- 17. 수학 수식을 작성하려면 수학 편집기가 필요합니다.
- 18. 사용자 지정 UIViewController가 장치 회전에 응답하지 않습니다.
- 19. 안드로이드에서 X 축 회전에 관한 질문
- 20. Sprite의 회전에 선형 임펄스 적용 - Cocos2d/Box2D
- 21. 커브의 회전에 의한 3D 플롯 생성
- 22. 이미지 회전에 가장 적합한 보간법은 무엇입니까?
- 23. 중첩 된 UIViewController가 기기 회전에 응답하지 않습니다.
- 24. 수학 비교
- 25. 수학 연산자는
- 26. 수학 문제
- 27. 수학 문제는
- 28. 바이너리 수학
- 29. 컴퓨터의 수학
- 30. 모든 기본 벡터에 평행 또는 수직 인 오브젝트 쿼터니언
고맙습니다. 완벽하게 작동했습니다. – shoosh