Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://www.atnf.csiro.au/computing/software/casacore/casacore-1.2.0/doc/html/MeasMath_8h_source.html
Дата изменения: Unknown Дата индексирования: Mon Feb 14 20:06:24 2011 Кодировка: Поисковые слова: п п п п п п п п п п п п п п п п п п п п п п п п п п |
00001 //# MeasMath.h: Measure conversion aid routines 00002 //# Copyright (C) 1998,2000,2002-2004,2007 00003 //# Associated Universities, Inc. Washington DC, USA. 00004 //# 00005 //# This library is free software; you can redistribute it and/or modify it 00006 //# under the terms of the GNU Library General Public License as published by 00007 //# the Free Software Foundation; either version 2 of the License, or (at your 00008 //# option) any later version. 00009 //# 00010 //# This library is distributed in the hope that it will be useful, but WITHOUT 00011 //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 00012 //# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public 00013 //# License for more details. 00014 //# 00015 //# You should have received a copy of the GNU Library General Public License 00016 //# along with this library; if not, write to the Free Software Foundation, 00017 //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA. 00018 //# 00019 //# Correspondence concerning AIPS++ should be addressed as follows: 00020 //# Internet email: aips2-request@nrao.edu. 00021 //# Postal address: AIPS++ Project Office 00022 //# National Radio Astronomy Observatory 00023 //# 520 Edgemont Road 00024 //# Charlottesville, VA 22903-2475 USA 00025 //# 00026 //# 00027 //# $Id: MeasMath.h 20615 2009-06-09 02:16:01Z Malte.Marquarding $ 00028 00029 #ifndef MEASURES_MEASMATH_H 00030 #define MEASURES_MEASMATH_H 00031 00032 //# Includes 00033 #include <casa/aips.h> 00034 #include <casa/Quanta/Euler.h> 00035 #include <casa/Quanta/RotMatrix.h> 00036 #include <casa/Quanta/MVPosition.h> 00037 #include <casa/Quanta/MVDirection.h> 00038 #include <measures/Measures/MeasFrame.h> 00039 00040 namespace casa { //# NAMESPACE CASA - BEGIN 00041 00042 //# Forward Declarations 00043 class Measure; 00044 class MRBase; 00045 class Precession; 00046 class Nutation; 00047 class SolarPos; 00048 class Aberration; 00049 00050 //# Typedefs 00051 00052 // <summary> Measure conversion aid routines </summary> 00053 00054 // <use visibility=local> 00055 00056 // <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="tMeasure" demos=""> 00057 // </reviewed> 00058 00059 // <prerequisite> 00060 // <li> <linkto class=Measure>MeasConvert</linkto> class 00061 // <li> <linkto class=MConvertBase>overall conversion</linkto> class 00062 // </prerequisite> 00063 // 00064 // <etymology> 00065 // Measure and Mathematics 00066 // </etymology> 00067 // 00068 // <synopsis> 00069 // The conversion of measures like MDirection, MPosition etc have many 00070 // conversion routines in common. This class combines all of these 00071 // conversions, including data caches for re-use. 00072 // 00073 // The class is always created by the default constructor. For each operation 00074 // (like e.g. Precession application), it has three function: 00075 // <ul> 00076 // <li> create(): create an instance of the data necessary to convert 00077 // <li> apply(): apply the conversion (in the sense of from standard to 00078 // perturbed (e.g. from J2000 to TOPO)) 00079 // <li> deapply(): in the reverse direction of apply 00080 // </ul> 00081 // </synopsis> 00082 // 00083 // <example> 00084 // See <linkto class=MCDirection>MCDirection</linkto> source for how to use 00085 // the class. 00086 // </example> 00087 // 00088 // <motivation> To re-use code for a specific measure conversion, and to ease 00089 // the caching administration for each individual conversion. 00090 // </motivation> 00091 // 00092 // <todo asof="1998/09/30"> 00093 // <li> Nothing I know of 00094 // </todo> 00095 00096 class MeasMath { 00097 00098 public: 00099 00100 //# Constructors 00101 // Default constructor 00102 MeasMath(); 00103 00104 //# Destructor 00105 ~MeasMath(); 00106 00107 //# Member functions 00108 // Initialise the frame to be used. The apply direction uses the 00109 // inref if present; the deapply the outref if present, otherwise the 00110 // other one. 00111 void initFrame(MRBase &outref, MRBase &inref); 00112 00113 // Functions to create a particular conversion instance; to apply 00114 // or deapply the instance. 00115 // <group> 00116 // Precession for J2000 (IAU definition) and in coordinates 00117 // <group> 00118 void createPrecession(); 00119 void applyPrecession(MVPosition &in); 00120 void deapplyPrecession(MVPosition &in); 00121 // </group> 00122 // Precession for B1950 and in coordinates 00123 // <group> 00124 void createPrecessionB1950(); 00125 void applyPrecessionB1950(MVPosition &in); 00126 void deapplyPrecessionB1950(MVPosition &in); 00127 // </group> 00128 // Nutation for J2000 (IAU standard) and in coordinates 00129 // <group> 00130 void createNutation(); 00131 void applyNutation(MVPosition &in); 00132 void deapplyNutation(MVPosition &in); 00133 // </group> 00134 // Nutation for B1950 and in coordinates 00135 // <group> 00136 void createNutationB1950(); 00137 void applyNutationB1950(MVPosition &in); 00138 void deapplyNutationB1950(MVPosition &in); 00139 // </group> 00140 // Precession and Nutation for J2000 or B1950 and in coordinates 00141 // <group> 00142 void createPrecNutat(); 00143 void applyPrecNutat(MVPosition &in); 00144 void deapplyPrecNutat(MVPosition &in); 00145 void createPrecNutatB1950(); 00146 void applyPrecNutatB1950(MVPosition &in, Bool doin=True); 00147 void deapplyPrecNutatB1950(MVPosition &in, Bool doin=True); 00148 // </group> 00149 // Aberration for J2000 (IAU definition) and B1950 and in coordinates 00150 // <group> 00151 void createAberration(); 00152 void applyAberration(MVPosition &in, Bool doin=True); 00153 void deapplyAberration(MVPosition &in, Bool doin=True); 00154 void createAberrationB1950(); 00155 void applyAberrationB1950(MVPosition &in, Bool doin=True); 00156 void deapplyAberrationB1950(MVPosition &in, Bool doin=True); 00157 // </group> 00158 // Solar bending for J2000 (IAU definition) and in coordinates. 00159 // False if dependent on frame direction rather than input one. 00160 // <group> 00161 void createSolarPos(); 00162 void applySolarPos(MVPosition &in, Bool doin=True); 00163 void deapplySolarPos(MVPosition &in, Bool doin=True); 00164 // </group> 00165 // Various conversions 00166 // <group> 00167 void applyHADECtoITRF(MVPosition &in); 00168 void deapplyHADECtoITRF(MVPosition &in); 00169 void applyHADECtoAZEL(MVPosition &in); 00170 void deapplyHADECtoAZEL(MVPosition &in); 00171 void applyHADECtoAZELGEO(MVPosition &in); 00172 void deapplyHADECtoAZELGEO(MVPosition &in); 00173 void applyJ2000toB1950(MVPosition &in, Double epo, Bool doin); 00174 void deapplyJ2000toB1950(MVPosition &in, Double epo, Bool doin); 00175 void applyJ2000toB1950(MVPosition &in, Bool doin=True); 00176 void deapplyJ2000toB1950(MVPosition &in, Bool doin=True); 00177 void applyJ2000toB1950_VLA(MVPosition &in, Bool doin=True); 00178 void deapplyJ2000toB1950_VLA(MVPosition &in, Bool doin=True); 00179 void applyETerms(MVPosition &in, Bool doin=True, Double epo=2000.0); 00180 void deapplyETerms(MVPosition &in, Bool doin=True,