SCNQuaternion QuaternionMult(SCNQuaternion lhs,SCNQuaternion rhs)
{
SCNQuaternion v = {lhs.w * rhs.x + lhs.x * rhs.w + lhs.y * rhs.z - lhs.z * rhs.y, lhs.w * rhs.y + lhs.y * rhs.w + lhs.z * rhs.x - lhs.x * rhs.z, lhs.w * rhs.z + lhs.z * rhs.w + lhs.x * rhs.y - lhs.y * rhs.x, lhs.w * rhs.w - lhs.x * rhs.x - lhs.y * rhs.y - lhs.z * rhs.z};
return v;
}SCNQuaternion QuaternionMult(SCNQuaternion lhs,