2013-08-14 2 views
2

프로젝트에서 나는 입력으로 3D 공간에서 선을 형성하는 두 점을 취하고 선으로 평행하게 만드는 회전 행렬을 출력으로 제공해야합니다 Z 축으로3D 공간에서의 회전

나는 회전 각 행렬을 오일러 각에서 작성하는 방법을 충분히 배웠습니다. 그러나 나는 입력 라인의 정확한 각도를 찾는 방법에 대해 난감합니다.

누구든지 조언을 제공해 줄 수 있습니까? 저는 이것을 MATLAB에 쓰고 있지만 이론적 인 치료가 더 가치 있다고 생각합니다.

답변

3

편집 : 답변이 충분하지 않아 답변을 수정했습니다. 그리고 오일러 각을 사용하는 대신이 방법으로 행렬을 만들 수 있습니다.

다른 벡터를 사용하여 행렬을 구성하려면 Z 벡터를 얻고 교차 곱을 사용하십시오. 회전 행렬을 구성하는 과정을 설명

Vec3 start; // start of the line 
Vec3 end; // end of the line 

Vec3 Z = end - start; 
Z.normalize(); 

Vec3 X = Vec3(0,1,0).cross(Z); 
X.normalize(); 

Vec3 Y = Z.cross(X); 
Y.normalize(); 

// here's the 3X3 rotation matrix 
_m11 = X.x; _m12 = Y.x; _m13 = Z.x; 
_m21 = X.y; _m22 = Y.y; _m23 = Z.y; 
_m31 = X.z; _m32 = Y.z; _m33 = Z.z; 

링크 : http://nghiaho.com/?page_id=846.

+0

답장을 보내 주셔서 감사합니다. 회전을 정의하는 데 필요한 다른 각도를 얻으려면 어떻게해야합니까? 제가 정확히 이해한다면, 단 하나의 각도만으로도 이중 원뿔 표면에서 회전 지점에 대한 일련의 해결책을 얻을 수 있을까요? –

+0

오일러 각 구성 및 분해에 대한 링크가 유용했습니다., 감사합니다 –

+0

업데이트 된 답변에 감사드립니다! 매트릭스를 만들기 위해 교차 제품을 사용하는 아이디어가 마음에 들었습니다. 이전에 그것에 대해 생각하려고했던 방식보다 훨씬 더 의미가 있습니다! –