Elliptic Motion


Functions

double ln_solve_kepler (double e, double M)
 Calculate the eccentric anomaly.
double ln_get_ell_mean_anomaly (double n, double delta_JD)
 Calculate the mean anomaly.
double ln_get_ell_true_anomaly (double e, double E)
 Calculate the true anomaly.
double ln_get_ell_radius_vector (double a, double e, double E)
 Calculate the radius vector.
double ln_get_ell_smajor_diam (double e, double q)
 Calculate the semi major diameter.
double ln_get_ell_sminor_diam (double e, double a)
 Calculate the semi minor diameter.
double ln_get_ell_mean_motion (double a)
 Calculate the mean daily motion (degrees/day).
void ln_get_ell_geo_rect_posn (struct ln_ell_orbit *orbit, double JD, struct ln_rect_posn *posn)
 Calculate the objects rectangular geocentric position.
void ln_get_ell_helio_rect_posn (struct ln_ell_orbit *orbit, double JD, struct ln_rect_posn *posn)
 Calculate the objects rectangular heliocentric position.
double ln_get_ell_orbit_len (struct ln_ell_orbit *orbit)
 Calculate the orbital length in AU.
double ln_get_ell_orbit_vel (double JD, struct ln_ell_orbit *orbit)
 Calculate orbital velocity in km/s.
double ln_get_ell_orbit_pvel (struct ln_ell_orbit *orbit)
 Calculate orbital velocity at perihelion in km/s.
double ln_get_ell_orbit_avel (struct ln_ell_orbit *orbit)
 Calculate the orbital velocity at aphelion in km/s.
double ln_get_ell_body_phase_angle (double JD, struct ln_ell_orbit *orbit)
 Calculate the phase angle of the body. The angle Sun - body - Earth.
double ln_get_ell_body_elong (double JD, struct ln_ell_orbit *orbit)
 Calculate the bodies elongation to the Sun..
double ln_get_ell_body_solar_dist (double JD, struct ln_ell_orbit *orbit)
 Calculate the distance between a body and the Sun.
double ln_get_ell_body_earth_dist (double JD, struct ln_ell_orbit *orbit)
 Calculate the distance between a body and the Earth.
void ln_get_ell_body_equ_coords (double JD, struct ln_ell_orbit *orbit, struct ln_equ_posn *posn)
 Calculate a bodies equatorial coords.
int ln_get_ell_body_rst (double JD, struct ln_lnlat_posn *observer, struct ln_ell_orbit *orbit, struct ln_rst_time *rst)
 Calculate the time of rise, set and transit for a body with an elliptic orbit.
int ln_get_ell_body_rst_horizon (double JD, struct ln_lnlat_posn *observer, struct ln_ell_orbit *orbit, double horizon, struct ln_rst_time *rst)
 Calculate the time of rise, set and transit for a body with an elliptic orbit.
int ln_get_ell_body_next_rst (double JD, struct ln_lnlat_posn *observer, struct ln_ell_orbit *orbit, struct ln_rst_time *rst)
 Calculate the time of rise, set and transit for a body with an elliptic orbit.
int ln_get_ell_body_next_rst_horizon (double JD, struct ln_lnlat_posn *observer, struct ln_ell_orbit *orbit, double horizon, struct ln_rst_time *rst)
 Calculate the time of rise, set and transit for a body with an elliptic orbit.
int ln_get_ell_body_next_rst_horizon_future (double JD, struct ln_lnlat_posn *observer, struct ln_ell_orbit *orbit, double horizon, int day_limit, struct ln_rst_time *rst)
 Calculate the time of rise, set and transit for a body with an elliptic orbit.
double ln_get_ell_last_perihelion (double epoch_JD, double M, double n)
 Calculate the julian day of the last perihelion.

Detailed Description

Functions relating to the elliptic motion of bodies.

All angles are expressed in degrees.


Function Documentation

double ln_get_ell_body_earth_dist ( double  JD,
struct ln_ell_orbit orbit 
)

Calculate the distance between a body and the Earth.

Parameters:
JD Julian day.
orbit Orbital parameters
Returns:
Distance in AU
Calculate the distance between an body and the Earth for the given julian day.
Examples:
asteroid.c, and comet.c.

References ln_get_ell_geo_rect_posn(), ln_rect_posn::X, ln_rect_posn::Y, and ln_rect_posn::Z.

Referenced by ln_get_ell_body_phase_angle().

double ln_get_ell_body_elong ( double  JD,
struct ln_ell_orbit orbit 
)

Calculate the bodies elongation to the Sun..

Parameters:
JD Julian day
orbit Orbital parameters
Returns:
Elongation to the Sun.
Calculate the bodies elongation to the Sun..
Examples:
asteroid.c.

References ln_ell_orbit::a, ln_ell_orbit::e, ln_ell_orbit::JD, ln_get_earth_solar_dist(), ln_get_ell_body_solar_dist(), ln_get_ell_mean_anomaly(), ln_get_ell_mean_motion(), ln_get_ell_radius_vector(), ln_rad_to_deg(), ln_range_degrees(), ln_solve_kepler(), and ln_ell_orbit::n.

void ln_get_ell_body_equ_coords ( double  JD,
struct ln_ell_orbit orbit,
struct ln_equ_posn posn 
)

Calculate a bodies equatorial coords.

Parameters:
JD Julian Day.
orbit Orbital parameters.
posn Pointer to hold asteroid position.
Calculate a bodies equatorial coordinates for the given julian day.
Examples:
asteroid.c, and comet.c.

References ln_equ_posn::dec, ln_get_ell_helio_rect_posn(), ln_get_solar_geo_coords(), ln_rad_to_deg(), ln_range_degrees(), ln_equ_posn::ra, ln_rect_posn::X, ln_rect_posn::Y, and ln_rect_posn::Z.

Referenced by ln_get_ell_body_next_rst_horizon(), ln_get_ell_body_next_rst_horizon_future(), and ln_get_ell_body_rst_horizon().

double ln_get_ell_body_next_rst ( double  JD,
struct ln_lnlat_posn observer,
struct ln_ell_orbit orbit,
struct ln_rst_time rst 
)

Calculate the time of rise, set and transit for a body with an elliptic orbit.

Parameters:
JD Julian day
observer Observers position
orbit Orbital parameters
rst Pointer to store Rise, Set and Transit time in JD
Returns:
0 for success, else 1 for circumpolar (above the horizon), -1 for circumpolar (bellow the horizon)
Calculate the time of next rise, set and transit (crosses the local meridian at upper culmination) time of a body with an elliptic orbit for the given Julian day.

This function guarantee, that rise, set and transit will be in <JD, JD+1> range.

Note: this functions returns 1 if the body is circumpolar, that is it remains the whole day above the horizon. Returns -1 when it remains the whole day below the horizon.

References ln_get_ell_body_next_rst_horizon().

double ln_get_ell_body_next_rst_horizon ( double  JD,
struct ln_lnlat_posn observer,
struct ln_ell_orbit orbit,
double  horizon,
struct ln_rst_time rst 
)

Calculate the time of rise, set and transit for a body with an elliptic orbit.

Parameters:
JD Julian day
observer Observers position
orbit Orbital parameters
horizon Horizon height
rst Pointer to store Rise, Set and Transit time in JD
Returns:
0 for success, else 1 for circumpolar (above the horizon), -1 for circumpolar (bellow the horizon)
Calculate the time of next rise, set and transit (crosses the local meridian at upper culmination) time of a body with an elliptic orbit for the given Julian day.

This function guarantee, that rise, set and transit will be in <JD, JD+1> range.

Note: this functions returns 1 if the body is circumpolar, that is it remains the whole day above the horizon. Returns -1 when it remains the whole day below the horizon.

Parameters:
JD Julian day
observer Observers position
orbit Orbital parameters
horizon Horizon height
day_limit Maximal number of days that will be searched for next rise and set
rst Pointer to store Rise, Set and Transit time in JD
Returns:
0 for success, else 1 for circumpolar (above the horizon), -1 for circumpolar (bellow the horizon)
Calculate the time of next rise, set and transit (crosses the local meridian at upper culmination) time of a body with an elliptic orbit for the given Julian day.

This function guarantee, that rise, set and transit will be in <JD, JD + day_limit> range.

Note: this functions returns 1 if the body is circumpolar, that is it remains the whole day above the horizon. Returns -1 when it remains the whole day below the horizon.

References ln_get_ell_body_equ_coords().

Referenced by ln_get_ell_body_next_rst().

double ln_get_ell_body_phase_angle ( double  JD,
struct ln_ell_orbit orbit 
)

Calculate the phase angle of the body. The angle Sun - body - Earth.

Parameters:
JD Julian day
orbit Orbital parameters
Returns:
Phase angle.
Calculate the phase angle of the body. The angle Sun - body - Earth.
Examples:
asteroid.c.

References ln_ell_orbit::a, ln_ell_orbit::e, ln_ell_orbit::JD, ln_deg_to_rad(), ln_get_ell_body_earth_dist(), ln_get_ell_body_solar_dist(), ln_get_ell_mean_anomaly(), ln_get_ell_mean_motion(), ln_get_ell_radius_vector(), ln_range_degrees(), ln_solve_kepler(), and ln_ell_orbit::n.

double ln_get_ell_body_rst ( double  JD,
struct ln_lnlat_posn observer,
struct ln_ell_orbit orbit,
struct ln_rst_time rst 
)

Calculate the time of rise, set and transit for a body with an elliptic orbit.

Parameters:
JD Julian day
observer Observers position
orbit Orbital parameters
rst Pointer to store Rise, Set and Transit time in JD
Returns:
0 for success, else 1 for circumpolar (above the horizon), -1 for circumpolar (bellow the horizon)
Calculate the time the rise, set and transit (crosses the local meridian at upper culmination) time of a body with an elliptic orbit for the given Julian day.

Note: this functions returns 1 if the body is circumpolar, that is it remains the whole day above the horizon. Returns -1 when it remains the whole day below the horizon.

Examples:
asteroid.c, and comet.c.

References ln_get_ell_body_rst_horizon().

double ln_get_ell_body_rst_horizon ( double  JD,
struct ln_lnlat_posn observer,
struct ln_ell_orbit orbit,
double  horizon,
struct ln_rst_time rst 
)

Calculate the time of rise, set and transit for a body with an elliptic orbit.

Parameters:
JD Julian day
observer Observers position
orbit Orbital parameters
horizon Horizon height
rst Pointer to store Rise, Set and Transit time in JD
Returns:
0 for success, else 1 for circumpolar (above the horizon), -1 for circumpolar (bellow the horizon)
Calculate the time the rise, set and transit (crosses the local meridian at upper culmination) time of a body with an elliptic orbit for the given Julian day.

Note: this functions returns 1 if the body is circumpolar, that is it remains the whole day above the horizon. Returns -1 when it remains the whole day below the horizon.

References ln_get_ell_body_equ_coords().

Referenced by ln_get_ell_body_rst().

double ln_get_ell_body_solar_dist ( double  JD,
struct ln_ell_orbit orbit 
)

Calculate the distance between a body and the Sun.

Parameters:
JD Julian Day.
orbit Orbital parameters
Returns:
The distance in AU between the Sun and the body.
Calculate the distance between a body and the Sun.
Examples:
asteroid.c, and comet.c.

References ln_get_ell_helio_rect_posn(), ln_rect_posn::X, ln_rect_posn::Y, and ln_rect_posn::Z.

Referenced by ln_get_ell_body_elong(), ln_get_ell_body_phase_angle(), ln_get_ell_comet_mag(), and ln_get_ell_orbit_vel().

void ln_get_ell_geo_rect_posn ( struct ln_ell_orbit orbit,
double  JD,
struct ln_rect_posn posn 
)

Calculate the objects rectangular geocentric position.

Parameters:
orbit Orbital parameters of object.
JD Julian day
posn Position pointer to store objects position
Calculate the objects rectangular geocentric position given it's orbital elements for the given julian day.
Examples:
asteroid.c, and comet.c.

References ln_get_earth_helio_coords(), ln_get_ell_helio_rect_posn(), ln_get_rect_from_helio(), ln_rect_posn::X, ln_rect_posn::Y, and ln_rect_posn::Z.

Referenced by ln_get_ell_body_earth_dist().

void ln_get_ell_helio_rect_posn ( struct ln_ell_orbit orbit,
double  JD,
struct ln_rect_posn posn 
)

Calculate the objects rectangular heliocentric position.

Parameters:
orbit Orbital parameters of object.
JD Julian day
posn Position pointer to store objects position
Calculate the objects rectangular heliocentric position given it's orbital elements for the given julian day.
Examples:
asteroid.c, and comet.c.

References ln_ell_orbit::a, ln_helio_posn::B, ln_ell_orbit::e, ln_ell_orbit::i, ln_ell_orbit::JD, ln_deg_to_rad(), ln_get_ell_mean_anomaly(), ln_get_ell_mean_motion(), ln_get_ell_radius_vector(), ln_get_ell_true_anomaly(), ln_solve_kepler(), ln_ell_orbit::n, ln_ell_orbit::omega, ln_helio_posn::R, ln_ell_orbit::w, ln_rect_posn::X, ln_rect_posn::Y, and ln_rect_posn::Z.

Referenced by ln_get_ell_body_equ_coords(), ln_get_ell_body_solar_dist(), and ln_get_ell_geo_rect_posn().

double ln_get_ell_last_perihelion ( double  epoch_JD,
double  M,
double  n 
)

Calculate the julian day of the last perihelion.

Parameters:
epoch_JD Julian day of epoch
M Mean anomaly
n daily motion in degrees
Calculate the julian day of the last perihelion.
Examples:
asteroid.c.

double ln_get_ell_mean_anomaly ( double  n,
double  delta_JD 
)

Calculate the mean anomaly.

Parameters:
n Mean motion (degrees/day)
delta_JD Time since perihelion
Returns:
Mean anomaly (degrees)
Calculate the mean anomaly.

Referenced by ln_get_ell_body_elong(), ln_get_ell_body_phase_angle(), ln_get_ell_comet_mag(), and ln_get_ell_helio_rect_posn().

double ln_get_ell_mean_motion ( double  a  ) 

Calculate the mean daily motion (degrees/day).

Parameters:
a Semi major diameter in AU
Returns:
Mean daily motion (degrees/day)
Calculate the mean daily motion (degrees/day).

Referenced by ln_get_ell_body_elong(), ln_get_ell_body_phase_angle(), ln_get_ell_comet_mag(), and ln_get_ell_helio_rect_posn().

double ln_get_ell_orbit_avel ( struct ln_ell_orbit orbit  ) 

Calculate the orbital velocity at aphelion in km/s.

Parameters:
orbit Orbital parameters
Returns:
Orbital velocity in km/s.
Calculate the orbital velocity at aphelion in km/s.
Examples:
asteroid.c, and comet.c.

References ln_ell_orbit::a, and ln_ell_orbit::e.

double ln_get_ell_orbit_len ( struct ln_ell_orbit orbit  ) 

Calculate the orbital length in AU.

Parameters:
orbit Orbital parameters
Returns:
Orbital length in AU
Calculate the orbital length in AU.

Accuracy:

  • 0.001% for e < 0.88
  • 0.01% for e < 0.95
  • 1% for e = 0.9997
  • 3% for e = 1
Examples:
asteroid.c, and comet.c.

References ln_ell_orbit::a, ln_ell_orbit::e, and ln_get_ell_sminor_diam().

double ln_get_ell_orbit_pvel ( struct ln_ell_orbit orbit  ) 

Calculate orbital velocity at perihelion in km/s.

Parameters:
orbit Orbital parameters
Returns:
Orbital velocity in km/s.
Calculate orbital velocity at perihelion in km/s.
Examples:
asteroid.c, and comet.c.

References ln_ell_orbit::a, and ln_ell_orbit::e.

double ln_get_ell_orbit_vel ( double  JD,
struct ln_ell_orbit orbit 
)

Calculate orbital velocity in km/s.

Parameters:
JD Julian day.
orbit Orbital parameters
Returns:
Orbital velocity in km/s.
Calculate orbital velocity in km/s for the given julian day.
Examples:
asteroid.c, and comet.c.

References ln_ell_orbit::a, and ln_get_ell_body_solar_dist().

double ln_get_ell_radius_vector ( double  a,
double  e,
double  E 
)

Calculate the radius vector.

Parameters:
a Semi-Major axis in AU
e Orbital eccentricity
E Eccentric anomaly
Returns:
Radius vector AU
Calculate the radius vector.
Examples:
comet.c.

References ln_deg_to_rad().

Referenced by ln_get_ell_body_elong(), ln_get_ell_body_phase_angle(), ln_get_ell_comet_mag(), and ln_get_ell_helio_rect_posn().

double ln_get_ell_smajor_diam ( double  e,
double  q 
)

Calculate the semi major diameter.

Parameters:
e Eccentricity
q Perihelion distance in AU
Returns:
Semi-major diameter in AU
Calculate the semi major diameter.

double ln_get_ell_sminor_diam ( double  e,
double  a 
)

Calculate the semi minor diameter.

Parameters:
e Eccentricity
a Semi-Major diameter in AU
Returns:
Semi-minor diameter in AU
Calculate the semi minor diameter.

Referenced by ln_get_ell_orbit_len().

double ln_get_ell_true_anomaly ( double  e,
double  E 
)

Calculate the true anomaly.

Parameters:
e Orbital eccentricity
E Eccentric anomaly
Returns:
True anomaly (degrees)
Calculate the true anomaly.
Examples:
comet.c.

References ln_deg_to_rad(), ln_rad_to_deg(), and ln_range_degrees().

Referenced by ln_get_ell_helio_rect_posn().

double ln_solve_kepler ( double  E,
double  M 
)

Calculate the eccentric anomaly.

Parameters:
E Orbital eccentricity
M Mean anomaly
Returns:
Eccentric anomaly
Calculate the eccentric anomaly. This method was devised by Roger Sinnott. (Sky and Telescope, Vol 70, pg 159)
Examples:
comet.c.

References ln_deg_to_rad(), and ln_rad_to_deg().

Referenced by ln_get_ell_body_elong(), ln_get_ell_body_phase_angle(), ln_get_ell_comet_mag(), and ln_get_ell_helio_rect_posn().


Generated on Sun May 17 15:43:51 2009 for libnova by  doxygen 1.5.8