두 개의 일반 벡터 사이의 x, y, z 회전을 찾습니다.
-
13-12-2019 - |
문제
3D 공간에 두 개의 사각형이 있습니다.x, y, z 각도를 찾고 싶습니다.나는 두 개의 사각형을위한 정상적인 벡터를 찾아서 시작했고, 나는 그들 사이의 각도를 얻는 방법을 알아 내려고 노력하고 있습니다.
XNA (C #) Vector3 객체를 사용하고 있습니다.
나는 다음과 같이 정상적인 벡터를 계산했다 :
Vector3 normal1 = (Vector3.Cross(sq1.corners[0] - sq1.corners[1], sq1.corners[0] - sq1.corners[2]));
Vector3 normal2 = (Vector3.Cross(sq2.corners[0] - sq2.corners[1], sq2.corners[0] - sq2.corners[2]));
.
Normal1이 Normal2
와 같은 방식으로 향하게하는 euler 회전을 찾고 싶습니다.해결책
먼저 축 및 회전량 (임의의 축을 가정)을 계산할 수 있습니다.
Vector3 axis = Vector3.Cross(normal1, normal2);
axis.Normalize();
double angle = Math.Acos(Vector3.Dot(normal1, normal2) / normal1.Length() / normal2.Length());
.
법선이 정규화되면 각도의 계산이
로 감소합니다.double angle = Math.Acos(Vector3.Dot(normal1, normal2));
.
제휴하지 않습니다 StackOverflow