Ignore:
Timestamp:
Jun 15, 2004, 6:54:12 PM (21 years ago)
Author:
cmv
Message:

nouvelle version de xephem/libastro (3.6) cmv 15/6/04

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaExt/XephemAstroLib/earthsat.c

    r1719 r2551  
    2323#include <math.h>
    2424#include <string.h>
    25 
    26 #if defined(__STDC__)
    2725#include <stdlib.h>
    28 #endif
    29 
    30 #include "P_.h"
     26
    3127#include "astro.h"
    32 #include "circum.h"
    3328#include "preferences.h"
    3429
     
    4237typedef double MAT3x3[3][3];
    4338
    44 static void esat_prop P_((Now *np, Obj *op, double *SatX, double *SatY, double
    45     *SatZ, double *SatVX, double *SatVY, double *SatVZ));
    46 static void GetSatelliteParams P_((Obj *op));
    47 static void GetSiteParams P_((Now *np));
    48 static double Kepler P_((double MeanAnomaly, double Eccentricity));
    49 static void GetSubSatPoint P_((double SatX, double SatY, double SatZ,
    50     double T, double *Latitude, double *Longitude, double *Height));
    51 static void GetSatPosition P_((double EpochTime, double EpochRAAN,
     39static int crazyOp (Now *np, Obj *op);
     40static void esat_prop (Now *np, Obj *op, double *SatX, double *SatY, double
     41    *SatZ, double *SatVX, double *SatVY, double *SatVZ);
     42static void GetSatelliteParams (Obj *op);
     43static void GetSiteParams (Now *np);
     44static double Kepler (double MeanAnomaly, double Eccentricity);
     45static void GetSubSatPoint (double SatX, double SatY, double SatZ,
     46    double T, double *Latitude, double *Longitude, double *Height);
     47static void GetSatPosition (double EpochTime, double EpochRAAN,
    5248    double EpochArgPerigee, double SemiMajorAxis, double Inclination,
    5349    double Eccentricity, double RAANPrecession, double PerigeePrecession,
    5450    double T, double TrueAnomaly, double *X, double *Y, double *Z,
    55     double *Radius, double *VX, double *VY, double *VZ));
    56 static void GetSitPosition P_((double SiteLat, double SiteLong,
     51    double *Radius, double *VX, double *VY, double *VZ);
     52static void GetSitPosition (double SiteLat, double SiteLong,
    5753    double SiteElevation, double CrntTime, double *SiteX, double *SiteY,
    58     double *SiteZ, double *SiteVX, double *SiteVY, MAT3x3 SiteMatrix));
    59 static void GetRange P_((double SiteX, double SiteY, double SiteZ,
     54    double *SiteZ, double *SiteVX, double *SiteVY, MAT3x3 SiteMatrix);
     55static void GetRange (double SiteX, double SiteY, double SiteZ,
    6056    double SiteVX, double SiteVY, double SatX, double SatY, double SatZ,
    6157    double SatVX, double SatVY, double SatVZ, double *Range,
    62     double *RangeRate));
    63 static void GetTopocentric P_((double SatX, double SatY, double SatZ,
     58    double *RangeRate);
     59static void GetTopocentric (double SatX, double SatY, double SatZ,
    6460    double SiteX, double SiteY, double SiteZ, MAT3x3 SiteMatrix, double *X,
    65     double *Y, double *Z));
    66 static void GetBearings P_((double SatX, double SatY, double SatZ,
     61    double *Y, double *Z);
     62static void GetBearings (double SatX, double SatY, double SatZ,
    6763    double SiteX, double SiteY, double SiteZ, MAT3x3 SiteMatrix,
    68     double *Azimuth, double *Elevation));
    69 static int Eclipsed P_((double SatX, double SatY, double SatZ,
    70     double SatRadius, double CrntTime));
    71 static void InitOrbitRoutines P_((double EpochDay, int AtEod));
     64    double *Azimuth, double *Elevation);
     65static int Eclipsed (double SatX, double SatY, double SatZ,
     66    double SatRadius, double CrntTime);
     67static void InitOrbitRoutines (double EpochDay, int AtEod);
    7268
    7369#ifdef USE_ORBIT_PROPAGATOR
    74 static void GetPrecession P_((double SemiMajorAxis, double Eccentricity,
    75     double Inclination, double *RAANPrecession, double *PerigeePrecession));
     70static void GetPrecession (double SemiMajorAxis, double Eccentricity,
     71    double Inclination, double *RAANPrecession, double *PerigeePrecession);
    7672#endif /* USE_ORBIT_PROPAGATOR */
    7773
     
    135131 */
    136132int
    137 obj_earthsat (np, op)
    138 Now *np;
    139 Obj *op;
     133obj_earthsat (Now *np, Obj *op)
    140134{
    141135        double Radius;              /* From geocenter                  */
     
    267261 */
    268262static void
    269 esat_prop (np, op, SatX, SatY, SatZ, SatVX, SatVY, SatVZ)
    270 Now *np;
    271 Obj *op;
    272 double *SatX,*SatY,*SatZ;
    273 double *SatVX,*SatVY,*SatVZ;
     263esat_prop (Now *np, Obj *op, double *SatX, double *SatY, double *SatZ,
     264double *SatVX, double *SatVY, double *SatVZ)
    274265{
    275266#ifdef USE_ORBIT_PROPAGATOR
     
    284275        double Radius;
    285276        double CrntTime;
     277
     278        if (crazyOp (np, op)) {
     279            *SatX = *SatY = *SatZ = *SatVX = *SatVY = *SatVZ = 0;
     280            return;
     281        }
    286282
    287283        SemiMajorAxis = 331.25 * exp(2*log(MinutesPerDay/epochMeanMotion)/3);
     
    331327        double dt;
    332328        int yr;
     329
     330        if (crazyOp (np, op)) {
     331            *SatX = *SatY = *SatZ = *SatVX = *SatVY = *SatVZ = 0;
     332            return;
     333        }
    333334
    334335        /* init */
     
    392393}
    393394
     395/* return 1 if op is crazy @ np */
     396static int
     397crazyOp (Now *np, Obj *op)
     398{
     399        /* figure its daft if long enough to decay 1 rev/day */
     400        return (fabs(op->es_epoch - mjd) > 1/op->es_decay);
     401}
    394402
    395403/* grab the xephem stuff from op and copy into orbit's globals.
    396404 */
    397405static void
    398 GetSatelliteParams(op)
    399 Obj *op;
     406GetSatelliteParams(Obj *op)
    400407{
    401408        /* the following are for the orbit functions */
     
    429436 
    430437static void
    431 GetSiteParams(np)
    432 Now *np;
     438GetSiteParams(Now *np)
    433439{
    434440        SiteLat = lat;
     
    465471 
    466472static
    467 double Kepler(MeanAnomaly,Eccentricity)
    468 register double MeanAnomaly,Eccentricity;
    469  
     473double Kepler(double MeanAnomaly, double Eccentricity)
    470474{
    471475register double E;              /* Eccentric Anomaly                    */
     
    494498 
    495499static void
    496 GetSubSatPoint(SatX,SatY,SatZ,T,Latitude,Longitude,Height)
    497 double SatX,SatY,SatZ,T;
    498 double *Latitude,*Longitude,*Height;
     500GetSubSatPoint(double SatX, double SatY, double SatZ, double T,
     501double *Latitude, double *Longitude, double *Height)
    499502{
    500503    double r;
     
    524527#ifdef USE_ORBIT_PROPAGATOR
    525528static void
    526 GetPrecession(SemiMajorAxis,Eccentricity,Inclination,
    527         RAANPrecession,PerigeePrecession)
    528 double SemiMajorAxis,Eccentricity,Inclination;
    529 double *RAANPrecession,*PerigeePrecession;
     529GetPrecession(double SemiMajorAxis, double Eccentricity, double Inclination,
     530double *RAANPrecession, double *PerigeePrecession)
    530531{
    531532  *RAANPrecession = 9.95*pow(EarthRadius/SemiMajorAxis,3.5) * cos(Inclination)
     
    544545
    545546static void
    546 GetSatPosition(EpochTime,EpochRAAN,EpochArgPerigee,SemiMajorAxis,
    547         Inclination,Eccentricity,RAANPrecession,PerigeePrecession,
    548         T,TrueAnomaly,X,Y,Z,Radius,VX,VY,VZ)
    549  
    550 double EpochTime,EpochRAAN,EpochArgPerigee;
    551 double SemiMajorAxis,Inclination,Eccentricity;
    552 double RAANPrecession,PerigeePrecession,T, TrueAnomaly;
    553 double *X,*Y,*Z,*Radius,*VX,*VY,*VZ;
     547GetSatPosition(double EpochTime, double EpochRAAN, double EpochArgPerigee,
     548double SemiMajorAxis, double Inclination, double Eccentricity,
     549double RAANPrecession, double PerigeePrecession, double T,
     550double TrueAnomaly, double *X, double *Y, double *Z, double *Radius,
     551double *VX, double *VY, double *VZ)
    554552
    555553{
     
    607605
    608606static void
    609 GetSitPosition(SiteLat,SiteLong,SiteElevation,CrntTime,
    610              SiteX,SiteY,SiteZ,SiteVX,SiteVY,SiteMatrix)
    611 
    612 double SiteLat,SiteLong,SiteElevation,CrntTime;
    613 double *SiteX,*SiteY,*SiteZ,*SiteVX,*SiteVY;
    614 MAT3x3 SiteMatrix;
    615 
     607GetSitPosition(double SiteLat, double SiteLong, double SiteElevation,
     608double CrntTime, double *SiteX, double *SiteY, double *SiteZ, double *SiteVX,
     609double *SiteVY, MAT3x3 SiteMatrix)
    616610{
    617611    static double G1,G2; /* Used to correct for flattening of the Earth */
     
    663657
    664658static void
    665 GetRange(SiteX,SiteY,SiteZ,SiteVX,SiteVY,
    666         SatX,SatY,SatZ,SatVX,SatVY,SatVZ,Range,RangeRate)
    667 
    668 double SiteX,SiteY,SiteZ,SiteVX,SiteVY;
    669 double SatX,SatY,SatZ,SatVX,SatVY,SatVZ;
    670 double *Range,*RangeRate;
     659GetRange(double SiteX, double SiteY, double SiteZ, double SiteVX,
     660double SiteVY, double SatX, double SatY, double SatZ, double SatVX,
     661double SatVY, double SatVZ, double *Range, double *RangeRate)
    671662{
    672663    double DX,DY,DZ;
     
    684675
    685676static void
    686 GetTopocentric(SatX,SatY,SatZ,SiteX,SiteY,SiteZ,SiteMatrix,X,Y,Z)
    687 double SatX,SatY,SatZ,SiteX,SiteY,SiteZ;
    688 double *X,*Y,*Z;
    689 MAT3x3 SiteMatrix;
     677GetTopocentric(double SatX, double SatY, double SatZ, double SiteX,
     678double SiteY, double SiteZ, MAT3x3 SiteMatrix, double *X, double *Y,
     679double *Z)
    690680{
    691681    SatX -= SiteX;
     
    702692
    703693static void
    704 GetBearings(SatX,SatY,SatZ,SiteX,SiteY,SiteZ,SiteMatrix,Azimuth,Elevation)
    705 double SatX,SatY,SatZ,SiteX,SiteY,SiteZ;
    706 MAT3x3 SiteMatrix;
    707 double *Azimuth,*Elevation;
     694GetBearings(double SatX, double SatY, double SatZ, double SiteX,
     695double SiteY, double SiteZ, MAT3x3 SiteMatrix, double *Azimuth,
     696double *Elevation)
    708697{
    709698    double x,y,z;
     
    720709
    721710static int
    722 Eclipsed(SatX,SatY,SatZ,SatRadius,CrntTime)
    723 double SatX,SatY,SatZ,SatRadius,CrntTime;
     711Eclipsed(double SatX, double SatY, double SatZ, double SatRadius,
     712double CrntTime)
    724713{
    725714    double MeanAnomaly,TrueAnomaly;
     
    751740
    752741static void
    753 InitOrbitRoutines(EpochDay, AtEod)
    754 double EpochDay;
    755 int AtEod;
     742InitOrbitRoutines(double EpochDay, int AtEod)
    756743{
    757744    double T,T2,T3,Omega;
     
    797784
    798785/* For RCS Only -- Do Not Edit */
    799 static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: earthsat.c,v $ $Date: 2001-10-22 12:08:27 $ $Revision: 1.2 $ $Name: not supported by cvs2svn $"};
     786static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: earthsat.c,v $ $Date: 2004-06-15 16:52:38 $ $Revision: 1.3 $ $Name: not supported by cvs2svn $"};
Note: See TracChangeset for help on using the changeset viewer.