Restricted Implementations of Transformation Functions

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


\begin{terminalv}
void Poly3Tran( AstMapping *this, int npoint, int ncoord_in,
...
...AD :
6.18 + x * ( 0.12 + x * ( -0.003 + x * 0.0000101 ) );
}
}
\end{terminalv}

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 function, this is indicated via the “flags” argument to astIntraRegastIntraReg, as follows:


\begin{terminalv}
void Poly3Tran( AstMapping *, int, int, const double *[], int,...
...ran'', 1, 1, Poly3Tran, AST__NOINV,
purpose, author, contact );
\end{terminalv}

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 using a bitwise OR if necessary.