kstars
skypoint.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef SKYPOINT_H
00021 #define SKYPOINT_H
00022
00023 #include <qstring.h>
00024 #include <qptrlist.h>
00025
00026 #include "dms.h"
00027
00047 class KSNumbers;
00048 class CSegment;
00049 class SkyObject;
00050
00051 class SkyPoint {
00052 public:
00058 SkyPoint( const dms& r, const dms& d ) { set( r, d ); }
00059
00065 SkyPoint( const dms *r, const dms *d ) { set( dms(*r), dms(*d) ); }
00066
00072 SkyPoint( double r=0.0, double d=0.0 ) { set( r, d ); }
00073
00077 virtual ~SkyPoint();
00078
00082
00088 void set( const dms& r, const dms& d );
00089
00095 void set( const dms *r, const dms *d ) { set( *r, *d ); }
00096
00102 void set( double r, double d );
00103
00107 void setRA0( dms r ) { RA0.set( r ); }
00108
00113 void setRA0( double r ) { RA0.setH( r ); }
00114
00118 void setDec0( dms d ) { Dec0.set( d ); }
00119
00124 void setDec0( double d ) { Dec0.setD( d ); }
00125
00129 void setRA( dms r ) { RA.set( r ); }
00130
00135 void setRA( double r ) { RA.setH( r ); }
00136
00140 void setDec( dms d ) { Dec.set( d ); }
00141
00146 void setDec( double d ) { Dec.setD( d ); }
00147
00151 void setAlt( dms alt ) { Alt.set( alt ); }
00152
00157 void setAlt( double alt ) { Alt.setD( alt ); }
00158
00162 void setAz( dms az ) { Az.set( az ); }
00163
00168 void setAz( double az ) { Az.setD( az ); }
00169
00173
00174
00179
00180
00184
00185
00190
00191
00195
00198 const dms* ra0() const { return &RA0; }
00199
00202 const dms* dec0() const { return &Dec0; }
00203
00206 const dms* ra() const { return &RA; }
00207
00210 const dms* dec() const { return &Dec; }
00211
00214 const dms* az() const { return &Az; }
00215
00218 const dms* alt() const { return &Alt; }
00219
00222
00223
00226
00227
00231
00238 void EquatorialToHorizontal( const dms* LST, const dms* lat );
00239
00246 void HorizontalToEquatorial( const dms* LST, const dms* lat );
00247
00250 void EquatorialToEcliptic( const KSNumbers *num );
00251
00255 void EclipticToEquatorial( const KSNumbers *num );
00256
00261 void findEcliptic( const dms *Obliquity, dms &EcLong, dms &EcLat );
00262
00267 void setFromEcliptic( const dms *Obliquity, const dms *EcLong, const dms *EcLat );
00268
00273 void Equatorial1950ToGalactic(dms &galLong, dms &galLat);
00274
00279 void GalacticToEquatorial1950(const dms* galLong, const dms* galLat);
00280
00284
00293 virtual void updateCoords( KSNumbers *num, bool includePlanets=true, const dms *lat=0, const dms *LST=0 );
00294
00302 void apparentCoord(long double jd0, long double jdf);
00303
00308 void nutate(const KSNumbers *num);
00309
00314 void aberrate(const KSNumbers *num);
00315
00322 void precessFromAnyEpoch(long double jd0, long double jdf);
00323
00331 SkyPoint Eterms(void);
00332
00345 void B1950ToJ2000(void);
00346
00359 void J2000ToB1950(void);
00360
00366 void addEterms(void);
00367
00373 void subtractEterms(void);
00374
00388 dms angularDistanceTo( SkyPoint *sp);
00389
00390 bool operator == ( SkyPoint &p ) { return ( ra()->Degrees() == p.ra()->Degrees() && dec()->Degrees() == p.dec()->Degrees() ); }
00391
00397 double vRSun(long double jd);
00398
00408 double vHeliocentric(double vlsr, long double jd);
00409
00417 double vHelioToVlsr(double vhelio, long double jd);
00418
00423 double vREarth(long double jd0);
00424
00433 double vGeocentric(double vhelio, long double jd);
00434
00443 double vGeoToVHelio(double vgeo, long double jd);
00444
00450 double vRSite(double vsite[3]);
00451
00460 double vTopocentric(double vgeo, double vsite[3]);
00461
00469 double vTopoToVGeo(double vtopo, double vsite[3]);
00470
00474
00476
00480
00481 QString constellation( QPtrList<CSegment> &seglist, QPtrList<SkyObject> &cnames ) const;
00482
00483
00484 protected:
00489 void precess(const KSNumbers *num);
00490
00491
00492 private:
00493 dms RA0, Dec0;
00494 dms RA, Dec;
00495 dms Alt, Az;
00496 };
00497
00498 #endif