2010-04-29 6 views
0

Euler의 좌표계에서 변환하는 방법 E1 = (x1, y1, z1, yaw1, pitch1, roll1) 에서 E2 = (x2, y2, z2, yaw2, pitch2, roll2) 여기서 x, y, z는 점의 좌표와 yaw, pitch, 원점이되는 벡터의 방향/방향을 굴립니다. yaw가 y 주위에 있고, x 주위로 피치가 올라 가며 z 주위로 굴러갑니다. 그들은 그 순서대로 수행됩니다. Yaw 0은 평면 xy (E1에서 z 반대, E2에서 z와 동일)에 수직입니다.좌표의 양수를 변경하는 방법은 무엇입니까?

E1은 오른손 공간을 사용하고 E2는 왼손 공간을 사용합니다. 둘 다 같은 원점을 가지며 y (위)와 z (화면)에 동일한 방향이 있습니다. 이들은 x가 E1에서 왼쪽으로, E2에서 오른쪽으로 다릅니다. 그들은 또한 긍정적 인 회전 방향에 따라 다릅니다.

스칼라 표현을 유지하고 이에 상응하는 WPF Matrix3d ​​표현을 변환하는 사용자 정의 유형이 있습니다.

+0

일반적으로 벡터 공간의 임의의 기준점을 다른 점으로 변환하려면 방정식 ² = ⋅ ₁을 풀면됩니다. 여기서 은 ₁에서 ₂로 변환하는 변환 행렬입니다. 기지 (각각 (1, 1, 1)과 (-1, 1, 1))를 알고 있기 때문에 너무 어려워서는 안됩니다. – Joey

+0

요하네스에게 감사드립니다. 나는 수학 사람이 아니며 이것은 나에게 분명하지 않습니다. 나는 무작위로 몇몇 조합을 시도했다. 이것은 3D 점과 3D look-direction 방향을 유지하는 사용자 정의 "Point6DoF"유형을 사용하여 왼손잡이를 WPF/오른 손잡이 공간으로 변환하는 것입니다 : Point6DoF positionInRightHanded = new Point6DoF (-X, Y, Z , -Yaw, Pitch, -Roll). 그게 너에게 의미가 있니? – 742

답변

0

는 결국이 솔루션은 나를 위해 작동 :

Point6DoF right = new Point6DoF(
    -left.X, left.Y, left.Z,-left.Yaw, left.Pitch, -left.Roll) 

을 Point6DoF는 위치와 오일러의 각도를 보유하고있는 클래스이다.

관련 문제