C C COMPUTE THE MATRICES FOR TRANSFORMATION FROM THE EARTH MEAN ECLIPTIC AND C EQUINOX OF 1950 (EME'50) COORDINATES TO PLANETARY SPHERICAL COORDINATES. C C MODIFIED TO SWAP VALUES OF LATITUDE AND LONGITUDE BEFORE RETURN C 07/31/95 SBK C SUBROUTINE SEDRENC(GMT,NAV,PV,RJVE,ANG,S,ROT,Q,RANGE) C C NAV - Navigation record of either 126 or 252 word length. C C PV - Pointing vector data from words 12-20 of original MVS pointing C vector block. C PV(1,1) = PITCH X COMPONENT C PV(2,1) = PITCH Y COMPONENT C PV(3,1) = PITCH Z COMPONENT C PV(1,2) = YAW X COMPONENT C PV(2,2) = YAW Y COMPONENT C PV(3,2) = YAW Z COMPONENT C PV(1,3) = ROLL X COMPONENT C PV(2,3) = ROLL Y COMPONENT C PV(3,3) = ROLL Z COMPONENT C C RJVE - Spacecraft range and velocity in planetary coordinates C INTEGER*2 GMT(6) C REAL*4 NAV(252),RJVE(6),ANG(2),PV(3,3),Q(3,3),ROT(3,3),S(3,3) C REAL*8 DAYS,LONG,DRANGE,RA C C P-MATRICES TRANSFORM FROM CATERSIAN COMPONENTS REFERRED TO BY THE C EARTH MEAN ECLIPTIC AND EQUINOX OF 1950 (EME'50) SYSTEM TO A C PLANETOCENTRIC CARTESIAN VERNAL EQUINOX SYSTEM (INERTIAL). C REAL*4 PJ(3,3) / -7.214966E-1, +6.922823E-1, +1.370326E-2, & -6.922676E-1, -7.207863E-1, -3.511083E-2, & -1.442949E-2, -3.481867E-2, +9.992895E-1 / C REAL*4 PS(3,3) / +9.915140E-1, -1.244780E-1, -3.749200E-2, & +9.252900E-2, +8.783090E-1, -4.690540E-1, & +9.131600E-2, +4.616040E-1, +8.823730E-1 / C REAL*4 PU(3,3) / +9.737952E-1, -2.270260E-1, -1.349334E-2, & -4.308389E-2, -1.258954E-1, -9.911075E-1, & +2.233085E-1, +9.657171E-1, -1.323775E-1 / C REAL*4 PN(3,3) / -7.093737E-1, -7.041542E-1, +3.091500E-2, & +6.092710E-1, -6.346587E-1, -4.753915E-1, & +3.543694E-1, -3.183947E-1, +8.792310E-1 / C REAL*4 ARADJ/71372.0E0/, ARADS/60330.0E0/, ARADU/25600.E0/, & ARADN/24765.0E0/, DTR/0.17453293E0/ C INCLUDE 'UNPACK.INC' C IF ( ICOORD.EQ.4 ) THEN C C JUPITER C DO I=1,3 DO J=1,3 Q(J,I) = PJ(1,I)*PV(1,J) + PJ(2,I)*PV(2,J) + PJ(3,I)*PV(3,J) END DO RJVE(I) = & (PJ(1,I)*NAV(19) + PJ(2,I)*NAV(20) + PJ(3,I)*NAV(21))/ARADJ RJVE(I+3) = & (PJ(1,I)*NAV(22) + PJ(2,I)*NAV(23) + PJ(3,I)*NAV(24))/ARADJ END DO ANG(1) = NAV(157) ANG(2) = NAV(159) RANGE = NAV(176)/ARADJ C ELSE IF ( ICOORD.EQ.3 ) THEN C C SATURN C DO I=1,3 DO J=1,3 Q(J,I) = PS(1,I)*PV(1,J) + PS(2,I)*PV(2,J) + PS(3,I)*PV(3,J) END DO RJVE(I) = & (PS(1,I)*NAV(19) + PS(2,I)*NAV(20) + PS(3,I)*NAV(21))/ARADS RJVE(I+3) = & (PS(1,I)*NAV(22) + PS(2,I)*NAV(23) + PS(3,I)*NAV(24))/ARADS END DO ANG(1) = NAV(76) ANG(2) = NAV(77) ! NEED TO SEE ORIGINAL CODE DAYS = GMT(2) - 1.0D0 + (GMT(3) + (GMT(4) + (GMT(5) + & GMT(6)/1000.0D0)/60.0D0)/60.0D0)/24.0D0 IF ( GMT(1).EQ.1981 ) DAYS = DAYS + 366.0D0 DRANGE = DBLE(NAV(83)) RA = NAV(103) LONG = 810.76D0*(DAYS - 3.860695545D-11*DRANGE) - RA ANG(2) = DMOD(LONG,360.D0) RANGE = NAV(83)/ARADS C ELSE IF ( ICOORD.EQ.5 ) THEN C C URANUS C DO I=1,3 DO J=1,3 Q(J,I) = PU(1,I)*PV(1,J) + PU(2,I)*PV(2,J) + PU(3,I)*PV(3,J) END DO RJVE(I) = & (PU(1,I)*NAV(19) + PU(2,I)*NAV(20) + PU(3,I)*NAV(21))/ARADU RJVE(I+3) = & (PU(1,I)*NAV(22) + PU(2,I)*NAV(23) + PU(3,I)*NAV(24))/ARADU END DO ANG(1) = NAV(139) ANG(2) = NAV(140) RANGE = NAV(153)/ARADU C ELSE IF ( ICOORD.EQ.6 ) THEN C C NEPTUNE C DO I=1,3 DO J=1,3 Q(J,I) = PN(1,I)*PV(1,J) + PN(2,I)*PV(2,J) + PN(3,I)*PV(3,J) END DO RJVE(I) = & (PN(1,I)*NAV(19) + PN(2,I)*NAV(20) + PN(3,I)*NAV(21))/ARADN RJVE(I+3) = & (PN(1,I)*NAV(22) + PN(2,I)*NAV(23) + PN(3,I)*NAV(24))/ARADN END DO ANG(1) = NAV(139) ANG(2) = NAV(140) RANGE = NAV(153)/ARADN C END IF C C COMPUTE PSI AND OMEGA C SQ = SQRT(RJVE(1)**2+RJVE(2)**2+RJVE(3)**2) IF ( SQ.NE.0.0 ) THEN PSI = ACOS(RJVE(3)/SQ) ELSE PSI = 0.0 END IF OMG = ATAN2(RJVE(2),RJVE(1)) C C COMPUTES SINES AND COSINES OF ANGLES PSI AND OMEGA C CPSI = COS(PSI) SPSI = SIN(PSI) COMG = COS(OMG) SOMG = SIN(OMG) C C COMPUTE S MATRIX C 1 C S(1,1) = SPSI*COMG S(1,2) = CPSI*COMG S(1,3) = -SOMG S(2,1) = SPSI*SOMG S(2,2) = CPSI*SOMG S(2,3) = COMG S(3,1) = CPSI S(3,2) = -SPSI S(3,3) = 0.0 C C T C COMPUTE ROTATION MATRIX S PA C 1 C DO I = 1,3 DO J = 1,3 ROT(J,I) = S(1,I)*Q(J,1) + S(2,I)*Q(J,2) + S(3,I)*Q(J,3) END DO END DO C C COMPUTE S MATRIX C 2 C COMG = COS(DTR*(360.0-ANG(2))) SOMG = SIN(DTR*(360.0-ANG(2))) S(1,1) = SPSI*COMG S(1,2) = CPSI*COMG S(1,3) = -SOMG S(2,1) = SPSI*SOMG S(2,2) = CPSI*SOMG S(2,3) = COMG C C T T C COMPUTE S S PA C 2 1 C DO I = 1,3 DO J = 1,3 Q(J,I) = S(I,1)*ROT(J,1) + S(I,2)*ROT(J,2) + S(I,3)*ROT(J,3) END DO END DO C C SWAP LATITUDE AND LONGITUDE FOR CONFORMANCE TO CRUISE MODE ROUTINES. C TEMP = ANG(1) ANG(1) = ANG(2) ANG(2) = TEMP C RETURN END