저는 현재 3ds/gmax의 쿼터니언 추가를 모방 한 함수가 필요합니다. (quat 1 2 3 4) + (quat 3 5 7 9)의 테스트 케이스는 같아야합니다 (quat 20 40 54 2). 이 퀘스트는 xyzw입니다. 그래서 깨끗한 숫자가 주어지면 기본 대수학이라고 생각합니다. V의 *의 QV입니다 - 내가 * QS 방법 SN = S 이해하지 못하고,3ds/gmax와 같은 쿼터니언 추가 기능은 quats와 함께 수행됩니다.
const quaternion &operator *=(const quaternion &q)
{
float x= v.x, y= v.y, z= v.z, sn= s*q.s - v*q.v;
v.x= y*q.v.z - z*q.v.y + s*q.v.x + x*q.s;
v.y= z*q.v.x - x*q.v.z + s*q.v.y + y*q.s;
v.z= x*q.v.y - y*q.v.x + s*q.v.z + z*q.s;
s= sn;
return *this;
}
을하지만 :이 죄/COS를 포함하지 않기 때문에,이 곱셈 기능과 같이있을거야 일해야한다. s는 float, v는 벡터입니다. 벡터를 곱하고 플로트에 추가 하시겠습니까? 위의 값이 나타내는 방향/회전/방향의 조건이 확실치 않지만 함수가 위의 quat 값을 충족하면 작동합니다.
는, 당신은 자신의 사원 수의 표현을 곱해야합니다. 객체에 두 가지 다른 회전을 적용하면 최종 결과는 순서에 따라 다릅니다. 그래서 주문을 교환하는 것이 효과적입니다. – JCooper