/// /// Convert a Quaternion to a Rotation around a Z-axis /// 2*PI = North /// 1/2*Pi = East /// PI = South /// 3/2*PI = West /// /// Radians /// public static double GetZHeading(Quaternion simRotation) { Vector3 v3 = Vector3.Transform(Vector3.UnitX, Matrix4.CreateFromQuaternion(simRotation)); return (Math.Atan2(-v3.X, -v3.Y) + Math.PI); }