Changeset 3772 for trunk/doc/pslib/psLibSDRS.tex
- Timestamp:
- Apr 27, 2005, 9:59:04 AM (21 years ago)
- File:
-
- 1 edited
-
trunk/doc/pslib/psLibSDRS.tex (modified) (16 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/doc/pslib/psLibSDRS.tex
r3767 r3772 1 %%% $Id: psLibSDRS.tex,v 1.20 7 2005-04-25 21:20:41 price Exp $1 %%% $Id: psLibSDRS.tex,v 1.208 2005-04-27 19:59:04 eugene Exp $ 2 2 \documentclass[panstarrs,spec]{panstarrs} 3 3 … … 11 11 \project{Pan-STARRS Image Processing Pipeline} 12 12 \organization{Institute for Astronomy} 13 \version{1 3}13 \version{14} 14 14 \docnumber{PSDC-430-007} 15 15 … … 44 44 11 & 2005 Jan 21 & draft for cycle 5 \\ \hline 45 45 12 & 2005 Feb 09 & final for cycle 5 \\ 46 13 & 2005 Mar 30 & draft for cycle 6 \\ 47 14 & 2005 Apr 27 & final for cycle 6 \\ 46 48 \RevisionsEnd 47 49 … … 1374 1376 If the value of \code{vector} is \code{NULL}, then 1375 1377 \code{psVectorRealloc} must return an error. 1378 1379 \begin{verbatim} 1380 psVector *psVectorExtend(psVector *vector, int delta, int nExtend); 1381 \end{verbatim} 1382 1383 This function increments \code{psVector.n}, the number of elements in 1384 the vector by \code{nExtend}. If the current length of the vector 1385 plus {\em twice} the number of new elements is greater than the 1386 allocated space, an additional \code{delta} elements are allocated. 1387 If the value of \code{delta} is less than 1, 10 shall be used. 1388 1389 Here is an example of how \code{psVectorExtend} is used to 1390 automatically 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} 1403 Note that the specification that the allocation always be greater than 1404 the number of elements by twice the number of new elements implies 1405 that there will be room on the next loop for \code{nExtend} new 1406 elements, as in this example. 1376 1407 1377 1408 \subsection{Simple Images} … … 1492 1523 \code{delta} defines how many elements to add on each pass (if this 1493 1524 value is less than 1, 10 shall be used). 1525 1526 \begin{verbatim} 1527 psBool psArrayRemove(psArray *array, psPtr value); 1528 \end{verbatim} 1529 1530 This function removes all entries of \code{value} in the \code{array}, 1531 reducing the total number of elements of \code{array} as needed. 1532 Returns \code{TRUE} if any elements were removed, otherwise 1533 \code{FALSE}. 1494 1534 1495 1535 \begin{verbatim} … … 2679 2719 } psImageCutDirection; 2680 2720 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); 2721 psVector *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); 2684 2729 \end{verbatim} 2685 2730 Extract pixels from rectlinear region to a vector (array of floats). … … 3916 3961 the conventions of the \code{psList} iterators. 3917 3962 \begin{verbatim} 3918 psListIterator *psMetadataIteratorAlloc(psMetadata *md, int location, bool mutable);3963 psListIterator *psMetadataIteratorAlloc(psMetadata *md, int location, const char *regex); 3919 3964 bool psMetadataIteratorSet(psListIterator *iterator, int location); 3920 psMetadataItem *psMetadataGetAndIncrement(psListIterator *iterator , const char *regex);3921 psMetadataItem *psMetadataGetAndDecrement(psListIterator *iterator , const char *regex);3965 psMetadataItem *psMetadataGetAndIncrement(psListIterator *iterator); 3966 psMetadataItem *psMetadataGetAndDecrement(psListIterator *iterator); 3922 3967 \end{verbatim} 3923 3968 … … 4509 4554 bool psFitsUpdateImage(psFits *fits, const psImage *input, psRegion region, int z); 4510 4555 \end{verbatim} 4511 \tbd{we have discussed this as the alternate name}4512 4556 Write an image section to the open \code{psFits} file pointer. This 4513 4557 operation may write a portion of an image over the existing bytes of … … 4609 4653 4610 4654 \begin{verbatim} 4611 bool psFitsUpdateTable(psFits* fits, psMetadata *header, psMetadata* data, int row);4655 bool psFitsUpdateTable(psFits* fits, psMetadata* data, int row); 4612 4656 \end{verbatim} 4613 4657 Writes the \code{psMetadata} data to a FITS table at the specified row … … 5364 5408 \tbd{supply the velocity as an un-normalized 3 vector?} 5365 5409 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 5366 5415 \paragraph{Aberration} 5367 5416 The following function calculates the \code{apparent} position of a … … 5369 5418 observer, represented as a speed and a direction: 5370 5419 \begin{verbatim} 5371 ps Aberration(psSphere *apparent, psSphere *actual, psSphere direction, double speed);5420 psSphere *psAberration(psSphere *apparent, psSphere *actual, psSphere direction, double speed); 5372 5421 \end{verbatim} 5373 5422 The \code{actual} and \code{apparent} positions are represented as 5374 5423 \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. 5424 speed in that direction is given in units of the speed of light. If 5425 the value of \code{apparent} is NULL, a new \code{psSphere} is 5426 allocated, otherwise the point to \code{apparent} is used for the 5427 result. 5376 5428 5377 5429 \paragraph{Gravitational Deflection} 5378 5430 5431 The following function calculates the \code{apparent} position of a 5432 star, given its \code{actual} position and the position of the sun: 5433 \begin{verbatim} 5434 psSphere *psGravityDeflection(psSphere *apparent, psSphere *actual, psSphere *sun); 5435 \end{verbatim} 5436 The \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 5439 the point to \code{apparent} is used for the result. 5440 5379 5441 \paragraph{Parallax} 5380 5442 … … 5385 5447 5386 5448 \subsubsection{Transformation from GCRS to ITRS} 5449 5450 The following functions calculate the components, $X$, $Y$, and $s$, 5451 representing the location of the earth's pole at any moment, or they 5452 determine the velocity of the pole $X'$, $Y'$, $s'$. We use the 5453 following structure to carry the polar coordinate information. This 5454 representation may be converted to a rotation between the frames. 5455 5456 \begin{verbatim} 5457 typedef struct { 5458 double x; 5459 double y; 5460 double s; 5461 } psEarthPole; 5462 \end{verbatim} 5387 5463 5388 5464 \paragraph{Precession/Nutation} … … 5393 5469 % 5394 5470 \begin{verbatim} 5395 ps Sphere *psEOC_PrecessionModel(double *s,const psTime *time)5471 psEarthPole *psEOC_PrecessionModel(const psTime *time) 5396 5472 \end{verbatim} 5397 5473 % … … 5401 5477 machine accuracy. 5402 5478 5403 The following function provides interpolated corrections to $X$ and5404 $Y$ from the tables provided by the IERS, just as it does for UT1 and5405 polar motion. 5406 5407 \begin{verbatim} 5408 ps Sphere *psEOC_GetPolarCorr(const psTime *time, psTimeBulletin bulletin);5479 The following function provides interpolated corrections to the $X$ 5480 and $Y$ components of the polar coordinates from the tables provided 5481 by the IERS, just as it does for UT1 and polar motion. 5482 5483 \begin{verbatim} 5484 psEarthPole *psEOC_PrecessionCorr(const psTime *time, psTimeBulletin bulletin); 5409 5485 \end{verbatim} 5410 5486 5411 5487 The polar correction is applied to the $X$ and $Y$ elements of the 5412 5488 rotation to provide higher accuracy. The spherical rotation term is 5413 generated by providing the three elements of the rotation to the5414 following function: 5415 \begin{verbatim} 5416 psSphereRot *psSphereRot_CEOtoGCRS(double s, const psSphere *pole) 5417 \end{verbatim} 5418 The re tulting \code{psSphereRot} may be used to determine the rotation5489 generated by providing the polar coordinate to the following function: 5490 \begin{verbatim} 5491 psSphereRot *psSphereRot_CEOtoGCRS(const psEarthPole *pole) 5492 \end{verbatim} 5493 This function constructs the rotation element as described in the ADD ( 5494 The resulting \code{psSphereRot} may be used to determine the rotation 5419 5495 from CIP/CEO to GCRS. This function must give results identical to 5420 5496 the IERS BPN2000, within the limits of machine accuracy. … … 5434 5510 motion components, $x_p$ and $y_p$, extracted from the IERS tables. 5435 5511 \begin{verbatim} 5436 ps Sphere *psEOC_GetPoleCoords(const psTime *time, psTimeBulletin bulletin);5512 psEarthPole *psEOC_GetPolarMotion(const psTime *time, psTimeBulletin bulletin); 5437 5513 \end{verbatim} 5438 5514 … … 5441 5517 ADD). 5442 5518 \begin{verbatim} 5443 ps Sphere *psEOC_TidePolarCorr(const psTime *time);5519 psEarthPole *psEOC_PolarTideCorr(const psTime *time); 5444 5520 \end{verbatim} 5445 5521 5446 5522 The 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. 5523 terms with periods less than or equal to two days, as well as the 5524 correction to the $s'$ component of the polar motion: 5525 \begin{verbatim} 5526 psEarthPole *psEOC_NutationCorr(psTime *time); 5527 \end{verbatim} 5528 5529 The following function converts the polar motion corrections to a 5530 spherical rotation using the prescription in the ADD: 5531 \begin{verbatim} 5532 psSphereRot *psSphereRot_ITRStoTEO(const psEarthPole *motion); 5533 \end{verbatim} 5534 This function should give identical results to the IERS POM2000 5535 subroutine. 5459 5536 5460 5537 \subsubsection{Earth Orientation Wrappers}
Note:
See TracChangeset
for help on using the changeset viewer.
