Changeset 5551
- Timestamp:
- Nov 18, 2005, 2:23:52 PM (21 years ago)
- File:
-
- 1 edited
-
trunk/doc/pslib/eoc_testing.txt (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/doc/pslib/eoc_testing.txt
r5550 r5551 7 7 explicitly setting the values in the struct. 8 8 9 2. Convert obj to a psCube (psSphereToCube), should get: 9 10 2. Convert obj to a psCube (psSphereToCube), and check that: 10 11 11 12 x=-0.3596195125758298 … … 13 14 z=0.7496834983724809 14 15 16 15 17 3. Stuff the Sun position into a psCube (sunCube): 16 18 … … 19 21 z=1.1220046291457653E10 20 22 21 Convert to a psSphere (psCubeToSphere *sun). 23 Convert to a psSphere (psCubeToSphere *sun) for later use. 24 22 25 23 26 4. Gravitational deflection: … … 25 28 psGravityDeflection(obj, obj, sun); 26 29 27 Convert obj to a psCube, should get:30 Convert obj to a psCube, and check that: 28 31 29 32 x=-0.35961949760293604 30 33 y=0.5555613950298085 31 34 z=0.7496835020836093 35 32 36 33 37 5. Earth's direction of motion is: … … 42 46 z=0.09694774143797581 43 47 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). 48 These two vectors need to be summed (standard vector addition). 49 Converting to a psSphere gives the direction of motion (psSphere 50 *direction), while the magnitude gives the speed, after dividing by 51 the speed of light (double speed). 52 47 53 48 54 6. Aberration: … … 50 56 psAberration(obj, obj, direction, speed); 51 57 52 Convert obj to a psCube, should get:58 Convert obj to a psCube, check that: 53 59 54 60 x=-0.35963388069046304 … … 56 62 z=0.7497078321908413 57 63 58 7. Generate a psTime (time) for 2003-04-01T01:30:00 UTC. 59 60 8. Precession 64 65 7. Generate a psTime (time) for 2003-04-01T01:30:00 UTC. Check that: 66 67 time->sec == 1049160600 68 time->nsec == 0 69 time->leapsecond = false 70 71 Copy 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 79 Then check timeUT1: 80 81 timeUT1->sec == 1049160599 82 timeUT1->nsec == 657017200 (+/- hundreds of nsec at least) 83 84 85 8. Precession: 61 86 62 87 (a) psEarthPole *precession = psEOC_PrecessionModel(time); 63 (b) psEarthPole *precessionCorr = psEOC_PrecessionCorr(time, PS_IERS_A); 64 65 Add the above components: 88 89 Check 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 97 Check that: 98 99 X = 0.06295703125 100 Y = -0.0287618408203125 101 S = 0 102 103 (c) Generate the transformation: 66 104 67 105 precession->x += precessionCorr->x; 68 106 precession->y += precessionCorr->y; 69 107 precession->s += precessionCorr->s; 70 71 Apply these to the position:72 73 108 psSphereRot *precessionNutationInv = psSphereRot_CEOtoGCRS(earth); // This is CEO->GCRS 74 109 psSphereRot precessionNutation = psSphereRotInvert(precessionNutationInv); // This is GCRS->CEO 110 111 Check 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 75 120 obj = psSphereRotApply(obj, precessionNutation, obj); 76 121 77 Convert obj to a psCube , should get:122 Convert obj to a psCube and check that: 78 123 79 124 x=-0.3598480726985338 … … 81 126 z=0.7496183628158023 82 127 83 9. Earth rotation: 128 129 9. Earth rotation 130 131 (a) Generate the transformation: 84 132 85 133 psSphereRot *earthRotInv = psSphereRot_TEOtoCEO(time); // This is TEO->CEO 86 134 psSphereRot *earthRot = psSphereRotInvert(earthRotInv); // This is CEO->TEO 135 136 Check that the rotation quaternion of earthRotInv is: 137 138 0.0 139 0.0 140 0.9625401009002903 141 0.2711393629830588 142 143 Within psSphereRot_TEOtoCEO, the Earth rotation angle should be 428251.4641536639 degrees 144 145 (b) Apply the rotation to the position: 146 87 147 obj = psSphereRotApply(obj, earthRot, obj); 88 148 89 Convert obj to a psCube , should get:149 Convert obj to a psCube and check that: 90 150 91 151 x=0.01698625430807123 … … 93 153 z=0.7496183628158023 94 154 155 95 156 10. Polar Motion: 96 157 97 (a) psEarthPole *earthPM = psEOC_GetPolarMotion(time, PS_IERS_ A);158 (a) psEarthPole *earthPM = psEOC_GetPolarMotion(time, PS_IERS_B); 98 159 (b) psEarthPole *nutationCorr = psEOC_NutationCorr(time); 99 160 … … 104 165 earthPM->s += nutationCorr->s; 105 166 106 Apply these to the position: 167 Check that: 168 169 x=-0.13275353774074533 170 y=0.4359436319739848 171 s=-4.2376965863576153E-10 172 173 (c) Generate the transformation: 107 174 108 175 psSphereRot *polarMotionInv = psSphereRot_ITRStoTEO(earthPM); // This is ITRS->TEO 109 176 psSphereRot *polarMotion = psSphereRotInvert(polarMotionInv); // This is TEO->ITRS 177 178 Check 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 110 187 obj = psSphereRotApply(obj, polarMotion, obj); 111 188 … … 116 193 z=0.7496169753347885 117 194 195 118 196 11. The psLib SDRS does not define functions to go beyond this point 119 197 (specifically, atmospheric refraction correction, and conversion to 120 the observer's horizon coordinates), so we stop here. 198 the observer's horizon coordinates), so we stop here. But check that 199 the above sequence can be executed faithfully in the reverse order as 200 well.
Note:
See TracChangeset
for help on using the changeset viewer.
