ISCE_INSAR/components/isceobj/Util/Library/geometry/include/geometry.h

82 lines
2.7 KiB
C
Raw Normal View History

2019-01-16 19:40:08 +00:00
//#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//#
//#
//# Author: Piyush Agram
//# Copyright 2014, by the California Institute of Technology. ALL RIGHTS RESERVED.
//# United States Government Sponsorship acknowledged.
//# Any commercial use must be negotiated with the Office of Technology Transfer at
//# the California Institute of Technology.
//# This software may be subject to U.S. export control laws.
//# By accepting this software, the user agrees to comply with all applicable U.S.
//# export laws and regulations. User has the responsibility to obtain export licenses,
//# or other export authority as may be required before exporting such information to
//# foreign countries or providing access to foreign persons.
//#
//#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#ifndef geometry_h
#define geometry_h
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
typedef struct cPeg
{
double lat;
double lon;
double hdg;
} cPeg;
typedef struct cEllipsoid
{
double a;
double e2;
} cEllipsoid;
typedef struct cPegtrans
{
double mat[3][3];
double matinv[3][3];
double ov[3];
double radcur;
} cPegtrans;
typedef struct cPosition
{
double j[3];
double jdot[3];
double jddt[3];
} cPosition;
//SCH to XYZ conversions
static const int SCH_2_XYZ = 0;
static const int XYZ_2_SCH = 1;
//Lat Lon to UTM conversions
static const int LLH_2_UTM = 1;
static const int UTM_2_LLH = 2;
//Lat Lon to XYZ conversions
static const int LLH_2_XYZ = 1;
static const int XYZ_2_LLH = 2;
static const int XYZ_2_LLH_OLD = 3;
//Function declarations
void convert_sch_to_xyz_C(cEllipsoid* ptm, double r_schv[3], double r_xyzv[3], int i_type);
void convert_schdot_to_xyzdot_C(cEllipsoid* ptm, double r_sch[3], double r_xyz[3], double r_schdot[3], double r_xyzdot[3], int i_type);
double reast_C(cEllipsoid* elp, double r_lat);
double rnorth_C(cEllipsoid* elp, double r_lat);
double rdir_C(cEllipsoid* elp,double r_hdg, double r_lat);
void enubasis_C(double r_lat, double r_lon, double r_enumat[3][3]);
void latlon_C(cEllipsoid* elp, double r_v[3], double r_llh[3], int i_type);
void lookvec_C(cPosition* pos, double r_look, double r_az, double r_v[3]);
void radar_to_xyz_C(cEllipsoid* elp, cPeg* peg, cPegtrans* ptm);
void schbasis_C(cPegtrans* ptm, double r_sch[3], double r_xyzschmat[3][3], double r_schxyzmat[3][3]);
void getangs_C(double pos[3], double vel[3], double vec[3], cEllipsoid* elp, double *r_az, double *r_lk);
void getTCN_TCvec_C(double pos[3], double vel[3], double vec[3], cEllipsoid* elp, double TCVec[3]);
double cosineC_C(double a, double b, double c);
#endif