Implement D3DXQuaternionSquadSetup

Started by
-1 comments, last by running 16 years, 1 month ago
I'd post this thread on D3D forum,but no answer. float LengthSq(D3DXQUATERNION &q) { return q.x * q.x + q.y * q.y + q.z * q.z + q.w * q.w; } void SquadSetup(D3DXQUATERNION& outA,D3DXQUATERNION& outB,D3DXQUATERNION& outC,const D3DXQUATERNION& q0,const D3DXQUATERNION& q1,const D3DXQUATERNION& q2,const D3DXQUATERNION& q3) { D3DXQUATERNION m1 = q0 + q1; D3DXQUATERNION m2 = q0 - q1; D3DXQUATERNION qt0 = ((LengthSq(m1) < LengthSq(m2)) ? -q0 : q0); m1 = q1 + q2; m2 = q1 - q2; D3DXQUATERNION qt2 = ((LengthSq(m1) < LengthSq(m2)) ? -q2 : q2); m1 = q2 + q3; m2 = q2 - q3; D3DXQUATERNION qt3 = ((LengthSq(m1) < LengthSq(m2)) ? -q3 : q3); D3DXQUATERNION qt1 = q1; D3DXQUATERNION expQt1;D3DXQuaternionExp(&expQt1,&qt1); D3DXQUATERNION expQt2;D3DXQuaternionExp(&expQt2,&qt2); D3DXQUATERNION expQt1Qt2 = expQt1 * qt2; D3DXQUATERNION expQt1Qt0 = expQt1 * qt0; D3DXQUATERNION expQt2Qt3 = expQt2 * qt3; D3DXQUATERNION expQt2Qt1 = expQt2 * qt1; D3DXQUATERNION logExpQt1Qt2;D3DXQuaternionLn(&logExpQt1Qt2,&expQt1Qt2); D3DXQUATERNION logExpQt1Qt0;D3DXQuaternionLn(&logExpQt1Qt0,&expQt1Qt0); D3DXQUATERNION logExpQt2Qt3;D3DXQuaternionLn(&logExpQt2Qt3,&expQt2Qt3); D3DXQUATERNION logExpQt2Qt1;D3DXQuaternionLn(&logExpQt2Qt1,&expQt2Qt1); D3DXQUATERNION t1 = -0.25 * (logExpQt1Qt2 + logExpQt1Qt0); D3DXQUATERNION t2 = -0.25 * (logExpQt2Qt3 + logExpQt2Qt1); D3DXQUATERNION t1Exp;D3DXQuaternionExp(&t1Exp,&t1); D3DXQUATERNION t2Exp;D3DXQuaternionExp(&t2Exp,&t2); outA = qt1 * t1Exp; outB = qt2 * t2Exp; outC = qt2; } but it doesn't work as D3D API D3DXQuaternionSquadSetup,any errors in the code? thank u.

This topic is closed to new replies.

Advertisement