コード例 #1
0
        public IEnumerator WhenCompassEnabledCameraIsRotated()
        {
            yield return(LoadScene());

            var comparer          = new QuaternionEqualityComparer(10e-6f);
            var defaultQuaternion = Quaternion.Euler(0, 0, 0);

            yield return(new WaitUntil(() => Math.Abs(Input.compass.trueHeading) > 0));

            Assert.That(_mainCamera.transform.rotation, Is.Not.EqualTo(defaultQuaternion).Using(comparer));
        }
コード例 #2
0
        public void MatrixDecomposeTest()
        {
            // Corner case matrix (90°/0°/45° rotation with -1/-1/-1 scale)
            var m = new Matrix4x4(
                new Vector4(
                    -0.7071067811865474f,
                    0f,
                    -0.7071067811865477f,
                    0f
                    ),
                new Vector4(
                    0.7071067811865477f,
                    0f,
                    -0.7071067811865474f,
                    0f
                    ),
                new Vector4(
                    0f,
                    1f,
                    0f,
                    0f
                    ),
                new Vector4(
                    0f,
                    0f,
                    0f,
                    1f
                    )
                );

            var m2 = new float4x4(
                m.m00, m.m01, m.m02, m.m03,
                m.m10, m.m11, m.m12, m.m13,
                m.m20, m.m21, m.m22, m.m23,
                m.m30, m.m31, m.m32, m.m33
                );

            Profiler.BeginSample("Matrix4x4.DecomposeUnity");
            if (m.ValidTRS())
            {
                Vector3    t1 = new Vector3(m.m03, m.m13, m.m23);
                Quaternion r1 = m.rotation;
                Vector3    s1 = m.lossyScale;
            }

            Profiler.EndSample();

            Profiler.BeginSample("Matrix4x4.DecomposeCustom");
            m.Decompose(out var t, out var r, out var s);
            Profiler.EndSample();

            var comparer3 = new Vector3EqualityComparer(10e-6f);
            var comparer4 = new QuaternionEqualityComparer(10e-6f);

            Assert.That(t, Is.EqualTo(new Vector3(0, 0, 0)).Using(comparer3));
            Assert.That(r, Is.EqualTo(new Quaternion(0.65328151f, -0.270598054f, 0.270598054f, 0.65328151f)).Using(comparer4));
            Assert.That(s, Is.EqualTo(new Vector3(-.99999994f, -.99999994f, -1)).Using(comparer3));

            Profiler.BeginSample("float4x4.Decompose");
            m2.Decompose(out var t3, out var r3, out var s3);
            Profiler.EndSample();

            Assert.That((Vector3)t3, Is.EqualTo(new Vector3(0, 0, 0)).Using(comparer3));
            Assert.That((Quaternion) new quaternion(r3), Is.EqualTo(new Quaternion(0.65328151f, -0.270598054f, 0.270598054f, 0.65328151f)).Using(comparer4));
            Assert.That((Vector3)s3, Is.EqualTo(new Vector3(-.99999994f, -.99999994f, -1)).Using(comparer3));
        }