Download clrep.eso

Back to the list

   1 : C CLREP     SOURCE    CHAT      05/01/12    22:08:51     5004           
   2 :       SUBROUTINE CLREP(VECX,VECY,VECZ,ANGLE,IANGLE)                             
   3 :       IMPLICIT INTEGER(I-N)
   4 :       IMPLICIT REAL*8 (A-H,O-Z)                                                 
   5 : -INC CCOPTIO
   6 : C                                                                               
   7 : C----------------------------------------------------------------------         
   8 : C  CETTE ROUTINE A PLUSIEURS FONCTION :
   9 : C                                                                               
  10 : C  1- :                                                                         
  11 : C                                                                               
  12 : C      POUR IANGLE = 0                                                          
  13 : C    ==================                                                         
  14 : C     ON CALCULE VECX ET VECY POUR UN VECZ DONNE                                
  15 : C                                                                               
  16 : C----------------------------------------------------------------------         
  17 : C  2- :                                                                         
  18 : C                                                                               
  19 : C     POUR IANGLE = 1                                                           
  20 : C    =================                                                          
  21 : C     ON CALCULE L ANGLE ( EN DEGRE ) 
  22 : C        POUR UN REPERE ( VF1 , VF2 ET VECZ ) DONNE
  23 : C        PAR RAPPORT A ( VECX , VECY ET VECZ )
  24 : C                                                                               
  25 : C     POUR IANGLE = 2                                                           
  26 : C    =================                                                          
  27 : C     ON CALCULE L ANGLE ( EN RADIAN )
  28 : C        POUR UN REPERE ( VF1 , VF2 ET VECZ ) DONNE
  29 : C        PAR RAPPORT A ( VECX , VECY ET VECZ )
  30 : C                                                                               
  31 : C----------------------------------------------------------------------         
  32 : C                                                                               
  33 : C  3- :
  34 : C                                                                               
  35 : C     POUR IANGLE = 3
  36 : C    =================                                                          
  37 : C     ON CALCULE VF1 ET VF2 POUR UN VECZ DONNE
  38 : C        PLUS UN ANGLE ( EN RADIAN ) DONNE
  39 : C        PAR RAPPORT A VECX
  40 : C                                                                               
  41 : C----------------------------------------------------------------------         
  42 : C                                                                               
  43 :       DIMENSION VECX(*),VECY(*),VECZ(*)
  44 :       DIMENSION VECX0(3)
  45 : C                                                                               
  46 :       RAD=57.29577951308232D0                                                   
  47 : C                                                                               
  48 :       USR3=1.D0/SQRT(VECZ(1)*VECZ(1)+VECZ(2)*VECZ(2)+VECZ(3)*VECZ(3))           
  49 : C                                                                               
  50 :       VECZ(1)=VECZ(1)*USR3                                                      
  51 :       VECZ(2)=VECZ(2)*USR3                                                      
  52 :       VECZ(3)=VECZ(3)*USR3                                                      
  53 : C                                                                               
  54 :       IF (IANGLE.EQ.3) THEN
  55 : C                                                                               
  56 :         CO=COS(ANGLE)
  57 :         SI=SIN(ANGLE)
  58 : C
  59 :         VECX(1)=VECX(1)*CO+VECY(1)*SI
  60 :         VECX(2)=VECX(2)*CO+VECY(2)*SI
  61 :         VECX(3)=VECX(3)*CO+VECY(3)*SI
  62 : C
  63 :         USR1=1.D0/SQRT(VECX(1)*VECX(1)+VECX(2)*VECX(2)+VECX(3)*VECX(3))
  64 :         VECX(1)=VECX(1)*USR1
  65 :         VECX(2)=VECX(2)*USR1
  66 :         VECX(3)=VECX(3)*USR1
  67 : C
  68 :         VECY(1)=VECZ(2)*VECX(3)-VECZ(3)*VECX(2)
  69 :         VECY(2)=VECZ(3)*VECX(1)-VECZ(1)*VECX(3)
  70 :         VECY(3)=VECZ(1)*VECX(2)-VECZ(2)*VECX(1)
  71 : C                                                                               
  72 :         USR2=1.D0/SQRT(VECY(1)*VECY(1)+VECY(2)*VECY(2)+VECY(3)*VECY(3))
  73 : C                                                                               
  74 :         VECY(1)=VECY(1)*USR2
  75 :         VECY(2)=VECY(2)*USR2
  76 :         VECY(3)=VECY(3)*USR2
  77 : C
  78 :         RETURN
  79 :       ENDIF
  80 : C
  81 :       IF(IANGLE.EQ.0) GO TO 100                                                 
  82 : C
  83 :       VECX0(1)=VECX(1)                                                          
  84 :       VECX0(2)=VECX(2)                                                          
  85 :       VECX0(3)=VECX(3)                                                          
  86 :       USR1=1.D0/SQRT(VECX(1)*VECX(1)+VECX(2)*VECX(2)+VECX(3)*VECX(3))           
  87 : C                                                                               
  88 :       VECX0(1)=VECX0(1)*USR1                                                    
  89 :       VECX0(2)=VECX0(2)*USR1                                                    
  90 :       VECX0(3)=VECX0(3)*USR1                                                    
  91 : C                                                                               
  92 :   100 VECX(1)=-VECZ(2)                                                          
  93 :       VECX(2)=VECZ(1)                                                           
  94 :       VECX(3)=0.D0                                                              
  95 : C                                                                               
  96 :       IF(VECX(1).EQ.0.AND.VECX(2).EQ.0.) VECX(1)=1.D0                           
  97 : C                                                                               
  98 :       USR1=1.D0/SQRT(VECX(1)*VECX(1)+VECX(2)*VECX(2))                           
  99 : C                                                                               
 100 :       VECX(1)=VECX(1)*USR1                                                      
 101 :       VECX(2)=VECX(2)*USR1                                                      
 102 : C                                                                               
 103 :       VECY(1)=VECZ(2)*VECX(3)-VECZ(3)*VECX(2)                                   
 104 :       VECY(2)=VECZ(3)*VECX(1)-VECZ(1)*VECX(3)                                   
 105 :       VECY(3)=VECZ(1)*VECX(2)-VECZ(2)*VECX(1)                                   
 106 : C                                                                               
 107 :       USR2=1.D0/SQRT(VECY(1)*VECY(1)+VECY(2)*VECY(2)+VECY(3)*VECY(3))           
 108 : C                                                                               
 109 :       VECY(1)=VECY(1)*USR2                                                      
 110 :       VECY(2)=VECY(2)*USR2                                                      
 111 :       VECY(3)=VECY(3)*USR2                                                      
 112 : C                                                                               
 113 :       IF(IANGLE.EQ.0) RETURN                                                    
 114 : C                                                                               
 115 :       CSN=VECX(1)*VECX0(1)+VECX(2)*VECX0(2)+VECX(3)*VECX0(3)
 116 :       SSN=VECY(1)*VECX0(1)+VECY(2)*VECX0(2)+VECY(3)*VECX0(3)
 117 :       ANGLE=ATAN2(SSN,CSN)
 118 :       IF(IANGLE.EQ.1) ANGLE=ANGLE*RAD                                           
 119 : C                                                                               
 120 :       RETURN                                                                    
 121 :       END                                                                       
 122 :  

© Cast3M 2003 - All rights reserved.
Disclaimer