GLAST / LAT > DAQ and FSW > FSW > Doxygen Index> ATT / V1-3-2 > att / rhel4-32
#include <ATT/ATT.h>
#include <ATT_private.h>
#include <math.h>
Functions | |
static void | vector_2_longlat (const double *v, double *longitude, double *latitude) |
Routine to convert cartesian coordinates to longitude-latitude like angular coordinates. | |
Vector Transform Functions | |
void | ATT_xform_vec_by_quat (double *Ve, const double *Q, const double *Vl) |
Tranform vector coordinates from LAT to J2000. | |
Quaternion Utility Functions | |
void | ATT_quat_multiply (double *Qr, const double *Qa, const double *Qb) |
Multiply two quaternions. | |
double | ATT_quat_magnitude (const double *Q) |
Get a quaternion magnitude. | |
void | ATT_quat_normalize (double *Q) |
Normallize a quaternion. | |
void | ATT_quat_conjugate (double *Qr, const double *Qa) |
Get a quaternion conjugate. | |
Vector Utility Functions | |
double | ATT_vec_magnitude (const double *V) |
Get a vector magnitude. | |
void | ATT_vec_normalize (double *V) |
Normallize a vector. | |
void | ATT_vec_cart_to_sphr_deg (const double *Vc, double *Vs) |
Transform a cartesian vector to spherical (ra,dec) coordinates (degrees). | |
void | ATT_vec_cart_to_sphr_rad (const double *Vc, double *Vs) |
Transform a cartesian vector to spherical (ra,dec) coordinates (radians). |
void ATT_quat_conjugate | ( | double * | Qr, | |
const double * | Qa | |||
) |
Get a quaternion conjugate.
Returns the conjugate of quaternion Qa in Qr.
Qa | Input quaternion. Qa[0] = q1 (x) Qa[1] = q2 (y) Qa[2] = q3 (z) Qa[3] = q4 (w) | |
Qr | Output conjugate quaternion. Qr[0] = q1 (x) Qr[1] = q2 (y) Qr[2] = q3 (z) Qr[3] = q4 (w) |
Referenced by ATT_xform_vec_by_quat().
double ATT_quat_magnitude | ( | const double * | Q | ) |
Get a quaternion magnitude.
Returns the magnitude of quaternion Q.
Q | Input quaternion. Q[0] = q1 (x) Q[1] = q2 (y) Q[2] = q3 (z) Q[3] = q4 (w) |
Referenced by ATT_quat_normalize().
void ATT_quat_multiply | ( | double * | Qr, | |
const double * | Qa, | |||
const double * | Qb | |||
) |
Multiply two quaternions.
Multilplies the quaternion Qa by quaternion Qb and stores the result in Qr. Qr = Qb x Qa. This operation is not commutative.
Qa | Input quaternion. Qa[0] = q1 (x) Qa[1] = q2 (y) Qa[2] = q3 (z) Qa[3] = q4 (w) | |
Qb | Input quaternion. Qb[0] = q1 (x) Qb[1] = q2 (y) Qb[2] = q3 (z) Qb[3] = q4 (w) | |
Qr | Output quaternion product. Qr[0] = q1 (x) Qr[1] = q2 (y) Qr[2] = q3 (z) Qr[3] = q4 (w) |
Referenced by ATT_update(), and ATT_xform_vec_by_quat().
void ATT_quat_normalize | ( | double * | Q | ) |
Normallize a quaternion.
Modifies quaternion Q so that the result has magnitude '1'. This function works in place.
Q | Input quaternion. Q[0] = q1 (x) Q[1] = q2 (y) Q[2] = q3 (z) Q[3] = q4 (w) |
References ATT_quat_magnitude().
void ATT_vec_cart_to_sphr_deg | ( | const double * | Vc, | |
double * | Vs | |||
) |
Transform a cartesian vector to spherical (ra,dec) coordinates (degrees).
Transforms the vector Vc in (x,y,z) cartesian coordinates into the vector Vs in (ra,dec) spherical coordinates. Vs is returned in degrees.
Vc | The input vector in cartisian coordinates. Vc[0] = x Vc[1] = y Vc[2] = z | |
Vs | The output vector in spherical coordinates. Vs[0] = ra Vs[1] = dec |
References M_PI, and vector_2_longlat().
void ATT_vec_cart_to_sphr_rad | ( | const double * | Vc, | |
double * | Vs | |||
) |
Transform a cartesian vector to spherical (ra,dec) coordinates (radians).
Transforms the vector Vc in (x,y,z) cartesian coordinates into the vector Vs in (ra,dec) spherical coordinates. Vs is returned in radians.
Vc | The input vector in cartisian coordinates. Vc[0] = x Vc[1] = y Vc[2] = z | |
Vs | The output vector in spherical coordinates. Vs[0] = ra Vs[1] = dec |
References vector_2_longlat().
double ATT_vec_magnitude | ( | const double * | V | ) |
Get a vector magnitude.
Returns the magnitude of vector V.
V | Input vector. V[0] = x V[1] = y V[2] = z |
Referenced by ATT_vec_normalize().
void ATT_vec_normalize | ( | double * | V | ) |
Normallize a vector.
Modifies vector V so that the result has magnitude '1'. This function works in place.
V | Input vector. V[0] = x V[1] = y V[2] = z |
References ATT_vec_magnitude().
unsigned int ATT_xform_vec_by_quat | ( | double * | Ve, | |
const double * | Q, | |||
const double * | Vl | |||
) |
Tranform vector coordinates from LAT to J2000.
Performs coordinate transformation on the vector Vl, which is assumed to be a cartiesian vector in LAT instrument local coordinates (SC body coordinates). The information in quaternion Q is used to transform the vector coordinates into J2000 (ECI) coordinates. The resulting vector coordinates are stored in Ve.
Q | Input quaternion. Q[0] = q1 (x) Q[1] = q2 (y) Q[2] = q3 (z) Q[3] = q4 (w) | |
Vl | Input vector in LAT coordinates. Vl[0] = x Vl[1] = y Vl[2] = z | |
Ve | Output vector in J2000 coordinates. Ve[0] = x Ve[1] = y Ve[2] = z |
References ATT_quat_conjugate(), and ATT_quat_multiply().
Referenced by ATT_xform().
static void vector_2_longlat | ( | const double * | v, | |
double * | longitude, | |||
double * | latitude | |||
) | [static] |
Routine to convert cartesian coordinates to longitude-latitude like angular coordinates.
Adopted from ARGOS/USA ground processing code.
v | The input vector in cartisian coordinates. Vc[0] = x Vc[1] = y Vc[2] = z | |
longitude | Stores the output "longitude" coordinate. | |
latitude | Stores the output "latitude" coordinate. |
References M_PI.
Referenced by ATT_vec_cart_to_sphr_deg(), and ATT_vec_cart_to_sphr_rad().