Jeff's Website

Using Recursion

While the node/link models produced reasonable road layouts, it was still felt that more variation was needed to model the layout of a real city.

With the city models discussed in the previous section, the 'space' enclosed between nodes would normally become a 'block' and be populated by buildings. However, it was noted that we could also take the outline nodes of a 'block' and use these to describe the outline of another CityModel.

Image

So in effect, one CityModel could contain many smaller CityModels, as illustrated. This mechanism works very like a fractal.

Image

In the diagram to the left we have one parent CityModel consisting of 2x2 'blocks' and each of these blocks then contains another CityModel. The smaller models have a 4x4 block arrangement and a smaller road width.

Each CityModel can be slightly different, for example, having different road widths or numbers of blocks. The differences between areas of the main CityModel now more closely mimic that of a real city

It was decided to adopt a two-level recursive model during the project, although there is no reason why an even deeper level of recursion could not be used. Using recursion was a simple way of achieving a much higher degree of realism, with minimal effort.

During the project, the large outer (parent) CityModel was referred to as a 'Level 1' model and the smaller (child) CityModels were referred to as 'Level 2' models.