Rule Design for Construction of Multi-celled Grid Parks

Multi-celled Parks

Parks can be constructed by generating each cell invidually and joining them along the common regions, for example paths or grass areas.

Analysis

Basic Grid

Construction of a grid by combining the paths does not work as I will submit in the next post, but joining the individual elements should work quite well.

The first picture shows the most basic construction of a part of a mark in Mexico. The procedure for construction is as follows:

  • Region -> grid(x, y) { CellRegion }
  • CellRegion -> Grass

Repeating Region Park

Even though the second picture shows quite an elaborate park we consider the simpler subset and concentrate division of the region into the two cells.

We wish to simplify the regions between the cells into simply grass area or tree decorated grass area for simplicity.

We ignore the complex outer polygon and the area between it and the grid region.

If we ignore the spaces between the cells with circles in them we get a variant of the grammar in the example above:

  • Region -> grid(2, 1) { CellRegion }
  • CellRegion -> SimplePark

Were SimplePark could be the the model of the first square park described above for example.

Looking at the second picture we produce rules for the regions in between, units are meters:

  • Region -> Grid(5 {3, 15}, 3 ) { CellRegion }
  • CellRegion ->
    • case (w == 15 && h == 15): SimplePark
    • case (w == 3 && h == 3): TreeRegion
    • else: GrassRegion

This produces tree different regions, 15×15 larger squares for a more complex park park and 3×3 smaller squares where the trees are planted. The remaining rectangles are simply grass areas.

Notice that only x dimension gets the size, y dimension automatically receives the same set of sizes. They can overridden with custom sizes, of course.

The paths sizes used default values, where 3m would be a reasonable value.

Split Structure Park

We can also use different instances for the cell of park grid. For instances we consider the subset of the park in the third picture with three different cells:

  • Region -> Grid(1, 3) { SomeSquarePark  | PoolRegion |  SomeSquarePark }
  • SomeSquarePark -> Choose { SquarePark1, SquarePark2, SquarePark3}