23#include <MatrixLib/MatrixLib.h>
38ml_matrix
q_from_u(
const ml_matrix &u_catalog,
const ml_matrix &u_meas );
42ml_matrix
q_to_vec(
const ml_matrix &quaternion);
44ml_matrix
au_to_q(
double angle,
double unit_vec[3]);
46ml_matrix
au_to_q(
double angle,
const ml_matrix &unit_vec);
48double q_to_au(
const ml_matrix &quaternion, ml_matrix &unit_vec);
53ml_matrix
eul_to_q(
const ml_matrix &euler);
55ml_matrix
delta_eul_to_q(
const ml_matrix &q,
const ml_matrix &euler);
64ml_matrix
mat_to_q(
const ml_matrix &mat);
66ml_matrix
mat_to_eul(
const ml_matrix &mat,
const ml_matrix &euler);
68ml_matrix
u_to_q(
const ml_matrix &vec1,
const ml_matrix &vec2);
74ml_matrix
q_error(
const ml_matrix &q_ref,
const ml_matrix &q_meas);
76ml_matrix
qb_to_i_dot(
const ml_matrix &quaternion,
const ml_matrix &w);
78ml_matrix
qi_to_b_dot(
const ml_matrix &quat,
const ml_matrix &w);
80ml_matrix
qeb_re_ub_to_az_el(
const ml_matrix &qEB,
const ml_matrix &rE,
const ml_matrix &vB);
84ml_matrix
q_eci_to_lvlh(
const ml_matrix &pos,
const ml_matrix &vel);
90ml_matrix
eci_to_hills(
const ml_matrix &x0,
const ml_matrix &x1 );
92ml_matrix
hills_to_eci(
const ml_matrix &x0,
const ml_matrix &xH );
97ml_matrix
q_to_ra_dec(
const ml_matrix &quaternion,
const ml_matrix &uu);
101ml_matrix
u_to_ra_dec(
const ml_matrix &unit_vec,
bool normalize);
103ml_matrix
ra_dec_to_q(
const ml_matrix &uu,
double ra,
double dec);
107ml_matrix
ra_dec_to_u(
const ml_matrix &ra,
const ml_matrix &dec);
109ml_matrix
az_el_to_q( ml_matrix az, ml_matrix el);
115ml_matrix
qslerp(
const ml_matrix &quat1,
const ml_matrix &quat2,
double t);
122ml_matrix
lat_lon_to_pos(
double lat,
double lon,
double f,
double a,
bool is_geodetic);
130void cart_to_sph(
const ml_matrix& x,
const ml_matrix& y,
const ml_matrix& z, ml_matrix& r, ml_matrix& theta, ml_matrix& phi );
134void sph_to_cart(
const ml_matrix& r,
const ml_matrix& theta,
const ml_matrix& phi, ml_matrix& x, ml_matrix& y, ml_matrix& z );
138ml_matrix
CameraToECI(
double az,
double el,
double tt,
const ml_matrix& qECIToBody,
const ml_matrix& mBaseToBody );
144ml_matrix
u_to_x_z(
const ml_matrix& u );
148ml_matrix
az_el_to_u(
const ml_matrix &az,
const ml_matrix &el);
150ml_matrix
q_from_dq(
const ml_matrix& q,
const ml_matrix& dX );
154ml_matrix
r_lvlh_to_eci(
const ml_matrix& r_eci,
const ml_matrix& v_eci,
const ml_matrix& r );
156ml_matrix
v_lvlh_to_eci(
const ml_matrix& r_eci,
const ml_matrix& v_eci,
const ml_matrix& v );
158ml_matrix
r_eci_to_lvlh(
const ml_matrix& r_eci,
const ml_matrix& v_eci,
const ml_matrix& r );
160ml_matrix
v_eci_to_lvlh(
const ml_matrix& r_eci,
const ml_matrix& v_eci,
const ml_matrix& v );
162ml_matrix
x_lvlh_to_eci(
const ml_matrix& r_eci,
const ml_matrix& v_eci,
const ml_matrix& x );
164ml_matrix
x_eci_to_lvlh(
const ml_matrix& r_eci,
const ml_matrix& v_eci,
const ml_matrix& x );
166ml_matrix
x_lvlh_to_eci(
const ml_matrix& x_eci,
const ml_matrix& x );
168ml_matrix
x_eci_to_lvlh(
const ml_matrix& x_eci,
const ml_matrix& x );
184ml_matrix
u_eci_to_az_el_body(
const ml_matrix& u_eci,
const ml_matrix& q_eci_to_body,
const ml_matrix& q_body_to_base);
188ml_matrix
target_from_r_v_d(
const ml_matrix& r,
double rP,
const ml_matrix& v,
double d );
192ml_matrix
eci_to_llr(
const ml_matrix& eciCoord,
double jd);
194ml_matrix
q_from_two_u(
const ml_matrix& u,
const ml_matrix& v);
Physical and mathematical constants.
const double FLATTENING_FACTOR
Flattening factor default value which is for the earth.
Definition: sc_constants.h:65
const double RADIUS_EARTH
Earth equatorial radius in km.
Definition: sc_constants.h:59
ml_matrix qslerp(const ml_matrix &quat1, const ml_matrix &quat2, double t)
Interpolates between two quaternions.
Definition: sc_coord.cc:829
ml_matrix rot_mat_x(const double &a)
Generate a rotation matrix for angular rotation about the x axis.
Definition: sc_coord.cc:365
ml_matrix az_el_range_range_rate_to_rv(const ml_matrix &q_radar_to_hills, double az, double el, double range, double range_dot)
Converts az, el, range and range rate to exact r and approximate v.
Definition: sc_coord.cc:83
ml_matrix qb_to_i_dot(const ml_matrix &quaternion, const ml_matrix &w)
Calculates the derivative of the body to inertial quaternion.
Definition: sc_coord.cc:438
ml_matrix ra_dec_to_q(const ml_matrix &uu, double ra, double dec)
Compute a quaternion from right ascension and declination.
Definition: sc_coord.cc:749
double q_to_au(const ml_matrix &quaternion, ml_matrix &unit_vec)
Compute angle and unit vector from quaternion.
Definition: sc_coord.cc:224
ml_matrix x_lvlh_to_eci(const ml_matrix &r_eci, const ml_matrix &v_eci, const ml_matrix &x)
LVLH state to ECI.
Definition: sc_coord.cc:1462
ml_matrix q_error(const ml_matrix &q_ref, const ml_matrix &q_meas)
Finds the small error between two quaternions and converts them into an angle vector.
Definition: sc_coord.cc:423
ml_matrix q_eci_to_lvlh(const ml_matrix &pos, const ml_matrix &vel)
Generate the quaternion that transforms from ECI to LVLH coordinates.
Definition: sc_coord.cc:567
ml_matrix eul_to_q(const ml_matrix &euler)
Convert 3-2-1 Euler angle sequence to a quaternion that transforms in the direction of the rotation.
Definition: sc_coord.cc:338
ml_matrix rot_mat_z(const double &a)
Generate a rotation matrix for angular rotation about the z axis.
Definition: sc_coord.cc:401
ml_matrix RPhiTheta2Cart(const ml_matrix &r)
Computes the transformation matrix from an r, phi, theta frame to cartesian.
Definition: sc_coord.cc:1159
ml_matrix eci_to_hills(const ml_matrix &x0, const ml_matrix &x1)
Transform from two ECI states to one relative state in Hills-frame.
Definition: sc_coord.cc:612
void sph_to_cart(const ml_matrix &r, const ml_matrix &theta, const ml_matrix &phi, ml_matrix &x, ml_matrix &y, ml_matrix &z)
Convert spherical coordinates to cartesian.
Definition: sc_coord.cc:1141
ml_matrix u_eci_to_az_el_body(const ml_matrix &u_eci, const ml_matrix &q_eci_to_body, const ml_matrix &q_body_to_base)
Find az and el from an ECI vector.
Definition: sc_coord.cc:1688
double esd_to_azim(const ml_matrix &u)
Convert an East-South-Down vector to azimuth from North.
Definition: sc_coord.cc:1629
ml_matrix ra_dec_to_u(double ra, double dec)
Calculate a unit vector from right ascension and declination.
Definition: sc_coord.cc:794
ml_matrix q_from_dq(const ml_matrix &q, const ml_matrix &dX)
Computes q as the product of q and a delta quaternion.
Definition: sc_coord.cc:1371
ml_matrix mat_eci_to_lvlh(const ml_matrix &pos, const ml_matrix &vel)
Generate the matrix that transforms from ECI to LVLH coordinates.
Definition: sc_coord.cc:552
ml_matrix azim_elev_to_esd(const double &azim, const double &elev)
Convert azimuth / elevation angles to an East-South-Down unit vector.
Definition: sc_coord.cc:1654
ml_matrix q_from_u(const ml_matrix &u_catalog, const ml_matrix &u_meas)
Returns a quaternion given at least 3 matching vectors.
Definition: sc_coord.cc:123
ml_matrix ecef_to_esd(const ml_matrix &rEF)
Compute rotation matrix from Earth-fixed frame to East-South-Down frame at given Earth-fixed position...
Definition: sc_coord.cc:1668
ml_matrix q_to_ra_dec(const ml_matrix &quaternion, const ml_matrix &uu)
Compute right ascension and declination (in radians) of a unit vector in the body frame from a quater...
Definition: sc_coord.cc:681
ml_matrix u_to_x_z(const ml_matrix &u)
Computes the x and z rotations to align z with a unit vector.
Definition: sc_coord.cc:1287
void cart_to_sph(const ml_matrix &x, const ml_matrix &y, const ml_matrix &z, ml_matrix &r, ml_matrix &theta, ml_matrix &phi)
Converts cartesian coordinates to spherical.
Definition: sc_coord.cc:1102
ml_matrix mat_to_q(const ml_matrix &mat)
Convert a matrix to a quaternion.
Definition: sc_coord.cc:307
ml_matrix mat_to_eul(const ml_matrix &mat, const ml_matrix &euler)
Convert a matrix to an Euler angle sequence.
Definition: sc_coord.cc:296
ml_matrix qi_to_b_dot(const ml_matrix &quat, const ml_matrix &w)
Calculates the derivative of the inertial to body quaternion.
Definition: sc_coord.cc:456
ml_matrix au_to_q(double angle, double unit_vec[3])
Compute quaternion from angle and unit vector, array format.
Definition: sc_coord.cc:188
ml_matrix CameraToECI(double az, double el, double tt, const ml_matrix &qECIToBody, const ml_matrix &mBaseToBody)
Computes the transformation matrix from a camera frame with 3 rotations to the body frame.
Definition: sc_coord.cc:1186
ml_matrix dq_from_dX(const ml_matrix &dX)
Delta quaternion from a 3 vector.
Definition: sc_coord.cc:1382
ml_matrix hills_to_eci(const ml_matrix &x0, const ml_matrix &xH)
Transform from a relative state in Hills-frame to an absolute ECI state.
Definition: sc_coord.cc:645
ml_matrix lat_lon_to_pos(double lat, double lon, double f, double a, bool is_geodetic)
Converts latitude and longitude to r for an ellipsoidal planet.
Definition: sc_coord.cc:974
ml_matrix target_from_r_v_d(const ml_matrix &r, double rP, const ml_matrix &v, double d)
Landing target.
Definition: sc_coord.cc:1742
ml_matrix lat_lon_alt_to_pos(double lat, double lon, double h, double f=FLATTENING_FACTOR, double a=RADIUS_EARTH)
Compute EF position vector from latitude, longitude, and altitude.
Definition: sc_coord.cc:949
ml_matrix eci_to_llr(const ml_matrix &eciCoord, double jd)
EF to LLA.
Definition: sc_coord.cc:67
ml_matrix rot_mat_y(const double &a)
Generate a rotation matrix for angular rotation about the y axis.
Definition: sc_coord.cc:383
ml_matrix mat_eci_to_hills(const ml_matrix &r, const ml_matrix &v)
Generate the matrix that transforms from ECI to Hills coordinates.
Definition: sc_coord.cc:584
double esd_to_elev(const ml_matrix &u)
Convert an East-South-Down vector to elevation from nadir.
Definition: sc_coord.cc:1640
ml_matrix pos_to_lat_lon_alt(const ml_matrix &efPos, double f=FLATTENING_FACTOR, double a=RADIUS_EARTH, double tolerance=1.0e-6)
Compute latitude, longitude, and altitude from EF position vector.
Definition: sc_coord.cc:1052
ml_matrix small_angles_to_q(const ml_matrix &angle)
Convert small angles to a quaternion.
Definition: sc_coord.cc:1589
ml_matrix delta_eul_to_q(const ml_matrix &q, const ml_matrix &euler)
Apply a 3-2-1 Euler angle sequence to a quaternion that transforms in the direction of the rotation.
Definition: sc_coord.cc:319
ml_matrix q_eci_to_hills(const ml_matrix &r, const ml_matrix &v)
Generate the quaternion that transforms from ECI to Hills coordinates.
Definition: sc_coord.cc:599
ml_matrix q_from_two_u(const ml_matrix &u, const ml_matrix &v)
Quaternion from two unit vectors.
Definition: sc_coord.cc:1760
ml_matrix eul_to_mat(const ml_matrix &euler)
Convert 3-2-1 Euler angle sequence to a matrix that transforms in the direction of the rotation.
Definition: sc_coord.cc:236
ml_matrix u_to_ra_dec(const ml_matrix &unit_vec)
Computes right ascension and declination from a unit vector.
Definition: sc_coord.cc:694
ml_matrix q_to_vec(const ml_matrix &quaternion)
Returns the value of the vector from quaternion.
Definition: sc_coord.cc:170
ml_matrix qeb_re_ub_to_az_el(const ml_matrix &qEB, const ml_matrix &rE, const ml_matrix &vB)
Calculate azimuth & elevation angle from ECI to body quaternion, position, and boresight vector.
Definition: sc_coord.cc:480
ml_matrix LLAToECEF(const ml_matrix &lla, double rP=RADIUS_EARTH)
Compute ECEF position from latitude, longitude, altitude.
Definition: sc_coord.cc:1545
ml_matrix r_lvlh_to_eci(const ml_matrix &r_eci, const ml_matrix &v_eci, const ml_matrix &r)
LVLH position to ECI.
Definition: sc_coord.cc:1403
ml_matrix ef_to_lla(const ml_matrix &r)
EF to LLA.
Definition: sc_coord.cc:20
ml_matrix v_eci_to_lvlh(const ml_matrix &r_eci, const ml_matrix &v_eci, const ml_matrix &v)
ECI position to LVLH.
Definition: sc_coord.cc:1447
ml_matrix eci_to_ned(const ml_matrix &r, int opt=0, double f=FLATTENING_FACTOR)
Computes the transformation matrix or quaternion from a eciframe to the North East Down (NED) frame.
Definition: sc_coord.cc:1224
ml_matrix x_eci_to_lvlh(const ml_matrix &r_eci, const ml_matrix &v_eci, const ml_matrix &x)
ECI state to LVLH.
Definition: sc_coord.cc:1480
ml_matrix spice_to_3_by_3(const ml_matrix &m, int k=1)
Convert SPICE rotation matrix to 3x3.
Definition: sc_coord.cc:1611
ml_matrix az_el_to_u(double az, double el)
Computes u from azimuth and elevation of a unit vector.
Definition: sc_coord.cc:1319
ml_matrix r_eci_to_lvlh(const ml_matrix &r_eci, const ml_matrix &v_eci, const ml_matrix &r)
LVLH position to ECI.
Definition: sc_coord.cc:1432
ml_matrix u_to_az_el(const ml_matrix &u)
Computes the azimuth and elevation of a unit vector.
Definition: sc_coord.cc:1303
ml_matrix u_to_q(const ml_matrix &vec1, const ml_matrix &vec2)
Computes the quaternion which aligns one vector with a second.
Definition: sc_coord.cc:284
double q_to_angle(const ml_matrix &quaternion)
Returns value of the angle from the quaternion in radians.
Definition: sc_coord.cc:151
ml_matrix az_el_to_q(ml_matrix az, ml_matrix el)
Compute a quaternion from azimuth and elevation.
Definition: sc_coord.cc:898
ml_matrix perpendicular(const ml_matrix &vec)
Computes the perpendicular vector.
Definition: sc_coord.cc:269
ml_matrix v_lvlh_to_eci(const ml_matrix &r_eci, const ml_matrix &v_eci, const ml_matrix &v)
ECI position to LVLH.
Definition: sc_coord.cc:1418
sun_vector_out sun_vector_pointing(const ml_matrix &u_eci, const ml_matrix &u_sun_eci)
Rotation angles to point a solar wing at the sun.
Definition: sc_coord.cc:1708
Definition: sc_coord.h:30
double angle_solar_wing
Solar array angle.
Definition: sc_coord.h:32
ml_matrix q_eci_to_body
Body quaternion.
Definition: sc_coord.h:31