Exemple #1
0
        public void TargetIsLongerThanChain_EndPointIsAtClosestPointToTarget()
        {
            var targetPosition = new Vector3(0.0f, 12.0f, 0.0f);

            var result = CCD2D.Solve(targetPosition, Vector3.forward, kIterations, kTolerance, kVelocity, ref positions);

            Assert.AreEqual(true, result);
            Assert.That(targetPosition, Is.Not.EqualTo(positions[positions.Length - 1]).Using(vec3Compare));
            Assert.That(2.0f, Is.EqualTo((targetPosition - positions[positions.Length - 1]).magnitude).Using(floatCompare));
        }
Exemple #2
0
        public void TargetIsReachableForChain_EndPointReachesTarget()
        {
            var targetPosition = new Vector3(9.0f, 1.0f, 0.0f);

            var result = CCD2D.Solve(targetPosition, Vector3.forward, kIterations, kTolerance, kVelocity, ref positions);

            Assert.AreEqual(true, result);
            Assert.That(targetPosition, Is.EqualTo(positions[positions.Length - 1]).Using(vec3Compare));
            Assert.That(0.0f, Is.EqualTo((targetPosition - positions[positions.Length - 1]).magnitude).Using(floatCompare));
        }
Exemple #3
0
        public void TargetHasReached_SolverDoesNotIterate()
        {
            var targetPosition = new Vector3(9.0f, 1.0f, 0.0f);

            var result = CCD2D.Solve(targetPosition, Vector3.forward, kIterations, kTolerance, kVelocity, ref positions);

            Assert.AreEqual(true, result);

            result = CCD2D.Solve(targetPosition, Vector3.forward, kIterations, kTolerance, kVelocity, ref positions);

            Assert.AreEqual(false, result);
        }