GLAST / LAT > DAQ and FSW > FSW > Doxygen Index> ATT / V1-3-2 > att / rhel4-32


Interface   Data Structures   File List   Data Fields   Globals  

ATT_math.c File Reference

LAT attitude processing mathematical functions. More...

#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).


Detailed Description

LAT attitude processing mathematical functions.

Author:
D.L. Wood

Function Documentation

void ATT_quat_conjugate ( double *  Qr,
const double *  Qa 
)

Get a quaternion conjugate.

Returns the conjugate of quaternion Qa in Qr.

Parameters:
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.

Parameters:
Q Input quaternion.
Q[0] = q1 (x)
Q[1] = q2 (y)
Q[2] = q3 (z)
Q[3] = q4 (w)
Returns:
The magnitude of Q.

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.

Parameters:
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.

Parameters:
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.

Parameters:
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.

Parameters:
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.

Parameters:
V Input vector.
V[0] = x
V[1] = y
V[2] = z
Returns:
The magnitude of V.

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.

Parameters:
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.

Parameters:
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.

Parameters:
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().


Generated on Fri Sep 30 18:26:03 2011 by  doxygen 1.5.8