protected Quaternion Normalize(Quaternion q) { return q / (float)(float)Math.Sqrt(Dot(q, q)); }
protected float Dot(Quaternion q1,Quaternion q2) { return Dot(q1.v, q2.v) + q1.w * q2.w; }