2014-10-13 4 views
0

두 개의 엔티티 A와 B에는 회전 쿼터니온과 변환 벡터가 있습니다. 나는이 같은 엔티티 B가 엔티티 A를 변환 :회전 및 변환 대신에 행렬에 변환 적용

A.rotation *= B.rotation 
A.translation *= inverse(B.rotation) 
A.translation += B.translation 

대신 기업의 변환 및 회전 구성 요소에 대한 이러한 변환을 적용하는, 나는 결과 행렬의 변환을 이러한 구성 요소에서 행렬을 만들고 적용 할 것 :

A.matrix = mat4(A.rotation) * mat4(A.position) 
B.matrix = mat4(B.rotation) * mat4(B.position) 

A.matrix *= ??? 

그럴 수 있습니까? 번역 및 회전 구성 요소를 숨기고 조합 된 변환 - 회전 행렬에 대한 액세스 권한 만 부여하기 때문에 묻습니다.

감사합니다.

답변

0

변형을 일련의 회전으로 사용할 수 있습니다. 이러한 회전을 곱하여 그 행렬을 적용 할 수 있기 때문입니다.

변환을 일련의 번역으로 할 수 있습니다. 변환을 추가하고 결과를 추가 할 수 있기 때문입니다.

당신이 할 수있는 최선은 다음과 같습니다

A = R(1)*R(2)*...*R(n)*B + (T(1)+T(2)+....+T(m)) 
+0

R되고 A.rotation 및 T가되는 A.translation :

A = R*B + T 

대수이 명확하게? –

+0

예, 나는 그것이 명백 할 것이라고 생각했습니다. 조심하고 대수가 어떻게 작동하는지 알아야합니다. A = R (1) * (R (2) * B + T (1)) = R (1) * R (2) * B + R (1) * T (1)이면 내 표현이 올바르지 않습니다. 조심해. – duffymo