Next: Variable Numbers of Coordinates
Up: Creating Your Own Private Mappings (IntraMaps)
Previous: Creating an IntraMap

## Restricted Implementations of Transformation Routines

You may not always want to use both the forward and inverse transformations when you create an IntraMap, so it is possible to omit either from the underlying coordinate transformation routine. Consider the following, for example:

```      SUBROUTINE POLY3TRAN( THIS, NPOINT, NCOORD_IN, INDIM, IN, FORWARD,
:                      NCOORD_OUT, OUTDIM, OUT, STATUS )
INTEGER THIS, NPOINT, NCOORD_IN, INDIM, NCOORD_OUT, OUTDIM, STATUS
DOUBLE PRECISION IN( INDIM, NCOORD_IN ), OUT( OUTDIM, NCOORD_OUT )
LOGICAL FORWARD

INCLUDE 'AST_PAR'
DOUBLE PRECISION X
INTEGER POINT

*  Forward transformation.
DO 1 POINT = 1, NPOINT
X = IN( POINT, 1 )
IF ( X .EQ. AST__BAD ) THEN
OUT( POINT, 1 ) = AST__BAD
ELSE
OUT( POINT, 1 ) =
:      6.18D0 + X * ( 0.12D0 + X * ( -0.003D0 + X * 0.0000101D0 ) )
END IF
1    CONTINUE
END
```

This implements a 1-dimensional cubic polynomial transformation. Since this is somewhat awkward to invert, however, we have only implemented the forward transformation. When registering the routine, this is indicated via the FLAGS argument to AST_INTRAREG, as follows:

```      EXTERNAL POLY3TRAN

...

CALL AST_INTRAREG( 'Poly3Tran', 1, 1, POLY3TRAN, AST__NOINV,
:                   PURPOSE, AUTHOR, CONTACT, STATUS )
```

Here, the fifth argument has been set to the flag value AST__NOINV to indicate the lack of an inverse. If the forward transformation were absent, we would use AST__NOFOR instead. Flag values for this argument may be combined by summing them if necessary.

Next: Variable Numbers of Coordinates
Up: Creating Your Own Private Mappings (IntraMaps)
Previous: Creating an IntraMap

AST A Library for Handling World Coordinate Systems in Astronomy