![[*]](footnote.png)
- It comes with
bundled copies of the ERFA and
Starlink PAL librariessun268 which are built
at the same time as the other AST internal libraries. Alternatively, external
PAL and ERFA libraries may be used by specifying the “–with-external_pal” option when configuring AST
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- A pair of Mappings can be combined
in a third way using a TranMapTranMap. A TranMap allows the forward
transformation of one Mapping to be combined with the inverse
transformation of another to produce a single Mapping.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- XML documents which use only the subset of the STC schema
supported by AST can be read by the XmlChan class to produce
corresponding AST objects (subclasses of the StcStc class). However, the
reverse is not possible. That is, AST objects can not currently be
written out in the form of STC documents.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- The Starlink Software
Collection can be downloaded from
http://www.starlink.ac.uk/Download/.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- By pixel coordinates,
we mean a coordinate system in which the first pixel in the image is
centred on (1,1) and each pixel is a unit square. Note that the world
coordinates will not necessarily be celestial coordinates, but if they
are, then they will be in radians.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- If
you are writing the WCS calibration to a FITS file you obviously
have the choice of storing the FITS-WCS cards directly.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- An interface is provided with AST that
allows it to use PGPLOT (SUN/15sun15) for its graphics,
although interfaces to other graphics systems may also be written.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- Note that the methods applied
to a FrameSetFrameSet may be used equally well with a Plot.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- About the only difference is that you cannot store
a pointer to an AST “function” in a variable and use the variable's
value to invoke that function again later.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- We will assume
throughout that the “OK” value is zero, as it currently is. However,
a different value could, in principle, be used if the environment in
which AST is running requires it. This is why a simple interface is
provided to isolate you from the actual value of the error status.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- Most of the Mappings provided
by the AST library work in both directions, although the LutMapLutMap can
behave otherwise.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- The exception to this rule is that if the Format
value includes a precision of “
”, then Digits will be used to
determine the actual precision used.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- Anyone who
seriously uses the C run time library “scanf” function will know
about the need for this check!
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- It will probably not be obvious why this
restriction is necessary, but consider creating a Frame with one
longitude axis and two latitude axes. Which latitude axis should be
associated with the longitude axis?
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- For instance, a line of constant Declination is not a geodesic
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- The units used for the internal floating-point representation of an
axis value can be determined by examining the InternalUnit attribute of
the Frame. For most Frames, the Unit and InternalUnit attributes will be
equal, but InternalUnit is always set to “rad” for SkyFrames.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- Note, this simple relationship only applies if all
frequencies are topocentric.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- This requires the AlignSideband attribute to be
set to a non-zero value in both DSBSpecFrames.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- Within the spectral system described by
the attributes of the parent SpecFrameSpecFrame class - SystemSystem, StdOfRestStdOfRest, Units,
EpochEpoch, etc.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- As selected by the
System attribute.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- If both component Frames have blank Domains,
then the default Domain for the CmpFrame is the string “CMP”.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- Any attempt to
change the System value of a CmpFrame is ignored.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- The
leading digit is zero and is therefore not seen in this particular
example.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- Although this is
reversed if the FrameSet's InvertInvert attribute is non-zero.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- If you find that how this ambiguity is resolved
actually makes a difference to the conversion that results, then you
have probably constructed a FrameSet which lacks internal
self-consistency. For example, you might have two Frames representing
indistinguishable coordinate systems but inter-related by a non-null
MappingMapping.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- This is because any transformation to or from this
new Frame must go via the base Frame representing the original
data grid coordinate system, which we assume was correctly related to
all the other Frames present.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- More probably, you would want to write a FrameSetFrameSet,
but for purposes of illustration a SkyFrame contains a more manageable
amount of data.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- Available by ftp from
fits.cv.nrao.edu /fits/documents/wcs/wcs88.ps.Z
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- There are many other differences between the
previous and the current FITS-WCS encodings. The keywords to describe
axis rotation and scaling is used purely as a label to identify the
scheme.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- Available by ftp from fits.cv.nrao.edu
/fits/documents/wcs/aips27.ps.Z
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- This can happen if a particular keyword is
present in the input header but is not used in the output header
(whether particular keywords are used can depend on the WCS
information being stored). In such a case, the original value would
not be over-written by a new output value, so would remain erroneously
present.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- Storing values in the FitsChan for
FITS headers NAXIS1, NAXIS2, etc. (the grid dimensions in pixels),
before invoking
astWrite
can sometimes help to produce a successful write.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- In practice, this means you should avoid mixing
FITS-IRAF, FITS-WCS, FITS-AIPS, FITS-AIPS++ and FITS-PC encodings since they share
many keywords.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- Remember that “ptr_in” identifies the original
“output” coordinates when applying the inverse transformation and
“ptr_out” identifies the original “input” coordinates.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- Like any FrameSet, a Plot can be used as a
Mapping. In this case it is the inverse transformation which is used
when plotting (i.e. that which transforms between the current
and base Frames).
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- Remember, the physical coordinate space need not
necessarily be 2-dimensional, even if the plotting surface is.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- normalized so that the
start of the curve is at offset 0.0 and the end of the curve is at offset
1.0 - offset need not be linearly related to distance.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- If you have
not installed AST in the usual location, then substitute the
appropriate directory in place of “/star” wherever it occurs.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- Use the “
pgp” option instead if you wish to use
the Starlink version of PGPLOT which uses GKS to generate its output.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- Or the equivalent directory if AST is installed
in a non-standard location.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- http://www.astro.gla.ac.uk/users/norman/star/autoastrom/
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
![[*]](footnote.png)
- If the -TAB algorithm is used, the
positive value of the TabOK attribute is used as the table version number
(the EXTVER header) in the associated FITS binary table.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.