Vector3f Quaternion::QuaternionMultiply(Vector3f vec) { Quaternion vectorQuaternion = VectorToQuaternion(vec); Quaternion inverse = Inverse(); Quaternion result = vectorQuaternion.QuaternionMultiply(inverse); result.Normalize(); Vector3f r; r.x = result.x; r.y = result.y; r.z = result.z; return r; }
PNT QUATERNION::VectorTransform(const PNT& V) { if( ((w>1-DELTA_ROT)&&(w<1+DELTA_ROT)) || ((w>-1-DELTA_ROT)&&(w<-1+DELTA_ROT)) ) return V; QUATERNION A, B, C; A=VectorToQuaternion(V); B=*this; QuaternionInverse(B); C=*this*A*B; return C.QuaternionToVector(); }