00001 #ifndef PM_FPA_ASTROMETRY_H 00002 #define PM_FPA_ASTROMETRY_H 00003 00004 #include "pslib.h" 00005 #include "pmFPA.h" 00006 00007 /** Find cooresponding cell for given FPA coordinate 00008 * 00009 * @return pmCell* the cell cooresponding to the coord in FPA 00010 */ 00011 pmCell* pmCellInFPA( 00012 const psPlane* coord, ///< the coordinate in FPA plane 00013 const pmFPA* FPA ///< the FPA to search for the cell 00014 ); 00015 00016 00017 /** Find cooresponding chip for given FPA coordinate 00018 * 00019 * @return pmChip* the chip cooresponding to coord 00020 */ 00021 pmChip* pmChipInFPA( 00022 const psPlane* coord, ///< the coordinate in FPA plane 00023 const pmFPA* FPA ///< the FPA to search for the cell 00024 ); 00025 00026 00027 /** Find cooresponding cell for given Chip coordinate 00028 * 00029 * @return pmCell* the cell cooresponding to coord 00030 */ 00031 pmCell* pmCellInChip( 00032 const psPlane* coord, ///< the coordinate in Chip plane 00033 const pmChip* chip ///< the chip to search for the cell 00034 ); 00035 00036 00037 /** Translate a cell coordinate into a chip coordinate 00038 * 00039 * @return psPlane* the resulting chip coordinate 00040 */ 00041 psPlane* pmCoordCellToChip( 00042 psPlane* out, ///< a plane struct to recycle. If NULL, a new struct is created 00043 const psPlane* in, ///< the coordinate within Cell 00044 const pmCell* cell ///< the Cell in interest 00045 ); 00046 00047 00048 /** Translate a chip coordinate into a FPA coordinate 00049 * 00050 * @return psPlane* the resulting FPA coordinate 00051 */ 00052 psPlane* pmCoordChipToFPA( 00053 psPlane* out, ///< a plane struct to recycle. If NULL, a new struct is created 00054 const psPlane* in, ///< the coordinate within Chip 00055 const pmChip* chip ///< the chip in interest 00056 ); 00057 00058 00059 /** Translate a FPA coordinate into a Tangent Plane coordinate 00060 * 00061 * @return psPlane* the resulting Tangent Plane coordinate 00062 */ 00063 psPlane* pmCoordFPAToTP( 00064 psPlane* out, ///< a plane struct to recycle. If NULL, a new struct is created 00065 const psPlane* in, ///< the coordinate within FPA 00066 double color, ///< Color of source 00067 double magnitude, ///< Magnitude of source 00068 const pmFPA* fpa ///< the FPA in interest 00069 ); 00070 00071 00072 /** Translate a Tangent Plane coordinate into a Sky coordinate 00073 * 00074 * @return psSphere* the resulting Sky coordinate 00075 */ 00076 psSphere* pmCoordTPToSky( 00077 psSphere* out, ///< a sphere struct to recycle. If NULL, a new struct is created 00078 const psPlane* in, ///< the coordinate within Tangent Plane 00079 const psProjection *projection 00080 ); 00081 00082 /** Translate a cell coordinate into a FPA coordinate 00083 * 00084 * @return psPlane* the resulting FPA coordinate 00085 */ 00086 psPlane* pmCoordCellToFPA( 00087 psPlane* out, ///< a plane struct to recycle. If NULL, a new struct is created 00088 const psPlane* in, ///< the coordinate within cell 00089 const pmCell* cell ///< the cell in interest 00090 ); 00091 00092 00093 /** Translate a cell coordinate into a Sky coordinate 00094 * 00095 * @return psSphere* the resulting Sky coordinate 00096 */ 00097 psSphere* pmCoordCellToSky( 00098 psSphere* out, ///< a sphere struct to recycle. If NULL, a new struct is created 00099 const psPlane* in, ///< the coordinate within cell 00100 double color, ///< Color of source 00101 double magnitude, ///< Magnitude of source 00102 const pmCell* cell ///< the cell in interest 00103 ); 00104 00105 00106 /** Translate a cell coordinate into a Sky coordinate using a 'quick and 00107 * dirty' method 00108 * 00109 * @return psSphere* the resulting Sky coordinate 00110 */ 00111 psSphere* pmCoordCellToSkyQuick( 00112 psSphere* out, ///< a sphere struct to recycle. If NULL, a new struct is created 00113 const psPlane* in, ///< the coordinate within cell 00114 const pmCell* cell ///< the cell in interest 00115 ); 00116 00117 00118 /** Translate a Sky coordinate into a Tangent Plane coordinate 00119 * 00120 * @return psPlane* the resulting Tangent Plane coordinate 00121 */ 00122 psPlane* pmCoordSkyToTP( 00123 psPlane* out, ///< a plane struct to recycle. If NULL, a new struct is created 00124 const psSphere* in, ///< the sky coordinate 00125 const psProjection *projection 00126 ); 00127 00128 /** Translate a Tangent Plane coordinate into a FPA coordinate 00129 * 00130 * @return psPlane* the resulting FPA coordinate 00131 */ 00132 psPlane* pmCoordTPToFPA( 00133 psPlane* out, ///< a plane struct to recycle. If NULL, a new struct is created 00134 const psPlane* in, ///< the coordinate within tangent plane 00135 double color, ///< Color of source 00136 double magnitude, ///< Magnitude of source 00137 const pmFPA* fpa ///< the FPA of interest 00138 ); 00139 00140 00141 /** Translate a FPA coordinate into a chip coordinate 00142 * 00143 * @return psPlane* the resulting chip coordinate 00144 */ 00145 psPlane* pmCoordFPAToChip( 00146 psPlane* out, ///< a plane struct to recycle. If NULL, a new struct is created 00147 const psPlane* in, ///< the FPA coordinate 00148 const pmChip* chip ///< the chip of interest 00149 ); 00150 00151 00152 /** Translate a chip coordinate into a cell coordinate 00153 * 00154 * @return psPlane* the resulting cell coordinate 00155 */ 00156 psPlane* pmCoordChipToCell( 00157 psPlane* out, ///< a plane struct to recycle. If NULL, a new struct is created 00158 const psPlane* in, ///< the Chip coordinate 00159 const pmCell* cell ///< the cell of interest 00160 ); 00161 00162 00163 /** Translate a sky coordinate into a cell coordinate 00164 * 00165 * @return psPlane* the resulting cell coordinate 00166 */ 00167 psPlane* pmCoordSkyToCell( 00168 psPlane* out, ///< a plane struct to recycle. If NULL, a new struct is created 00169 const psSphere* in, ///< the Sky coordinate 00170 float color, ///< Color of source 00171 float magnitude, ///< Magnitude of source 00172 const pmCell* cell ///< the cell of interest 00173 ); 00174 00175 00176 /** Translate a sky coordinate into a cell coordinate using a 'quick and 00177 * dirty' method 00178 * 00179 * @return psPlane* the resulting cell coordinate 00180 */ 00181 psPlane* pmCoordSkyToCellQuick( 00182 psPlane* out, ///< a plane struct to recycle. If NULL, a new struct is created 00183 const psSphere* in, ///< the Sky coordinate 00184 const pmCell* cell ///< the cell of interest 00185 ); 00186 00187 00188 #endif
1.4.4