Vec3f operator*(const Quaternion &quat, const Vec3f &vec) { Vec3f quatVec(quat.x, quat.y, quat.z); Vec3f uv(quatVec.Cross(vec)); Vec3f uuv(quatVec.Cross(uv)); uv *= 2.0f * quat.w; uuv *= 2.0f; return vec + uv + uuv; }
void CQuater::VertMult(CVertex& v) { CVertex uv(x, y, z); CVertex uuv(x, y, z); uv.CrossMult(v); uuv.CrossMult(uv); uv.MultNum(2.0f * w); uuv.MultNum(2.0f); v += uv; v += uuv; }