IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Apr 27, 2005, 9:59:04 AM (21 years ago)
Author:
eugene
Message:

nearly final for cycle 6, NO changes for psRegion

File:
1 edited

Legend:

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

    r3767 r3772  
    1 %%% $Id: psLibSDRS.tex,v 1.207 2005-04-25 21:20:41 price Exp $
     1%%% $Id: psLibSDRS.tex,v 1.208 2005-04-27 19:59:04 eugene Exp $
    22\documentclass[panstarrs,spec]{panstarrs}
    33
     
    1111\project{Pan-STARRS Image Processing Pipeline}
    1212\organization{Institute for Astronomy}
    13 \version{13}
     13\version{14}
    1414\docnumber{PSDC-430-007}
    1515
     
    444411 & 2005 Jan 21 & draft for cycle 5 \\ \hline
    454512 & 2005 Feb 09 & final for cycle 5 \\
     4613 & 2005 Mar 30 & draft for cycle 6 \\
     4714 & 2005 Apr 27 & final for cycle 6 \\
    4648\RevisionsEnd
    4749
     
    13741376If the value of \code{vector} is \code{NULL}, then
    13751377\code{psVectorRealloc} must return an error.
     1378
     1379\begin{verbatim}
     1380psVector *psVectorExtend(psVector *vector, int delta, int nExtend);
     1381\end{verbatim}
     1382
     1383This function increments \code{psVector.n}, the number of elements in
     1384the vector by \code{nExtend}.  If the current length of the vector
     1385plus {\em twice} the number of new elements is greater than the
     1386allocated space, an additional \code{delta} elements are allocated.
     1387If the value of \code{delta} is less than 1, 10 shall be used. 
     1388
     1389Here is an example of how \code{psVectorExtend} is used to
     1390automatically increment the vector length.
     1391\begin{verbatim}
     1392  // create data vector
     1393  psVector *y = psVectorAlloc (100);
     1394  y->n = 0;
     1395  for (int i = 0; i < 1000; i++) {
     1396    y->data.F32[y->n + 0] = 2*i;
     1397    y->data.F32[y->n + 1] = 2*i;
     1398    y->data.F32[y->n + 2] = 2*i;
     1399    psVectorExtend (y, 100, 3);
     1400    // increments n by 1, extends length if needed by 100
     1401  }
     1402\end{verbatim}
     1403Note that the specification that the allocation always be greater than
     1404the number of elements by twice the number of new elements implies
     1405that there will be room on the next loop for \code{nExtend} new
     1406elements, as in this example.
    13761407
    13771408\subsection{Simple Images}
     
    14921523\code{delta} defines how many elements to add on each pass (if this
    14931524value is less than 1, 10 shall be used).
     1525
     1526\begin{verbatim}
     1527psBool psArrayRemove(psArray *array, psPtr value);
     1528\end{verbatim}
     1529
     1530This function removes all entries of \code{value} in the \code{array},
     1531reducing the total number of elements of \code{array} as needed.
     1532Returns \code{TRUE} if any elements were removed, otherwise
     1533\code{FALSE}.
    14941534
    14951535\begin{verbatim}
     
    26792719} psImageCutDirection;
    26802720
    2681 psVector *psImageSlice(psVector *out, psVector *coords, const psImage *input,
    2682                        const psImage *mask, unsigned int maskVal, int x0, int y0,
    2683                        int x1, int y1, psImageCutDirection direction, const psStats *stats);
     2721psVector *psImageSlice(psVector *out,
     2722                       psVector *coords,
     2723                       const psImage *input,
     2724                       const psImage *mask,
     2725                       unsigned int maskVal,
     2726                       int x0, int y0, int x1, int y1,
     2727                       psImageCutDirection direction,
     2728                       const psStats *stats);
    26842729\end{verbatim}
    26852730Extract pixels from rectlinear region to a vector (array of floats).
     
    39163961the conventions of the \code{psList} iterators.
    39173962\begin{verbatim}
    3918 psListIterator *psMetadataIteratorAlloc(psMetadata *md, int location, bool mutable);
     3963psListIterator *psMetadataIteratorAlloc(psMetadata *md, int location, const char *regex);
    39193964bool psMetadataIteratorSet(psListIterator *iterator, int location);
    3920 psMetadataItem *psMetadataGetAndIncrement(psListIterator *iterator, const char *regex);
    3921 psMetadataItem *psMetadataGetAndDecrement(psListIterator *iterator, const char *regex);
     3965psMetadataItem *psMetadataGetAndIncrement(psListIterator *iterator);
     3966psMetadataItem *psMetadataGetAndDecrement(psListIterator *iterator);
    39223967\end{verbatim}
    39233968
     
    45094554bool psFitsUpdateImage(psFits *fits, const psImage *input, psRegion region, int z);
    45104555\end{verbatim}
    4511 \tbd{we have discussed this as the alternate name}
    45124556Write an image section to the open \code{psFits} file pointer.  This
    45134557operation may write a portion of an image over the existing bytes of
     
    46094653
    46104654\begin{verbatim}
    4611 bool psFitsUpdateTable(psFits* fits, psMetadata *header, psMetadata* data, int row);
     4655bool psFitsUpdateTable(psFits* fits, psMetadata* data, int row);
    46124656\end{verbatim}
    46134657Writes the \code{psMetadata} data to a FITS table at the specified row
     
    53645408\tbd{supply the velocity as an un-normalized 3 vector?}
    53655409
     5410\tbd{MHPCC: please code this section as currently specified.  We will
     5411  define a function, and algorithm, to return the current velocity
     5412  vector given a time and position, which can be fed to this
     5413  function}.
     5414
    53665415\paragraph{Aberration}
    53675416The following function calculates the \code{apparent} position of a
     
    53695418observer, represented as a speed and a direction:
    53705419\begin{verbatim}
    5371 psAberration(psSphere *apparent, psSphere *actual, psSphere direction, double speed);
     5420psSphere *psAberration(psSphere *apparent, psSphere *actual, psSphere direction, double speed);
    53725421\end{verbatim}
    53735422The \code{actual} and \code{apparent} positions are represented as
    53745423\code{psSphere} entries, as is the \code{direction} of motion.  The
    5375 speed in that direction is given in units of the speed of light.
     5424speed in that direction is given in units of the speed of light.  If
     5425the value of \code{apparent} is NULL, a new \code{psSphere} is
     5426allocated, otherwise the point to \code{apparent} is used for the
     5427result.
    53765428
    53775429\paragraph{Gravitational Deflection}
    53785430
     5431The following function calculates the \code{apparent} position of a
     5432star, given its \code{actual} position and the position of the sun:
     5433\begin{verbatim}
     5434psSphere *psGravityDeflection(psSphere *apparent, psSphere *actual, psSphere *sun);
     5435\end{verbatim}
     5436The \code{actual} and \code{apparent} positions are represented as
     5437\code{psSphere} entries, as is position of the sun.  If the value of
     5438\code{apparent} is NULL, a new \code{psSphere} is allocated, otherwise
     5439the point to \code{apparent} is used for the result.
     5440
    53795441\paragraph{Parallax}
    53805442
     
    53855447
    53865448\subsubsection{Transformation from GCRS to ITRS}
     5449
     5450The following functions calculate the components, $X$, $Y$, and $s$,
     5451representing the location of the earth's pole at any moment, or they
     5452determine the velocity of the pole $X'$, $Y'$, $s'$.  We use the
     5453following structure to carry the polar coordinate information.  This
     5454representation may be converted to a rotation between the frames.
     5455
     5456\begin{verbatim}
     5457typedef struct {
     5458  double x;
     5459  double y;
     5460  double s;
     5461} psEarthPole;
     5462\end{verbatim}
    53875463
    53885464\paragraph{Precession/Nutation}
     
    53935469%
    53945470\begin{verbatim}
    5395 psSphere *psEOC_PrecessionModel(double *s, const psTime *time)
     5471psEarthPole *psEOC_PrecessionModel(const psTime *time)
    53965472\end{verbatim}
    53975473%
     
    54015477machine accuracy.
    54025478
    5403 The following function provides interpolated corrections to $X$ and
    5404 $Y$ from the tables provided by the IERS, just as it does for UT1 and
    5405 polar motion. 
    5406 
    5407 \begin{verbatim}
    5408 psSphere *psEOC_GetPolarCorr(const psTime *time, psTimeBulletin bulletin);
     5479The following function provides interpolated corrections to the $X$
     5480and $Y$ components of the polar coordinates from the tables provided
     5481by the IERS, just as it does for UT1 and polar motion.
     5482
     5483\begin{verbatim}
     5484psEarthPole *psEOC_PrecessionCorr(const psTime *time, psTimeBulletin bulletin);
    54095485\end{verbatim}
    54105486
    54115487The polar correction is applied to the $X$ and $Y$ elements of the
    54125488rotation to provide higher accuracy.  The spherical rotation term is
    5413 generated by providing the three elements of the rotation to the
    5414 following function:
    5415 \begin{verbatim}
    5416 psSphereRot *psSphereRot_CEOtoGCRS(double s, const psSphere *pole)
    5417 \end{verbatim}
    5418 The retulting \code{psSphereRot} may be used to determine the rotation
     5489generated by providing the polar coordinate to the following function:
     5490\begin{verbatim}
     5491psSphereRot *psSphereRot_CEOtoGCRS(const psEarthPole *pole)
     5492\end{verbatim}
     5493This function constructs the rotation element as described in the ADD (
     5494The resulting \code{psSphereRot} may be used to determine the rotation
    54195495from CIP/CEO to GCRS.  This function must give results identical to
    54205496the IERS BPN2000, within the limits of machine accuracy.
     
    54345510motion components, $x_p$ and $y_p$, extracted from the IERS tables. 
    54355511\begin{verbatim}
    5436 psSphere *psEOC_GetPoleCoords(const psTime *time, psTimeBulletin bulletin);
     5512psEarthPole *psEOC_GetPolarMotion(const psTime *time, psTimeBulletin bulletin);
    54375513\end{verbatim}
    54385514
     
    54415517ADD).
    54425518\begin{verbatim}
    5443 psSphere *psEOC_TidePolarCorr(const psTime *time);
     5519psEarthPole *psEOC_PolarTideCorr(const psTime *time);
    54445520\end{verbatim}
    54455521
    54465522The following function provides the additional corrections due to nutation
    5447 terms with periods less than or equal to two days:
    5448 \begin{verbatim}
    5449 psSphere *psEOC_NutationCorr(psTime *time);
    5450 \end{verbatim}
    5451 
    5452 The following function should generate the \code{psSphereRot} transform from
    5453 ITRS to CIP/TEO:
    5454 \begin{verbatim}
    5455 psSphereRot *psSphereRot_ITRStoTEO(psSphere pole, psTime *time);
    5456 \end{verbatim}
    5457 The time argument should be used to internally calculate $s'$.
    5458 This function should give identical results to the IERS POM2000 subroutine.
     5523terms with periods less than or equal to two days, as well as the
     5524correction to the $s'$ component of the polar motion:
     5525\begin{verbatim}
     5526psEarthPole *psEOC_NutationCorr(psTime *time);
     5527\end{verbatim}
     5528
     5529The following function converts the polar motion corrections to a
     5530spherical rotation using the prescription in the ADD:
     5531\begin{verbatim}
     5532psSphereRot *psSphereRot_ITRStoTEO(const psEarthPole *motion);
     5533\end{verbatim}
     5534This function should give identical results to the IERS POM2000
     5535subroutine.
    54595536
    54605537\subsubsection{Earth Orientation Wrappers}
Note: See TracChangeset for help on using the changeset viewer.