C COVERTS SYMTAB TO VECTOR AND ROLL DATA SUBROUTINE CONVRT(SYMST3) INTEGER SYMST3 COMMON/MOTION/SYMTAB(5,7,20),DIRTAB(9,2) K=SYMST3 C --FORM VECTOR , ROLL AND FLEXION FOR ARMS AND LEGS-- DO 90 M=3,6 C --IF NO CHANGE GO TO 15 IF(SYMTAB(1,M,K).EQ.1.0)GO TO 15 C --COPY LAST BLOCK UP-- L=K-1 DO 10 I=1,5 10 SYMTAB(I,M,K)=SYMTAB(I,M,L) GO TO 90 C C --RIGHT HALF OF BODY-- 15 HALF=1.0 IF(M.EQ.4)HALF=-1.0 IF(M.EQ.6)HALF=-1.0 C --SAVE SYMTAB FOR CALC.-- DEP=SYMTAB(2,M,K) SIDE=SYMTAB(3,M,K) ROLL=SYMTAB(4,M,K) FLEX=SYMTAB(5,M,K) C --NORMALIZE MODULE AS DEFAULT-- SYMTAB(1,M,K)=DIRTAB(1,2) SYMTAB(2,M,K)=DIRTAB(1,1) SYMTAB(3,M,K)=DIRTAB(1,2) SYMTAB(4,M,K)=0.0 SYMTAB(5,M,K)=0.0 C --ANY DEPTH-- IF(ABS(DEP).GT.1.0)GO TO 30 DEP=0.0 GO TO 40 30 MAG=ABS(DEP) S=1.0 C --BACK? IF(DEP.LT.00.0)S=-1.0 C--SET COMPONENTS-- XD=S*DIRTAB(MAG,2) YD=DIRTAB(MAG,1) ZD=0.0 C --ANY SIDE -- 40 IF(ABS(SIDE).GT.1.0)GO TO 45 SIDE=0.0 GO TO 50 45 MAG=ABS(SIDE) S=1.0 IF((HALF.EQ.-1.0).AND.(SIDE.LT.0.0))S=-1.0 IF((HALF.EQ.1.0).AND.(SIDE.GT.0.0))S=-1.0 C --SET COMPONENTS-- XS=0.0 YS=DIRTAB(MAG,1) ZS=S*DIRTAB(MAG,2)*HALF C C --ANY ROLL- 50 IF(ABS(ROLL).LE.1.0)GO TO 60 S=1.0 IF(ROLL.LT.0.0)S=-1.0 SYMTAB(4,M,K)=S*(ABS(ROLL)-1.0)*22.5 C --ANY FLEXION-- 60 IF(ABS(FLEX).LE.1.0)GO TO 70 S=1.0 IF(FLEX.LT.0.0)S=-1.0 SYMTAB(5,M,K)=S*(ABS(FLEX)-1.0)*22.5 C --ASSIGN VECTOR COMPONENTS TO TABLE-- 70 IF((ABS(DEP)+ABS(SIDE)).EQ.0.0)GO TO 90 IF(DEP.NE.0.0)GO TO 81 XD=0.0 YD=0.0 ZD=0.0 81 IF(SIDE.NE.0.0)GO TO 82 XS=0.0 YS=0.0 ZS=0.0 C 82 XS=XS+XD YS=YS+YD ZS=ZS+ZD IF((DEP.NE.0.0).AND.(SIDE.NE.0.0))YS=YS/2.0 C ---SET INTO TABLE-- SYMTAB(1,M,K)=XS SYMTAB(2,M,K)=YS SYMTAB(3,M,K)=ZS 90 CONTINUE C C------------------------- C --HEAD AND TORSO-- DO 190 M=1,2 IF(SYMTAB(1,M,K).EQ.1.0)GO TO 150 C --NO CHANGE ,COPY BLOCK UP--- L=K-1 DO 110 I=1,5 SYMTAB(I,M,K)=SYMTAB(I,M,L) 110 CONTINUE GO TO 190 C C --SAVE SYMTAB-- 150 ANOD=SYMTAB(2,M,K) SIDE=SYMTAB(3,M,K) ROLL=SYMTAB(4,M,K) C --NORMALIZE AS DEFAULT-- SYMTAB(1,M,K)=DIRTAB(1,2) SYMTAB(2,M,K)=DIRTAB(9,1) SYMTAB(3,M,K)=DIRTAB(1,2) SYMTAB(4,M,K)=0.0 C C --ANY NOD-- IF(ABS(ANOD).GT.1.0)GO TO 200 ANOD=0.0 GO TO 300 C --NOD VECTOR 200 MAG=ABS(ANOD) MAG=10-MAG S=1.0 C --EXTENSION? (POS) IF(ANOD.GT.0.0)S=-1.0 XD=DIRTAB(MAG,2)*S YD=DIRTAB(MAG,1) ZD=0.0 C --ANY SIDE-- 300 IF(ABS(SIDE).GT.1.0)GO TO 350 SIDE=0.0 GO TO 400 C --INCLINE VECTOER 350 MAG=ABS(SIDE) MAG=10-MAG C --LEFT SIDE(NEG) S=1.0 IF(SIDE.LT.0.0)S=-1.0 XS=0.0 YS=DIRTAB(MAG,1) ZS=DIRTAB(MAG,2)*S C C ---ANY ROLL 400 IF(ABS(ROLL).LE.1.0)GO TO 500 S=1.0 C --RIHGT ROLL IF(ROLL.LT.0.0)S=-1.0 SYMTAB(4,M,K)=S*(ABS(ROLL)-1.0)*22.5 C C --SET VECTOR-- 500 IF((ABS(ANOD)+ABS(SIDE)).EQ.0.0)GO TO 190 IF(ANOD.NE.0.0)GO TO 181 XD=0.0 YD=0.0 ZD=0.0 181 IF(SIDE.NE.0.0)GO TO 182 XS=0.0 YS=0.0 ZS=0.0 182 XS=XS+XD YS=YS+YD ZS=ZS+ZD IF((ANOD.NE.0.0).AND.(SIDE.NE.0.0))YS=YS/2.0 C --SET COMP. INTO TABLE-- SYMTAB(1,M,K)=XS SYMTAB(2,M,K)=YS SYMTAB(3,M,K)=ZS C 190 CONTINUE C C ---------------------------- C --ROTATE BODY-- M=7 IF(SYMTAB(1,M,K).EQ.1.0)GO TO 195 C --KEEP SAME ORIENTATION-- L=K-1 DO 196 I=1,5 196 SYMTAB(I,M,K)=SYMTAB(I,M,L) GO TO 99 C SET NEW ANGLE-- 195 SYMTAB(2,M,K)=-1.0*(SYMTAB(2,M,K)-1.0)*45.0 123 FORMAT(1X,7F7.2) C 99 RETURN END