The Mappings described in §2.2 provide a set of basic building blocks from which more complex Mappings may be constructed. The key to doing this is a type of MappingMapping called a CmpMapCmpMap, or compound Mapping. A CmpMap's role is, in principle, very simple: it allows any other pair of Mappings to be joined together into a single entity which behaves as if it were a single Mapping. A CmpMap is therefore a container for another pair of Mappings.
A pair of Mappings may be combined using a CmpMap in either of two ways. The first of these, in series, is illustrated in Figure 2.
[width=0.7]sun211_figures/series
|
Here, the transformations implemented by each component Mapping are performed one after the other, with the output from the first Mapping feeding into the second. The second way, in parallel, is shown in Figure 3.
[width=0.5]sun211_figures/parallel
|
In this case, each Mapping acts on a complementary subset of the
input and output coordinates.
The CmpMap forms the key to building arbitrarily complex Mappings because it is itself a form of Mapping. This means that a CmpMap may contain other CmpMaps as components (e.g. Figure 4). This nesting of CmpMaps can be repeated indefinitely, so that complex Mappings may be built in a hierarchical manner out of simper ones.
[width=0.65]sun211_figures/complex
|
Further reading: For a more complete description of CmpMaps, see §6. Also see the CmpMap entry in Appendix D.