IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 3775


Ignore:
Timestamp:
Apr 27, 2005, 11:32:24 AM (21 years ago)
Author:
eugene
Message:

final for cycle 6

Location:
trunk/doc/pslib
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/doc/pslib/ChangeLogSDRS.tex

    r3772 r3775  
    1 %%% $Id: ChangeLogSDRS.tex,v 1.91 2005-04-27 19:59:03 eugene Exp $
     1%%% $Id: ChangeLogSDRS.tex,v 1.92 2005-04-27 21:32:24 eugene Exp $
    22
    33\subsection{Changes from version 00 to version 01}
     
    560560\item added \code{psVectorExtend} function
    561561\item changed inputs to \code{psImageSlice} to use \code{psRegion}
    562 \end{itemize}
     562
     563\item changes involving \code{psRegion}
     564\begin{itemize}
     565  \item moved Image Regions section to beginning of Image Operations
     566  \item dropped psImageSubsection (redundant now)
     567
     568  \item changed the following functions to use psRegion:
     569  psImageSubset, psImageTrim, psImageSlice, psImageCut
     570
     571  \item added clarification to meaning of psRegion x0,x1,y0,y1 values.
     572\end{itemize}
     573
     574\item removed psMetadata.ptype as per bug 313, dropped reference in psDB section.
     575\item clarified the discussion of duplicate keys and the option flags in \code{psMetadata}
     576
     577\end{itemize}
  • trunk/doc/pslib/psLibSDRS.tex

    r3774 r3775  
    1 %%% $Id: psLibSDRS.tex,v 1.209 2005-04-27 20:30:42 eugene Exp $
     1%%% $Id: psLibSDRS.tex,v 1.210 2005-04-27 21:32:24 eugene Exp $
    22\documentclass[panstarrs,spec]{panstarrs}
    33
     
    18841884psLookupTable *psLookupTableAlloc(const char *filename, ///< File from which to read
    18851885                                  const char *format ///< scanf-like format string
    1886                                   int indexCol ///< Column of the index vector (starting at zero)
     1886                                  int indexCol ///< Column of the index vector (starting at zero)
    18871887                                  );
    18881888\end{verbatim}
     
    25642564\end{verbatim}
    25652565
    2566 Then \code{psMinimizePowell} shall mimimize the specified function,
     2566Then \code{psMinimizePowell} shall minimize the specified function,
    25672567\code{func}, using the Powell method:
    25682568
     
    26312631psSpline1D *psVectorFitSpline1D(const psVector *x,
    26322632                                const psVector *y
    2633                                 int nKnots);
     2633                                int nKnots);
    26342634\end{verbatim}
    26352635\code{psVectorFitSpline1D} shall return the spline that best fits the
     
    26842684the value is added to the image dimensions ($Nx + x1$).  Thus a region
    26852685\code{[0:0,0:0]} refers to the full image array, while
    2686 \code{[0:-10,0:-20]} trims the last 10 colums and the last 20 rows.
     2686\code{[0:-10,0:-20]} trims the last 10 columns and the last 20 rows.
    26872687
    26882688\subsubsection{Image Structure Manipulation}
     
    27462746psVector *psImageSlice(psVector *out,
    27472747                       psVector *coords,
    2748                        const psImage *input,
     2748                       const psImage *input,
    27492749                       const psImage *mask,
    2750                        unsigned int maskVal,
    2751                        psRegion region,
    2752                        psImageCutDirection direction,
    2753                        const psStats *stats);
    2754 \end{verbatim}
    2755 Extract pixels from rectlinear region to a vector (array of floats).
     2750                       unsigned int maskVal,
     2751                       psRegion region,
     2752                       psImageCutDirection direction,
     2753                       const psStats *stats);
     2754\end{verbatim}
     2755Extract pixels from rectilinear region to a vector (array of floats).
    27562756The output vector contains either \code{region.x1-region.x0} or
    27572757\code{region.y1-region.y0} elements, based on the value of the
     
    27842784                     const psImage *mask,
    27852785                     unsigned int maskVal,
    2786                      psRegion region,
     2786                     psRegion region,
    27872787                     unsigned int nSamples,
    27882788                     psImageInterpolateMode mode);
     
    29262926psImage *psImageTransform(psImage *output,
    29272927                          psArray **blankPixels,
    2928                           const psImage *input,
     2928                          const psImage *input,
    29292929                          const psImage *inputMask,
    2930                           int inputMaskVal,
    2931                           const psPlaneTransform *outToIn,
    2932                           const psRegion region,
    2933                           const psPixels *pixels,
    2934                           psImageInterpolateMode mode,
    2935                           double exposedValue);
     2930                          int inputMaskVal,
     2931                          const psPlaneTransform *outToIn,
     2932                          const psRegion region,
     2933                          const psPixels *pixels,
     2934                          psImageInterpolateMode mode,
     2935                          double exposedValue);
    29362936\end{verbatim}
    29372937Transform the \code{input} image according the supplied
     
    31253125\begin{verbatim}
    31263126typedef struct {
    3127     int x;                      // x coordinate
    3128     int y;                      // y coordinate
     3127    int x;                      // x coordinate
     3128    int y;                      // y coordinate
    31293129} psPixelCoord;
    31303130
     
    31323132    int n;                      // Number in use
    31333133    const int nalloc;           // Number allocated
    3134     psPixelCoord *data;         // The pixel coordinates
     3134    psPixelCoord *data;         // The pixel coordinates
    31353135} psPixels;
    31363136\end{verbatim}
     
    31423142
    31433143\code{psPixelsAlloc} and \code{psPixelsRealloc} provide dynamic
    3144 allocation and reallocation in a manner analagous to those provided
     3144allocation and reallocation in a manner analogous to those provided
    31453145by \code{psVectorAlloc} and \code{psVectorRealloc}.
    31463146
     
    31633163coordinates in the \code{mask} that match the \code{maskVal}.  The
    31643164\code{out} pixel list shall be modified if supplied, or allocated and
    3165 returned if \code{NULL}.  In hte event that \code{mask} is
     3165returned if \code{NULL}.  In the event that \code{mask} is
    31663166\code{NULL}, the function shall generate an error and return
    31673167\code{NULL}.
     
    33553355Finally, we specify two functions to convert between matrices and
    33563356vectors.  This allows the use of vectors in matrix arithmetic, since a
    3357 vector can be converted to a matrix, utilised, and the result can be
     3357vector can be converted to a matrix, utilized, and the result can be
    33583358converted back to a vector if required.  This function is specified
    33593359for data types \code{psF32, psF64}.  Input and output data types
     
    33683368\subsection{(Fast) Fourier Transforms}
    33693369
    3370 We require the ability to calculate the (fast) fourier transforms of
     3370We require the ability to calculate the (fast) Fourier transforms of
    33713371floating-point one-dimensional vectors and two-dimensional images.  We
    33723372expect that these will be implemented through wrapping an external
     
    34013401
    34023402We also specify the additional utility functions
    3403 \code{psVectorConjuagte} and \code{psVectorPowerSpectrum} which
     3403\code{psVectorConjugate} and \code{psVectorPowerSpectrum} which
    34043404construct the complex conjugate (\code{psC32}) and the magnitude
    34053405(\code{psF32}) vectors of the input complex vector (\code{psC32}).
     
    35583558We define a \code{psRandom} type, which will allow us to carry around
    35593559pre-computed random numbers, if required.  For the time being, we only
    3560 specify a single randon number generator (RNG) in \code{psRandomType}
     3560specify a single random number generator (RNG) in \code{psRandomType}
    35613561(that provided by \code{gsl_rng_taus}), but we leave this open to
    35623562expansion in the future, depending upon user requirements.
     
    37243724\begin{verbatim}
    37253725typedef struct {
    3726     int id;                             ///< unique ID for this item
     3726    const psS32 id;                     ///< unique ID for this item
    37273727    char *name;                         ///< Name of item
    37283728    psMetadataType type;                ///< type of this item
    3729     psElemType ptype;                   ///< primitive data type
    37303729    const union {
    37313730        psS32 S32;                      ///< integer data
    37323731        psF32 F32;                      ///< floating-point data
    37333732        psF64 F64;                      ///< double-precision data
    3734         void *V;                        ///< other type
    37353733        psList *list;                   ///< psList entry
    37363734        psMetadata *md;                 ///< psMetadata entry
     3735        psPtr V;                        ///< other type
    37373736    } data;                             ///< value of metadata
    37383737    char *comment;                      ///< optional comment ("", not NULL)
     
    37533752\filbreak
    37543753\begin{verbatim}
    3755 typedef enum {                          ///< type of item.data is:
    3756     PS_META_PRIMITIVE,                  ///< primitive type: use item.ptype
    3757     PS_META_LIST,                       ///< psList; use item.data.list (used for non-unique data)
    3758     PS_META_META,                       ///< psMetadata: use item.data.list
    3759     PS_META_STR,                        ///< string (item.data.V)
    3760     PS_META_MATH,                       ///< psScalar, psVector, psImage (item.data.V)
    3761     PS_META_JPEG,                       ///< JPEG (item.data)
    3762     PS_META_PNG,                        ///< PNG (item.data)
    3763     PS_META_ASTROM,                     ///< astrometric coefficients (item.data)
    3764     PS_META_TIME,                       ///< psTime (item.data.V)
    3765     PS_META_UNKNOWN,                    ///< other (item.data)
    3766     PS_META_NTYPE                       ///< Number of types; must be last
     3754typedef enum {                         ///< type of item.data is:
     3755    PS_META_S32  = PS_TYPE_S32,        ///< psS32 primitive data.
     3756    PS_META_F32  = PS_TYPE_F32,        ///< psF32 primitive data.
     3757    PS_META_F64  = PS_TYPE_F64,        ///< psF64 primitive data.
     3758    PS_META_BOOL = PS_TYPE_BOOL,       ///< psBool primitive data.
     3759    PS_META_LIST = 0x10000,            ///< List data (Stored as item.data.list).
     3760    PS_META_STR,                       ///< String data (Stored as item.data.V).
     3761    PS_META_VEC,                       ///< Vector data (Stored as item.data.V).
     3762    PS_META_IMG,                       ///< Image data (Stored as item.data.V).
     3763    PS_META_HASH,                      ///< Hash data (Stored as item.data.V).
     3764    PS_META_LOOKUPTABLE,               ///< Lookup table data (Stored as item.data.V).
     3765    PS_META_JPEG,                      ///< JPEG data (Stored as item.data.V).
     3766    PS_META_PNG,                       ///< PNG data (Stored as item.data.V).
     3767    PS_META_ASTROM,                    ///< Astrometric coefficients (Stored as item.data.V).
     3768    PS_META_UNKNOWN,                   ///< Other data (Stored as item.data.V).
     3769    PS_META_MULTI                      ///< Used internally, do not create a metadata item of this type.
    37673770} psMetadataType;
    37683771\end{verbatim}
    3769 If the data is a PSLib primitive data value, the primitive data type
    3770 is given by the value of \code{ptype}.
     3772The macro \code{PS_META_IS_PRIMITIVE(psMetadataType.type)} returns
     3773true if the type is one of the primitive data types (S32, F64, etc).
     3774In such a case, the data value is directly available.  Otherwise, a
     3775pointer to the data is available.
    37713776
    37723777A collection of metadata is represented by the \code{psMetadata} structure:
     
    37923797\code{psMetadata.hash} entries, which are required to have unique
    37933798keys, would have a single entry with the keyword of the repeated key,
    3794 with the value of \code{psMetadataType} set to \code{PS_META_LIST},
     3799with the value of \code{psMetadataType} set to \code{PS_META_MULTI},
    37953800and the \code{psMetadataItem.data} element pointing to a \code{psList}
    37963801containing the actual entries.  If \code{psMetadataItemAlloc} is
    3797 called with the type set to \code{PS_META_LIST}, such a repeated key
    3798 is created.  If the data value passed to \code{psMetadataItemAlloc}
    3799 (the quantity in ellipsis) is \code{NULL}, then an empty
    3800 \code{psMetadataItem} with the given keyword is created to hold future
    3801 entries of that keyword.
    3802 
    3803 The \code{psMetadataAdd} routine is required to check that all
    3804 metadata names are unique unless the type is already qualified as
    3805 \code{PS_META_LIST}; in this case the data are added to the
    3806 corresponding \code{psMetadataItem.data} list.
     3802called with the type set to \code{PS_META_MULTI}, such a repeated key
     3803is created.  In this case, the data value passed to
     3804\code{psMetadataItemAlloc} (the quantity in ellipsis) must be
     3805\code{NULL}.  An empty \code{psMetadataItem} with the given keyword is
     3806created to hold future entries of that keyword.
    38073807
    38083808\subsubsection{Metadata APIs}
     3809
     3810\begin{verbatim}
     3811psMetadata *psMetadataAlloc(void);
     3812\end{verbatim}
     3813
     3814The constructor for the collection of metadata, \code{psMetadata},
     3815simply returns an empty metadata container (employing the constructors
     3816for the doubly-linked list and hash table).  The destructor needs to
     3817free each of the \code{psMetadataItem}s.
     3818
     3819\begin{verbatim}
     3820psMetadataItem *psMetadataItemAlloc(const char *name, psMetadataType type, const char *comment, ...);
     3821psMetadataItem *psMetadataItemAllocV(const char *name, psMetadataType type, const char *comment, va_list list);
     3822\end{verbatim}
    38093823
    38103824The allocator for \code{psMetadataItem} returns a full
     
    38213835list must be interpreted appropriately by the \code{va_list} operators
    38223836in the function.
    3823 \begin{verbatim}
    3824 psMetadataItem *psMetadataItemAlloc(const char *name, psMetadataType type, const char *comment, ...);
    3825 psMetadataItem *psMetadataItemAllocV(const char *name, psMetadataType type, const char *comment, va_list list);
    3826 \end{verbatim}
    3827 
    3828 The constructor for the collection of metadata, \code{psMetadata},
    3829 simply returns an empty metadata container (employing the constructors
    3830 for the doubly-linked list and hash table).  The destructor needs to
    3831 free each of the \code{psMetadataItem}s using \code{psMetadataItemFree}.
    3832 \begin{verbatim}
    3833 psMetadata *psMetadataAlloc(void);
     3837
     3838\begin{verbatim}
     3839bool psMetadataAddItem(psMetadata *md, psMetadataItem *item, int location, int mode);
     3840bool psMetadataAdd(psMetadata *md, int location, const char *name, int format, const char *comment, ...);
     3841bool psMetadataAddV(psMetadata *md, int location, const char *name, int format, const char *comment,
     3842                    va_list list);
    38343843\end{verbatim}
    38353844
     
    38463855the \code{psList}.  The entry \code{mode} for \code{psMetadataAddItem}
    38473856is a bit mask constructed by OR-ing the allowed option flags (eg,
    3848 \code{PS_META_REPLACE}) which specifies minor variations on the
     3857\code{PS_META_REPLACE}) which specify minor variations on the
    38493858behavior.  The \code{format} entry, which specifies both the metadata
    38503859type and the optional flags, is constructed by bit-wise OR-ing the
    3851 appropriate \code{psMetadataType} and allowed option option flags.
    3852 Care should be taken not to leak memory when appending an item for
    3853 which the key already exists in the metadata (and is not
    3854 \code{PS_META_LIST}).
    3855 %
    3856 \begin{verbatim}
    3857 bool psMetadataAddItem(psMetadata *md, psMetadataItem *item, int location, int mode);
    3858 bool psMetadataAdd(psMetadata *md, int location, const char *name, int format, const char *comment, ...);
    3859 bool psMetadataAddV(psMetadata *md, int location, const char *name, int format, const char *comment,
    3860                     va_list list);
     3860appropriate \code{psMetadataType} and allowed option flags.  Care
     3861should be taken not to leak memory when appending an item for which
     3862the key already exists in the metadata (and is not
     3863\code{PS_META_MULTI}).
     3864%
     3865
     3866\begin{verbatim}
     3867typedef enum {                          ///< option flags for psMetadata functions
     3868    PS_META_DEFAULT,                    ///< default behavior (0x0000) for use in mode above
     3869    PS_META_REPLACE,                    ///< allow entry to be replaced
     3870    PS_META_DUPLICATE_OK,               ///< allow entry to be replaced
     3871} psMetadataFlags;
    38613872\end{verbatim}
    38623873
     
    38713882place.
    38723883
    3873 \code{PS_META_REPLACE}: If the given metadata item exists in the
    3874 metadata list, and is not of type \code{PS_META_LIST} or
    3875 \code{PS_META_META} (ie, not a container type), then this entry is
    3876 allowed to replace the existing entry.  If this mode bit is not set, a
    3877 duplicate (non-container-type) entry is an error.
    3878 
    3879 \begin{verbatim}
    3880 typedef enum {                          ///< option flags for psMetadata functions
    3881     PS_META_DEFAULT,                    ///< default behavior (0x0000) for use in mode above
    3882     PS_META_REPLACE,                    ///< allow entry to be replaced
    3883 } psMetadataFlags;
    3884 \end{verbatim}
     3884\code{PS_META_REPLACE}: Replace an existing, unique entry. If the
     3885given metadata item exists in the metadata collection, and is not of
     3886type \code{PS_META_MULTI}, then the item replaces the existing entry.
     3887
     3888\code{PS_META_DUPLICATE_OK}: Allow the new metadata item key to be a
     3889duplicate (ie, \code{PS_META_MULTI}).  If an existing item with the
     3890same key is already \code{PS_META_MULTI}, the new item is added to the
     3891\code{PS_META_MULTI} list.  If the existing item is not
     3892\code{PS_META_MULTI}, a \code{PS_META_MULTI} list is created to
     3893contain both the existing item and the new item.  The original entry's
     3894location on the psMetadata.list must be maintained.
     3895
     3896There are several of cases to handle for duplication of an existing
     3897key by a new key, some identified above.  The following situations
     3898must also be handled:
     3899
     3900If the new key already exists, but is not \code{PS_META_MULTI}, and
     3901the new item is not flagged as either \code{PS_META_DUPLICATE_OK} or
     3902\code{PS_META_REPLACE}, an error is raised. 
     3903
     3904If the new key already exists, and the existing item is
     3905\code{PS_META_MULTI}, the new item is added to the MULTI list.  Note
     3906that if the new item is also of type \code{PS_META_MULTI}, no action
     3907is taken, but a successful exit status is returned (the action of
     3908adding a \code{PS_META_MULTI} item to the metadata is equivalent to
     3909setting that key to be tagged as \code{PS_META_MULTI}.  If it is
     3910{\em already} \code{PS_META_MULTI}, this effect has already been
     3911achieved). 
    38853912
    38863913An example of code to use these metadata APIs to generate the
     
    40234050formatted string.  A \code{NULL} shall be returned on error.  The
    40244051\code{psMetadataConfigWrite} behaves the same as \code{psMetadataConfigFormat}
    4025 except that the string is writen out to \code{filename}.  \code{false} is
     4052except that the string is written out to \code{filename}.  \code{false} is
    40264053returned on failure.
    40274054
     
    40794106  1.23+4.56i in the future.}
    40804107
    4081 \tbd{May add null, Not-a-Number (NaN), denormalized, underflow, overflow,
     4108\tbd{May add null, Not-a-Number (NaN), de-normalized, underflow, overflow,
    40824109and/or +/-infinity values for selected types.}
    40834110
     
    40884115in the configuration file as non-unique with a \code{MULTI} declaration.  In
    40894116the form \code{[keyword] MULTI}.  No other data may be provided on this line,
    4090 though a comment, preceeded by the comment marker, is valid.  A warning shall
     4117though a comment, preceded by the comment marker, is valid.  A warning shall
    40914118be produced when a key which has not been specified to be non-unique is
    40924119repeated; in this case, the former value shall be overwritten if
     
    41404167We support a modest tree structure by defining a reserved keyword \code{TYPE}.
    41414168Any line in the config file which starts with the word \code{TYPE} shall be
    4142 interpretted as defining a new valid type.  The defined type name follows the
     4169interpreted as defining a new valid type.  The defined type name follows the
    41434170word \code{TYPE}, and is in turn followed by an arbitrary number of words.
    41444171These words are to be interpreted as the names of an embedded \code{psMetadata}
     
    42574284
    42584285The next pair of functions read from and write to a file descriptor.
    4259 The first converts the imcoming data to a complete \code{psXMLDoc}
     4286The first converts the incoming data to a complete \code{psXMLDoc}
    42604287(also in memory), the second writes the \code{psXMLDoc} to the file
    42614288descriptor:
     
    43494376collection represents a single table field.  The name of the field is
    43504377given by the name of the \code{psMetadataItem} and the data type is
    4351 give by the \code{psMetadataItem.type} and \code{psMetadataItem.ptype}
    4352 entries.  A lookup table should be used to convert from PSLib types
    4353 into MySQL compatible SQL data types.  For example, a
    4354 \code{PS_META_STR} would map to an SQL99 varchar.  If the value of
    4355 \code{type} is \code{PS_META_STR} then the \code{psMetadataItem.data}
    4356 element is set to a string with the length for the field written as a
    4357 text string.  The value of the \code{psMetadataItem.data} element is
    4358 unused for the \code{PS_META_PRIMITIVE} types.  Other metadata types
    4359 beyond \code{PS_META_STR} and \code{PS_META_PRIMITIVE} are not allowed
    4360 in a table definition metadata collection.
     4378given by the \code{psMetadataItem.type} entry.  A lookup table should
     4379be used to convert from PSLib types into MySQL compatible SQL data
     4380types.  For example, a \code{PS_META_STR} would map to an SQL99
     4381varchar.  If the value of \code{type} is \code{PS_META_STR} then the
     4382\code{psMetadataItem.data} element is set to a string with the length
     4383for the field written as a text string.  The value of the
     4384\code{psMetadataItem.data} element is unused for the
     4385\code{PS_META_PRIMITIVE} types.  Other metadata types beyond
     4386\code{PS_META_STR} and \code{PS_META_PRIMITIVE} are not allowed in a
     4387table definition metadata collection.
    43614388
    43624389Database indexes can be specified setting the \code{comment} field to
     
    43744401\begin{verbatim}
    43754402    psArray *psDBSelectColumn(psDB *dbh, const char *tableName, const char *col, const psU64 limit);
    4376     psVector *psDBSelectColumnNum(psDB *dbh, const char *tableName, const char *col, psElemType pType, const psU64 limit);
     4403    psVector *psDBSelectColumnNum(psDB *dbh, const char *tableName, const char *col, psMetadataType type, const psU64 limit);
    43774404\end{verbatim}
    43784405
     
    43814408the entire range is returned.  The database response is processed and a
    43824409\code{psArray} of strings is returned.  The Num version of the function returns
    4383 the data in a \code{psVector}, data cast to \code{pType}.  It returns an error
     4410the data in a \code{psVector}, data cast to \code{type}.  It returns an error
    43844411(NULL) if the requested field is not a numerical type.
    43854412
     
    44224449\end{verbatim}
    44234450
    4424 Fetch all columns, as either a psVector or a psArray depnding on whether or not
     4451Fetch all columns, as either a psVector or a psArray depending on whether or not
    44254452the column is numeric, and return them in a psMetadata structure where
    44264453psMetadataItem.name contains the column's name.
     
    45964623at by the \code{psFits} file pointer.  The row number to be read is
    45974624given by \code{row}.  The result is returned as a \code{psMetadata}
    4598 collection with elements of the apporpriate types and keys
     4625collection with elements of the appropriate types and keys
    45994626corresponding to the table column names.  The function must apply the
    46004627needed byte-swapping on the data in the row based on the description
     
    47264753\subsubsection{Constructors}
    47274754
    4728 To allocate a new, initalized to zero, \code{psTime}:
     4755To allocate a new, initialized to zero, \code{psTime}:
    47294756
    47304757\begin{verbatim}
     
    47484775This function may be used to convert between the various \code{psTimeType} time
    47494776representations.  The \code{time} is modified and returned.  Conversion between
    4750 all of the \emph{SI} length second systems should be implimented by first
     4777all of the \emph{SI} length second systems should be implemented by first
    47514778converting to TAI and then to the destination system.  UT1 is a special case
    4752 for conversion as it uses variable length secounds.  Conversation to UT1, via
     4779for conversion as it uses variable length seconds.  Conversation to UT1, via
    47534780TAI, is allowed but conversion \emph{from} UT1 is currently forbidden.
    47544781
     
    47904817
    47914818The following function accepts \code{PS_TIME_UTC} objects and
    4792 determines if the time is potentaly a leapsecond, returning
     4819determines if the time is potentially a leapsecond, returning
    47934820\code{TRUE} if so.
    47944821
     
    48554882
    48564883Note that in both these functions the difference between two times is
    4857 the elapsed number of seconds, inclusing leap seconds.  For example,
     4884the elapsed number of seconds, including leap seconds.  For example,
    48584885if we add 30 seconds to 1998-12-31T23:59:45Z, the result is
    485948861999-01-01T00:00:14Z, since a leap second was introduced at
     
    48734900$x_p$ and $y_p$, may be determined from table lookups.  Tables are available
    48744901covering different time periods and with different time resolution, and so it
    4875 is important to be able to utilise multiple tables.  Some tables may be found
     4902is important to be able to utilize multiple tables.  Some tables may be found
    48764903at:
    48774904
     
    52445271Spherical rotations represent coordinate transformation in 3-D, as
    52455272well as the effects of precession and nutation.  We need spherical
    5246 rotatations to convert between ICRS, Galactic and Ecliptic
     5273rotations to convert between ICRS, Galactic and Ecliptic
    52475274coordinates, and to determine Alt-Az coordinates for sources.  All of
    52485275these basic spherical transformations represent rotations of the
     
    52965323
    52975324The following function combines two rotations, to produce a single
    5298 rotation which is the equivallent of applying the first rotation and
     5325rotation which is the equivalent of applying the first rotation and
    52995326then the second.  The output rotation may be supplied, or will be
    53005327allocated if \code{NULL}.
     
    53895416Celestial Reference System (GCRS), which uses the earth barycenter as
    53905417a reference.  The transformation between these two includes the
    5391 abberation due to the Earth's velocity, the parallax of the object,
     5418aberration due to the Earth's velocity, the parallax of the object,
    53925419which depends on both the Earth's position and the distance to the
    53935420object of interest, and the general relativistic correction for the
    53945421bending of light as it approaches the Earth.
    53955422
    5396 The next set of transformations compenstate for the 3-D rotation of
     5423The next set of transformations compensate for the 3-D rotation of
    53975424the Earth on various timescales, including the effects of precession,
    53985425nutation, and simple solid-body rotation.  These calculations can be
     
    54005427precision.  Since the Earth's rotation is constantly affected by
    54015428stochastic processes (weather, earthquakes, etc), these conversions
    5402 are constantly modified by observations reported by authoratative
     5429are constantly modified by observations reported by authoritative
    54035430sources such as the US Naval Observatory.  The target of this
    54045431transformation is the International Terrestrial Reference System
    54055432(ITRS), which is fixed with respect to the Earth's crust.  This
    5406 transformation is subdivided into slow precesion and nutation
     5433transformation is subdivided into slow precession and nutation
    54075434(yielding the coordinate system CIP/CEO), followed by the Earth's
    54085435rotation (yielding the coordinate system CIP/TEO), and finally
     
    57195746
    57205747\tbd{This section is to be deferred, and for now consists only of
    5721 placeholders, with no functional items.}
     5748place holders, with no functional items.}
    57225749
    57235750Photometric observations are performed in an instrumental photometric
Note: See TracChangeset for help on using the changeset viewer.