The routine AST_NORM is provided to cope with the fact that some
coordinate systems do not extend indefinitely in all directions. Some
may have boundaries, outside which coordinates are meaningless, while
others wrap around on themselves, so that after a certain distance you
return to the beginning again (coordinate systems based on circles and
spheres, for instance). A basic Frame has no such complications, but
other more specialised Frames (such as SkyFrames, representing the
celestial sphere--) do.
The role played by AST_NORM is to normalise any arbitrary set of coordinates by converting them into a set which is ``within bounds'', interpreted according to the particular Frame in question. For example, on the celestial sphere, a right ascension value of 24 hours or more can have a suitable multiple of 24 hours subtracted without affecting its meaning and AST_NORM would perform this task. Similarly, negative values of right ascension would have a multiple of 24 hours added, so that the result lies in the range zero to 24 hours. The coordinates in question are modified in place by AST_NORM, as follows:
DOUBLE PRECISION POINT( 2 ) ... CALL AST_NORM( FRAME, POINT, STATUS )
If the coordinates supplied are initially OK, as they would always be with a basic Frame, then they are returned unchanged.
Because the main purpose of AST_NORM is to convert coordinates into
the preferred range for human consumption, its use is almost always
appropriate immediately before formatting coordinate values for
display using AST_FORMAT (). Even if
the Frame in question does not restrict the range of coordinates, so
that AST_NORM does nothing, using it will allow you to process other
more specialised Frames, where normalisation is important, without
changing your software.
AST A Library for Handling World Coordinate Systems in Astronomy