Example #1
0
        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);
        }