public void ComputeSum() { Vector2f[] pointsA = new Vector2f[] { new Vector2f(-1, -1), new Vector2f(1, -1), new Vector2f(0, 1) }; Vector2f[] pointsB = new Vector2f[] { new Vector2f(3, -1), new Vector2f(5, -1), new Vector2f(5, 1), new Vector2f(3, 1) }; Polygon2f A = new Polygon2f(pointsA); Polygon2f B = new Polygon2f(pointsB); Vector2f[] points = new Vector2f[] { new Vector2f(2, -2), new Vector2f(6, -2), new Vector2f(6, 0), new Vector2f(5, 2), new Vector2f(3, 2), new Vector2f(2, 0) }; Polygon2f sum = MinkowskiSums2.ComputeSum(A, B); CollectionAssert.AreEqual(points, sum.Positions); }
protected override void OnPolygonComplete(Polygon2f input) { polygon = input; polygon.MakeCCW(); polygon.BuildIndices(); polygon.BuildHoleIndices(); if (polygon.IsSimple && !polygon.HasHoles) { Polygon2f A = shape; Polygon2f B = polygon; sum = MinkowskiSums2.ComputeSum(A, B); sum.BuildIndices(); sum.BuildHoleIndices(); } else { sum = null; } }