Consider a simple example based on two 2-dimensional coordinate systems. Suppose that to convert from one to the other we must swap the coordinate order and multiply both coordinates by 5, so that the coordinates (x1,x2) transform into (5x2,5x1). This can be done in two stages:
The PermMap and ZoomMap are then said to operate in series,
because they are applied sequentially
(c.f. Figure ). We can create a CmpMap
that applies these Mappings in series as follows:
INCLUDE 'AST_PAR'
INTEGER CMPMAP, PERMMAP, STATUS, ZOOMMAP
INTEGER INPERM( 2 ), OUTPERM( 2 ), CONST( 1 )
DATA INPERM / 1, 2 /
DATA OUTPERM / 1, 2 /
STATUS = 0
...
* Create the individual Mappings.
PERMMAP = AST_PERMMAP( 2, INPERM, 2, OUTPERM, CONST, ' ', STATUS )
ZOOMMAP = AST_ZOOMMAP( 2, 5.0D0, ' ', STATUS )
* Combine them in series.
CMPMAP = AST_CMPMAP( PERMMAP, ZOOMMAP, .TRUE., ' ', STATUS )
* Annul the individual Mapping pointers.
CALL AST_ANNUL( PERMMAP, STATUS )
CALL AST_ANNUL( ZOOMMAP, STATUS )
Here, the third argument (.TRUE.) of the constructor function AST_CMPMAP indicates ``in series''.
When used to transform coordinates in the forward direction, the resulting CmpMap will apply the first component Mapping (the PermMap) and then the second one (the ZoomMap). When transforming in the inverse direction, it will apply the second one (in the inverse direction) and then the first one (also in the inverse direction). In general, although not in this particular example, the order in which the two component Mappings are supplied is significant. Clearly, also, the Nout attribute (number of output coordinates) for the first Mapping must equal the Nin attribute (number of input coordinates) for the second one.
AST A Library for Handling World Coordinate Systems in Astronomy