IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 5551


Ignore:
Timestamp:
Nov 18, 2005, 2:23:52 PM (21 years ago)
Author:
Paul Price
Message:

Added further details from Ed Pier.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/doc/pslib/eoc_testing.txt

    r5550 r5551  
    77explicitly setting the values in the struct.
    88
    9 2. Convert obj to a psCube (psSphereToCube), should get:
     9
     102. Convert obj to a psCube (psSphereToCube), and check that:
    1011
    1112    x=-0.3596195125758298
     
    1314    z=0.7496834983724809
    1415
     16
    15173. Stuff the Sun position into a psCube (sunCube):
    1618
     
    1921    z=1.1220046291457653E10
    2022
    21 Convert to a psSphere (psCubeToSphere *sun).
     23Convert to a psSphere (psCubeToSphere *sun) for later use.
     24
    2225
    23264. Gravitational deflection:
     
    2528    psGravityDeflection(obj, obj, sun);
    2629
    27 Convert obj to a psCube, should get:
     30Convert obj to a psCube, and check that:
    2831
    2932    x=-0.35961949760293604
    3033    y=0.5555613950298085
    3134    z=0.7496835020836093
     35
    3236
    33375. Earth's direction of motion is:
     
    4246    z=0.09694774143797581
    4347
    44 These two need to be summed.  Converting to a psSphere gives the
    45 direction of motion (psSphere *direction), while the magnitude gives
    46 the speed (double speed).
     48These two vectors need to be summed (standard vector addition).
     49Converting to a psSphere gives the direction of motion (psSphere
     50*direction), while the magnitude gives the speed, after dividing by
     51the speed of light (double speed).
     52
    4753
    48546. Aberration:
     
    5056    psAberration(obj, obj, direction, speed);
    5157
    52 Convert obj to a psCube, should get:
     58Convert obj to a psCube, check that:
    5359
    5460    x=-0.35963388069046304
     
    5662    z=0.7497078321908413
    5763
    58 7. Generate a psTime (time) for 2003-04-01T01:30:00 UTC.
    59 
    60 8. Precession
     64
     657. Generate a psTime (time) for 2003-04-01T01:30:00 UTC.  Check that:
     66
     67time->sec == 1049160600
     68time->nsec == 0
     69time->leapsecond = false
     70
     71Copy time and convert to UT1:
     72
     73     timeUT1 = psTimeAlloc(PS_TIME_UTC);
     74     timeUT1->sec = time->sec;
     75     timeUT1->nsec = time->nsec;
     76     timeUT1->leapsecond = time->leapsecond;
     77     timeUT1 = psTimeConvert(timeUT1, PS_TIME_UT1);
     78
     79Then check timeUT1:
     80
     81     timeUT1->sec == 1049160599
     82     timeUT1->nsec == 657017200 (+/- hundreds of nsec at least)
     83
     84
     858. Precession:
    6186
    6287(a) psEarthPole *precession = psEOC_PrecessionModel(time);
    63 (b) psEarthPole *precessionCorr = psEOC_PrecessionCorr(time, PS_IERS_A);
    64 
    65 Add the above components:
     88
     89Check that:
     90
     91    X=2.857175590089105E-4
     92    Y=2.3968739377734732E-5
     93    S=-1.3970066457904322E-8
     94
     95(b) psEarthPole *precessionCorr = psEOC_PrecessionCorr(time, PS_IERS_B);
     96
     97Check that:
     98
     99    X = 0.06295703125
     100    Y = -0.0287618408203125
     101    S = 0
     102
     103(c) Generate the transformation:
    66104
    67105    precession->x += precessionCorr->x;
    68106    precession->y += precessionCorr->y;
    69107    precession->s += precessionCorr->s;
    70 
    71 Apply these to the position:
    72 
    73108    psSphereRot *precessionNutationInv = psSphereRot_CEOtoGCRS(earth); // This is CEO->GCRS
    74109    psSphereRot precessionNutation = psSphereRotInvert(precessionNutationInv); // This is GCRS->CEO
     110
     111Check that the rotation quaternion of precessionNutationInv is:
     112
     113    -1.1984522406756289E-5
     114    1.4285893358610674E-4
     115    1.2191193518914336E-10
     116    -0.9999999897238481
     117
     118(d) Apply the rotation to the position:
     119
    75120    obj = psSphereRotApply(obj, precessionNutation, obj);
    76121
    77 Convert obj to a psCube, should get:
     122Convert obj to a psCube and check that:
    78123
    79124    x=-0.3598480726985338
     
    81126    z=0.7496183628158023
    82127
    83 9. Earth rotation:
     128
     1299. Earth rotation
     130
     131(a) Generate the transformation:
    84132
    85133    psSphereRot *earthRotInv = psSphereRot_TEOtoCEO(time); // This is TEO->CEO
    86134    psSphereRot *earthRot = psSphereRotInvert(earthRotInv); // This is CEO->TEO
     135
     136Check that the rotation quaternion of earthRotInv is:
     137
     138    0.0
     139    0.0
     140    0.9625401009002903
     141    0.2711393629830588
     142
     143Within psSphereRot_TEOtoCEO, the Earth rotation angle should be 428251.4641536639 degrees
     144
     145(b) Apply the rotation to the position:
     146
    87147    obj = psSphereRotApply(obj, earthRot, obj);
    88148
    89 Convert obj to a psCube, should get:
     149Convert obj to a psCube and check that:
    90150
    91151    x=0.01698625430807123
     
    93153    z=0.7496183628158023
    94154
     155
    9515610. Polar Motion:
    96157
    97 (a) psEarthPole *earthPM = psEOC_GetPolarMotion(time, PS_IERS_A);
     158(a) psEarthPole *earthPM = psEOC_GetPolarMotion(time, PS_IERS_B);
    98159(b) psEarthPole *nutationCorr = psEOC_NutationCorr(time);
    99160
     
    104165    earthPM->s += nutationCorr->s;
    105166
    106 Apply these to the position:
     167Check that:
     168
     169    x=-0.13275353774074533
     170    y=0.4359436319739848
     171    s=-4.2376965863576153E-10
     172
     173(c) Generate the transformation:
    107174
    108175   psSphereRot *polarMotionInv = psSphereRot_ITRStoTEO(earthPM); // This is ITRS->TEO
    109176   psSphereRot *polarMotion = psSphereRotInvert(polarMotionInv); // This is TEO->ITRS
     177
     178Check that the rotation quaternion of polarMotionInv is:
     179
     180    -1.0567571848664005E-6
     181    3.218036562931509E-7
     182    -3.3580195807204483E-12
     183    -0.9999999999993899
     184
     185(d) Apply these to the position:
     186
    110187   obj = psSphereRotApply(obj, polarMotion, obj);
    111188
     
    116193    z=0.7496169753347885
    117194
     195
    11819611. The psLib SDRS does not define functions to go beyond this point
    119197(specifically, atmospheric refraction correction, and conversion to
    120 the observer's horizon coordinates), so we stop here.
     198the observer's horizon coordinates), so we stop here.  But check that
     199the above sequence can be executed faithfully in the reverse order as
     200well.
Note: See TracChangeset for help on using the changeset viewer.