public static bool CompressedQuaternionUnitTest() { var stream = new VRage.Library.Collections.BitStream(); stream.ResetWrite(); Quaternion q = Quaternion.Identity; stream.WriteQuaternionNormCompressed(q); stream.ResetRead(); var q2 = stream.ReadQuaternionNormCompressed(); bool fail = !q.Equals(q2, 1 / 511.0f); stream.ResetWrite(); q = Quaternion.CreateFromAxisAngle(Vector3.Forward, (float)Math.PI / 3.0f); stream.WriteQuaternionNormCompressed(q); stream.ResetRead(); q2 = stream.ReadQuaternionNormCompressed(); fail |= !q.Equals(q2, 1 / 511.0f); stream.ResetWrite(); var v = new Vector3(1, -1, 3); v.Normalize(); q = Quaternion.CreateFromAxisAngle(v, (float)Math.PI / 3.0f); stream.WriteQuaternionNormCompressed(q); stream.ResetRead(); q2 = stream.ReadQuaternionNormCompressed(); fail |= !q.Equals(q2, 1 / 511.0f); return(fail); }