using System; using System.Collections.Generic; using System.Linq; using System.Text; using UnitTestSharp; using Azimuth; using Lodestone.DiscreteCollisionDetection; namespace Lodestone.UnitTests.DiscreteCollisionDetection { class PointToSegment : TestFixture { public static readonly Vector s = new Vector(1, 0); public static readonly Vector e = new Vector(0, 0); Scalar wA, wB; public void Basic() { Vector p = new Vector(0.5, 10); Vector pPrime = Lodestone.DiscreteCollisionDetection.PointToSegment.ClosestPointOnLineSegmentToPoint(s, e, p, out wA, out wB); CheckEqual(new Vector(0.5, 0), pPrime); CheckEqual(0.5, wA); CheckEqual(0.5, wB); } public void Negative_T() { Vector p = new Vector(-10, 10); Vector pPrime = Lodestone.DiscreteCollisionDetection.PointToSegment.ClosestPointOnLineSegmentToPoint(s, e, p, out wA, out wB); CheckEqual(e, pPrime); CheckEqual(0, wA); CheckEqual(1, wB); } public void GrOne_T() { Vector p = new Vector(10, 10); Vector pPrime = Lodestone.DiscreteCollisionDetection.PointToSegment.ClosestPointOnLineSegmentToPoint(s, e, p, out wA, out wB); CheckEqual(s, pPrime); CheckEqual(1, wA); CheckEqual(0, wB); } public void Degenerate() { Vector p = new Vector(10, 10); Vector pPrime = Lodestone.DiscreteCollisionDetection.PointToSegment.ClosestPointOnLineSegmentToPoint(e, e, p, out wA, out wB); CheckEqual(e, pPrime); } } }