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)); }