Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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;
            }
        }