Example #1
0
        public void ParcellingRespectsAreaRule()
        {
            _parceller.AddTerminationRule(new AreaRule(15, 50, 0f));
            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));
        }
 public SolidPlaceholderBlock()
 {
     _parceller = new ObbParceller();
     _parceller.AddTerminationRule(new AreaRule(250, 400, 0.25f));
     _parceller.AddTerminationRule(new FrontageRule(25, 50, 0.45f, "road"));
     _parceller.AddTerminationRule(new AccessRule("road", 0.15f));
 }
        public override IEnumerable <Parcel> GenerateParcels(Parcel root, Func <double> random, INamedDataCollection metadata)
        {
            var p = new ObbParceller(_splitPointSelection, _nonOptimalOabbChance, _nonOptimalOabbMaxRatio);

            foreach (var rule in _rules)
            {
                p.AddTerminationRule(rule.Rule(random, metadata));
            }

            return(p.GenerateParcels(root, random, metadata));
        }