using System; using System.Collections.Generic; using System.Linq; using System.Text; using Annulus.SweptCollisionDetection; using Annulus; using Azimuth; using Azimuth.RootFinding; namespace Annulus.UnitTests.SweptCollisionDetection { public class RotatingSimplePolygonvsRotatingSimplePolygonTests : UnitTestSharp.TestFixture { // Bounce // Edge - edge public void EdgeEdgeSolidHit() { var polygon = new SimplePolygon(new Vector[] { new Vector(-1, 1), new Vector( 1, 1), new Vector( 1,-1), new Vector(-1,-1), }); var input = new RotatingSimplePolygonvsRotatingSimplePolygon.Input { polygon_A = new RotatingSimplePolygonvsRotatingSimplePolygon.SimplePolygonInMotion { polygon = polygon, position = new Vector(0, 10), acceleration = new Vector(0, -1), angularVelocity = 0, orientation = 0, velocity = new Vector(0, 0), }, polygon_B = new RotatingSimplePolygonvsRotatingSimplePolygon.SimplePolygonInMotion { polygon = polygon, position = new Vector(0, 0), acceleration = new Vector(0, 0), angularVelocity = 0, orientation = 0, velocity = new Vector(0, 0), }, }; int iterations = 0; RotatingSimplePolygonvsRotatingSimplePolygon.Output output; var success = RotatingSimplePolygonvsRotatingSimplePolygon.FindNextIntersection(input, new Interval(0, 100), 1000, out output, ref iterations); CheckEqual(EndingState.SUCCESS, success); CheckEqual(4, output.TOI); //CheckEqual(new Polygon.Edge { Polygon = polygon, startVertexIndex = 0, endVertexIndex = 1 }, outputimpactedEdge); //CheckEqual(new Polygon.Vertex { Polygon = polygon, vertexIndex = 2 }, impactedVertex); } // Vertex - edge // Vertex - vertex // Sliding // edge edge // edge vertex // vertex } }