Beispiel #1
0
        public void ParcellingDoesNotProduceOverlaps()
        {
            _parceller.AddTerminationRule(new AreaRule(15, 50, 0f));
            _parceller.AddTerminationRule(new AccessRule("edge", 0.5f));
            var parcels = _parceller.GenerateParcels(new Parcel(new Vector2[] { new Vector2(0, 0), new Vector2(10, 0), new Vector2(10, 10), new Vector2(0, 10) }, new string[] { "edge" }), _random.NextDouble, new NamedBoxCollection()).ToArray();

            //Assert.IsTrue(parcels.All(a => a.Area() <= 50));

            foreach (var parcel in parcels)
            {
                foreach (var parcel1 in parcels)
                {
                    if (parcel1.Equals(parcel))
                    {
                        continue;
                    }

                    //Test intersection (shrink them a tiny bit, to ensure they don't touch at a corner)
                    if (!SeparatingAxisTester.Intersects(parcel1.Points().Shrink(0.01f).ToArray(), parcel.Points().Shrink(0.01f).ToArray()))
                    {
                        continue;
                    }

                    Assert.Fail("Intersecting parcels");
                }
            }
        }
        public void DisjointShapesDoNotOverlap()
        {
            var s1 = new Vector2[]
            {
                new Vector2(-5, -5),
                new Vector2(5, -5),
                new Vector2(5, 5),
                new Vector2(-5, 5)
            };

            var s2 = new Vector2[]
            {
                new Vector2(10, 0),
                new Vector2(20, 0),
                new Vector2(20, 10),
                new Vector2(10, 10)
            };

            Assert.IsFalse(SeparatingAxisTester.Intersects(s1, s2));
        }
        public void OverlappingShapesOverlap()
        {
            var s1 = new Vector2[]
            {
                new Vector2(-5, -5),
                new Vector2(5, -5),
                new Vector2(5, 5),
                new Vector2(-5, 5)
            };

            var s2 = new Vector2[]
            {
                new Vector2(0, 0),
                new Vector2(10, 0),
                new Vector2(10, 10),
                new Vector2(0, 10)
            };

            Assert.IsTrue(SeparatingAxisTester.Intersects(s1, s2));
        }