Example #1
0
            public void Test(Random random, int innerIterations)
            {
                GenerateRandomNormalizedVector(random, out var v1);
                GenerateRandomNormalizedVector(random, out var v2);

                for (int i = 0; i < innerIterations; ++i)
                {
                    Quaternion.GetQuaternionBetweenNormalizedVectors(v1, v2, out var v1ToV2);
                    Quaternion.GetQuaternionBetweenNormalizedVectors(v2, v1, out var v2ToV1);

#if DEBUG
                    Quaternion.ConcatenateWithoutOverlap(v1ToV2, v2ToV1, out var concatenated);
                    Quaternion.Transform(v1, v1ToV2, out var v1TransformedToV2);
                    Quaternion.Transform(v2, v2ToV1, out var v2TransformedToV1);
                    Quaternion.Transform(v1, concatenated, out var v1TransformedToV1);


                    var         v1ToV2ErrorLength = (v1TransformedToV2 - v2).LengthSquared();
                    var         v2ToV1ErrorLength = (v2TransformedToV1 - v1).LengthSquared();
                    var         v1ToV1ErrorLength = (v1TransformedToV1 - v1).LengthSquared();
                    const float epsilon           = 1e-6f;
                    Debug.Assert(
                        v1ToV2ErrorLength < epsilon &&
                        v2ToV1ErrorLength < epsilon &&
                        v1ToV1ErrorLength < epsilon);
#endif
                }
            }