예 각도로 생각할 필요없이 할 수 있습니다.
큐브가 있기 때문에 하나의 모서리를 선택한 다음 벡터로부터 방사되는 3 개의 모서리를 벡터 f0, f1, f2 (사용자가 선택한 모서리를 기준으로 한 방향 벡터입니다)라고 가정하십시오. 사람들을 정상화하고 매트릭스의 열로 쓰기 F
(f0x f1x f2x)
(f0y f1y f2y)
(f0z f1z f2z)
이제 당신이 회전하고 통화 할 큐브의 벡터 T0, T1, T2에 대해 동일한 것은 지금
T.
행렬 할 행렬 R = T * 역 (F)는 첫 번째 정육면체의 방향에서 두 번째 정사각형의 방향으로 회전하는 행렬이다 (inverse F는 예를 들어 f0에서 (1 0 0) '로 매핑되고, 0) '~ t0).
이것이 작동하는 이유를 알고 싶다면 좌표계 기본 벡터를 고려하십시오. XY 및 Z 축을 새 좌표계로 회전하려면 회전 행렬의 열이 벡터 원하는 (1 0 0) ', (0 1 0)'& (0 0 1) '이 매핑됩니다. T * Inverse (F)는 큐브를 원래 방향에서 축 정렬로, 그리고 원하는 방향으로 효과적으로 회전시킵니다.
(위의 코드는 열 벡터와 왼쪽의 OpenGL 스타일을 변환합니다 .Director3D는 행 벡터이고 오른쪽이 변형 된 것 같습니다.하지만 전환하는 방법은 분명해야합니다.)
또한 변환 요소가있는 4x4 행렬에도 똑같이 적용됩니다.
사실 그것은 큐브도 아닙니다. 강철 I- 섹션. 그러나 이것이 도움이 될 것입니다. 감사. –
확인. 요점은 로컬 좌표계를 정의해야한다는 것입니다. 단지 선만있는 경우 회전이 모호합니다. – timday
고마워, 팀. 나는 왜 이것이 선들에게 효과가 없어야하는지 이해하지 못했습니다. –