Download spcirc.eso

Back to the list

   1 : C SPCIRC    SOURCE    CHAT      05/01/13    03:23:18     5004           
   2 :       INTEGER FUNCTION SPCIRC(ITRI,COORD,SPHERE,ZERO)
   3 : C     **********************************************************************
   4 : C     OBJET : CALCULE LE CERCLE CIRCONSCRIT A UN TRIANGLE
   5 : C     EN ENTREE :
   6 : C        ITRID  : NUMERO DES NOEUDS DU TRIANGLE
   7 : C        COORD  : COORDONNEES DES NOEUDS
   8 : C        ZERO   : PRECISION ( 2* SURFACE MINI. DES TRIANGLES)
   9 : C     EN SORTIE :
  10 : C        SPHERE : VECTEUR DIAMETRE DU CERCLE 
  11 : C                 LE VECTEUR A POUR ORIGINE LE 3IEME POINT DU TRIANGLE
  12 : C     RENVOI : -1 SI LA SURFACE DU TRIANGLE EST INFERIEUR A "ZERO"/2
  13 : C               0 SINON 
  14 : C     **********************************************************************
  15 :       IMPLICIT INTEGER(I-N)
  16 :       INTEGER ITRI(3)
  17 :       REAL*8    COORD(*),SPHERE(3),ZERO
  18 : C
  19 :       REAL*8 X1,Y1,X2,Y2,D1,D2,D
  20 : C      REAL*8 S,V
  21 : C      INTEGER I,K
  22 : C
  23 :       SPCIRC = 0
  24 :       SPHERE(1)=0.D0
  25 :       SPHERE(2)=0.D0
  26 : C      SPHERE(3)=0.
  27 :       X1=COORD( ( ITRI(1) - 1 ) *2 +1 ) -COORD( ( ITRI(3) -1 ) * 2+1 )
  28 :       Y1=COORD( ( ITRI(1) - 1 ) *2 +2 ) -COORD( ( ITRI(3) -1 ) * 2+2 )
  29 :       X2=COORD( ( ITRI(2) - 1 ) *2 +1 ) -COORD( ( ITRI(3) -1 ) * 2+1 )
  30 :       Y2=COORD( ( ITRI(2) - 1 ) *2 +2 ) -COORD( ( ITRI(3) -1 ) * 2+2 )
  31 :       D1=X1**2+Y1**2
  32 :       D2=X2**2+Y2**2
  33 :       D=X2*Y1-X1*Y2
  34 :       IF(ABS(D).LE.ZERO)THEN
  35 :         SPCIRC = -1
  36 :         GO TO 999
  37 :       ENDIF
  38 :       SPHERE(1)=(Y1*D2-Y2*D1)/D
  39 :       SPHERE(2)=(X2*D1-X1*D2)/D
  40 : C      SPHERE(3)=SPHERE(1)**2+SPHERE(2)**2
  41 : C
  42 : C     --- POUR TESTER LE CALCUL :
  43 : C
  44 : C      DO 20 I=1,3
  45 : C      S = 0.0
  46 : C      DO 10 K=1,2
  47 : C        V = COORD((ITRI(I)-1)*2+K) - COORD((ITRI(3)-1)*2+K)
  48 : C        S = S + V * ( SPHERE(K) - V )
  49 : C     10 CONTINUE
  50 : C      PRINT '(F22.20)',S
  51 : C     20 CONTINUE
  52 :   999 END
  53 :  
  54 :  

© Cast3M 2003 - All rights reserved.
Disclaimer