;+ ; NAME: ; smei_sgp4_quat ; PURPOSE: ; Calculates quaternion for nominal SMEI attitude at indicated times. ; CATEGORY: ; CALLING SEQUENCE: FUNCTION smei_sgp4_quat, tt ; INPUTS: ; tt array; type: time structure ; OPTIONAL INPUT PARAMETERS: ; OUTPUTS: ; qq array[4,*]; type: double ; spacecraft quaternion ; INCLUDE: @compile_opt.pro ; On error, return to caller ; CALLS: ; sgp4_eph, cvrotation ; PROCEDURE: ; Should match the quaternion specified in the SMEI frame header. ; MODIFICATION HISTORY: ; JUL-2006, Paul Hick (UCSD/CASS; pphick@ucsd.edu) ;- onepi = !dpi halfpi = onepi/2.0d0 one = replicate(1,3) pos = sgp4_eph(tt) rr = -pos[0:2,*] ; Spacecraft nadir vv = pos[3:5,*] ; Spacecraft velocity vector pos = cv_coord(from_rect=rr, /to_sphere) alfa = pos[0,*] ; RA nadir beta = halfpi-pos[1,*] ; 90 - (dec nadir) rr = rr/(one#sqrt(total(rr*rr,1))) ; Unit vector zenith vv = vv/(one#sqrt(total(vv*vv,1))) ; Unit vector along velocity gamma = onepi+atan(rr[1,*]*vv[0,*]-rr[0,*]*vv[1,*],vv[2,*]) RETURN, CvRotation(from_euler=[alfa,beta,gamma], /to_quat) & END