38#include <libnova/precession.h>
39#include <libnova/aberration.h>
40#include <libnova/transform.h>
41#include <libnova/nutation.h>
42#include <libnova/sidereal_time.h>
57 ln_get_equ_aber(&libnova_observed, jd, &tempPos);
59 tempPos.ra = libnova_observed.ra - (tempPos.ra - libnova_observed.ra);
60 tempPos.dec = libnova_observed.dec * 2 - tempPos.dec;
65 struct ln_equ_posn libnova_J2000Pos;
67 ln_get_equ_prec2(&tempPos, jd, JD2000, &libnova_J2000Pos);
87 ln_get_equ_prec2(&libnova_J2000Pos, JD2000, jd, &tempPosn);
92 struct ln_equ_posn libnova_observed;
94 ln_get_equ_aber(&tempPosn, jd, &libnova_observed);
107 struct ln_nutation nut;
108 ln_get_nutation (jd, &nut);
110 double mean_ra, mean_dec, delta_ra, delta_dec;
117 double nut_ecliptic =
DEG_TO_RAD(nut.ecliptic + nut.obliquity);
118 double sin_ecliptic = sin(nut_ecliptic);
120 double sin_ra = sin(mean_ra);
121 double cos_ra = cos(mean_ra);
123 double tan_dec = tan(mean_dec);
125 delta_ra = (cos (nut_ecliptic) + sin_ecliptic * sin_ra * tan_dec) * nut.longitude - cos_ra * tan_dec * nut.obliquity;
126 delta_dec = (sin_ecliptic * cos_ra) * nut.longitude + sin_ra * nut.obliquity;
131 delta_ra = -delta_ra;
132 delta_dec = -delta_dec;
134 posn->ra += delta_ra;
135 posn->dec += delta_dec;
147 struct ln_equ_posn libnova_object = {
object->rightascension * 15.0,
object->declination};
148 struct ln_hrz_posn horizontalPos;
152 double apparentSidereal = ln_get_apparent_sidereal_time(JD);
153 ln_get_hrz_from_equ_sidereal_time(&libnova_object, &libnova_location, apparentSidereal, &horizontalPos);
155 position->
altitude = horizontalPos.alt;
167 struct ln_hrz_posn libnova_object = {
range360(object->azimuth + 180),
object->altitude};
168 struct ln_equ_posn equatorialPos;
170 ln_get_equ_from_hrz(&libnova_object, &libnova_location, JD, &equatorialPos);
double range360(double r)
range360 Limits an angle to be between 0-360 degrees.
Implementations for common driver routines.
Namespace to encapsulate INDI client, drivers, and mediator classes.
void ln_get_equ_nut(ln_equ_posn *posn, double jd, bool reverse)
apply or remove nutation
void J2000toObserved(IEquatorialCoordinates *J2000pos, double jd, IEquatorialCoordinates *observed)
*J2000toObserved converts catalogue to observed
void EquatorialToHorizontal(IEquatorialCoordinates *object, IGeographicCoordinates *observer, double JD, IHorizontalCoordinates *position)
EquatorialToHorizontal Calculate horizontal coordinates from equatorial coordinates.
void HorizontalToEquatorial(IHorizontalCoordinates *object, IGeographicCoordinates *observer, double JD, IEquatorialCoordinates *position)
HorizontalToEquatorial Calculate Equatorial EOD Coordinates from horizontal coordinates.
void ObservedToJ2000(IEquatorialCoordinates *observed, double jd, IEquatorialCoordinates *J2000pos)
ObservedToJ2000 converts an observed position to a J2000 catalogue position removes aberration,...