kexQuat kexAngle::ToQuat(void) { return (kexQuat(pitch, kexVec3::vecRight) * (kexQuat(yaw, kexVec3::vecUp) * kexQuat(roll, kexVec3::vecForward))); }
kexQuat kexVec3::ToQuat(void) { float d = Unit(); if(d == 0.0f) return kexQuat(); kexVec3 scv = *this * (1.0f / d); float angle = kexMath::ACos(scv.y); return kexQuat(angle, vecForward.Cross(scv).Normalize()); }
void kexDisplayObject::Spawn(void) { if(rotation.x == 0 && rotation.y == 0 && rotation.z == 0 && rotation.w == 0) { rotation = kexQuat(angles.yaw, 0, 1, 0); } rotation.Normalize(); }
kexQuat kexPlane::ToQuat(void) { kexVec3 cross = kexVec3::vecUp.Cross(Normal()).Normalize(); return kexQuat(kexMath::ACos(kexVec3::vecUp.Dot(Normal())), cross); }