2010-08-20 3 views
0

오브젝트 쿼터니온 q와 3D 공간을 형성하는 베이시스 벡터 vx, vy, vz가 주어지면 쿼터니온이 모든 베이시스 벡터에 평행인지 수직인지를 어떻게 확인할 수 있습니까? 예를 들어모든 기본 벡터에 평행 또는 수직 인 오브젝트 쿼터니언

, 내가 기저 벡터가 :

q(w,x,y,z) = (-0.973224, 0, -0.229860, 0) 

vx = (0.447410, 0, -0.894329) 
vy = (0, 1, 0) 
vz = (0.894329, 0, 0.447410) 

와 사원 수를 나는 사원 수는 기저 벡터의 모든하지만 어떻게 수직 또는 병렬 (또는 반 평행) 알고 실제로 계산할 수 있습니까?

다른 예는,

q(w,x,y,z) = (0.823991, 0, 0.566602, 0) 

이것은 기저 벡터의 모두에 수직 또는 평행 한 (또는 반 평행) NOT이다.

+0

http://stackoverflow.com/questions/3524433/quaternion-and-three-axes의 중복으로 보입니다. –

+0

중복되지 않지만 유사합니다. 이것은 또한 더 나은 설명과 함께합니다. – bittersoon

+0

원래의 질문을 수정하면 더 좋았을 것입니다. –

답변

1

용어에 대한 참고 사항 : 엄밀히 말하면 "4 원수가 기본 벡터 중 하나에 수직"이라는 것이 정확히 무엇인지 분명하지 않습니다 ... 4 원 및 3 차원 벡터는 그렇게 비 교적입니다. 그러나 쿼터니언은 회전 축 (3 차원 벡터)과 스칼라 회전 각을 나타내는 것으로 생각할 수 있으므로 회전 축이 기저 벡터 중 하나와 수직인지 인지 알고 싶다고 가정합니다.

3 차원 회전으로 간주되는 단위 쿼터니언의 경우, q = (w, x, y, z)에 대해 x, y 및 z는 3 차원 벡터를 형성합니다 (qv라고 부름) w = cos (α/2)는 회전 각 α를 나타낸다.

귀하의 경우, qv = (x, y, z) = (0, -0.229860, 0). vx, vy 및 vz는 모두 단위 벡터 이므로 qv를 단위 벡터로 정규화하면 어떤 일이 일어나는지 쉽게 알 수 있습니다. 길이 (0.229860)로 나누어 qv_unit = (0, -1, 0)을 얻습니다.

: 단위 벡터 V1이 = (A, B, C) 및 V2 = (D, E, F)의 경우

: qv_unit와 VX, VY 및 VZ 사이 각도를 찾기 위해, 내적을 사용

cos (theta) = v1 dot v2 = ad + be + cf

qv_unit 도트 vx = 0 * .447410 + -1 * 0 + 0 * -894329 = 0 = cos (theta)이므로 theta = pi/2, 우리는 qv_unit이 vx와 수직임을 알 수 있습니다.

qv_unit 도트 vy = 0 * 0 + -1 * 1 + 0 * 0 = -1 = cos (theta)이므로 theta = pi이고 qv_unit은 vy와 역행합니다.

qv_unit 도트 vz = 0 * .894329 + .447410 = 0 = cos (theta)이므로 theta = pi/2이고, qv_unit 또한 vz에 수직입니다.

+0

이것은 특별한 경우에 작동하지만 쿼터니온이 q (w, x, y, z) = (0.823991, 0, 0.566602, 0)이면 어떻게 될까요? 나는 회전이 어떤 축에도 수직이 아니라는 것을 안다. 두 도트 곱이 0을 제공하지만 – bittersoon

+0

@ Quaternional : 질문에 "쿼터니언이 기본 벡터 중 하나와 수직이라는 것을 알았지 만, 이제는"회전이 어떤 축에도 수직이 아닙니다. "라고 말합니다. 그래서 네가 정말로 묻고 있는게 뭔지 전혀 모르겠다. 분명히 말 해주세요. 베이시스 벡터와 쿼터니온은 어디서 오는가? 문맥은 무엇입니까? –

+0

실제로 쿼터니온 회전이 모든 축에 수직 또는 평행한지 알고 싶습니다. 혼란에 대해 죄송합니다. – bittersoon

1

쿼터니온을 매트릭스로 변환하여이를 해결했습니다. 매트릭스로부터 베이시스 벡터를 취하여, 매트릭스 베이시스 벡터와 원래 베이시스 벡터 사이의 내적을 계산한다. 그것들이 모두 0 또는 1이면 쿼터니언은 원래 기본 벡터와 평행하거나 수직입니다.

+0

오케이, 오해가 무엇인지 알 것 같습니다. quaternion q를 사용하여 원래의 x, y, z 기저 벡터를 회전 한 결과가 vx, vy, vz와 평행하거나 수직 인 결과 rx, ry, rz를 얻었 으면합니다. 그러나 vx, vy, vz에 대해 q가 평행/수직이라는 질문을 던졌습니다. 실제로는 잘 정의 된 개념이 아니므로, 당신이 의미하는 바를 잘못 추측했습니다. 여하튼 문제가 해결되어 기쁩니다. 토론이 도움이되기를 바랍니다. –