2016-08-23 5 views
0

저는 우완 Y-up 좌표 공간에서 왼손잡이 Z-up 좌표 공간으로 전환하려고하는 쿼터니언 데이터를 가지고 있습니다. 이 글을 읽고부터 내가해야할 일은 switch the chirality입니다. 내가 찾을 수코드에서 쿼터니언의 키라 리티를 전환합니까?

유일한 정보는 this

내가 그 주위에 내 머리를 정리하고 수 없습니다. 내가 키랄성을 전환 어떻게, C# 코드에서

public static float[] quat= new float[4](0.70711,0.70711,0,0); 

:

내가 아니라 내 사원 수를 가지고 있음을 말해?

축을 무시하고 단순히 ZY 값을 바꿔 넣으려고했습니다. 나는 쿼터니온에 90도에 해당하는 또 다른 쿼터니언을 곱하려고 시도했다. 여전히 잘못된 회전을 보게됩니다.

감사합니다.

+0

이것은 오프라인 프로세스입니까? 그냥 quat -> 행렬을 수행 한 다음 필요에 따라 행/열을 교환/무효화 한 다음 행렬 -> quat을 다시 수행 할 수 있습니까? – samgak

+0

실시간이기 때문에 대기 시간이 중요한 요소입니다. 나는 그것을 시도 할 수있다! C#의 예를 알고 있습니까? – anti

+0

나는 미안하다. – samgak

답변

1

원래 좌표계 A의 카메라에 X, Y, Z가 있다고 가정합니다. 새로운 좌표 시스템 B는 X 오른쪽, Y는 카메라, Z는 위쪽을 갖습니다. 따라서 본질적으로 Y 축과 Z 축을 교환해야합니다. 지금까지? 그리고 당신은 시스템 A에 약간의 회전을 설명하는 사원 수 Q 당신은 시스템 B에 같은 회전을 설명하는 사원 수 R을 찾으려면이

그것은 당신이 방법의 맥락에서이를 고려하는 것이 아마 최선의 방법 각도와 축을 쿼터니언으로 변환합니다. Wikipedia 당신은 θ 부 방향

Q를 사용하여 벡터 (X, Y, Z) = COS (θ/2) + 죄 (θ/2)과 축 주위의 각도로 회전을 설명하는 것을 읽을 수있다 (xi + yj + zk)

각도와 축의 변경 사항은 무엇입니까? 음, 축 좌표는 점과 동일한 좌표 교환을 경험하며 각도는 부호를 변경합니다. 그래서 당신은 (이후 실제 부분은 변경되지 않습니다 위의 비교

COS (-θ/2) + 죄 (-θ/2) (XI + ZJ + YK)

이 cos (x) = cos (-x)) 그러나 허수 부는 순서의 변화 이외에 그들의 부호를 변화시킨다. 이를 일반화하면 이전 좌표계에서 회전을 설명하는 쿼터니언 a + bi + cj + dk이 새 좌표계에서 a - bi - dj - ck으로 바뀝니다.

관련 문제