Download knorm.eso

Back to the list

   1 : C KNORM     SOURCE    CHAT      05/01/13    00:58:21     5004           
   2 :       SUBROUTINE KNORM(NES,CM,NCM,U,S)
   3 : C___________________________________________________________
   4 : C  Fonction  : calcule la surface et de la normale d'un polygone .
   5 : C___________________________________________________________
   6 : C  Arguments :
   7 : C       NES  (  in  ) : dimension de l'espace
   8 : C       NCM  (  in  ) : nombre de sommets
   9 : C       CM   (  in  ) : tableau des coordonnées des sommets
  10 : C       U    (  out ) : normale
  11 : C       S    (  out ) : surface
  12 : C___________________________________________________________
  13 :       IMPLICIT INTEGER(I-N)
  14 :       IMPLICIT REAL*8 (A-H,O-Z)                                                 
  15 :       DIMENSION V(3,2),CM(NES,NCM),U(*),W(3)
  16 : C                                                                               
  17 :       DO 10 K=1,3
  18 :          V(K,1)=CM(K,2)-CM(K,1)
  19 :          V(K,2)=CM(K,1)-CM(K,NCM)
  20 :  10   CONTINUE
  21 :       U(1)=-V(2,1)*V(3,2)+V(3,1)*V(2,2)
  22 :       U(2)=-V(3,1)*V(1,2)+V(1,1)*V(3,2)
  23 :       U(3)=-V(1,1)*V(2,2)+V(2,1)*V(1,2)
  24 :       D=0.D0
  25 :       DO 20 K=1,3
  26 :          D=D+U(K)**2
  27 :  20   CONTINUE
  28 :       D=DSQRT(D)
  29 :       DO 21 K=1,3
  30 :          U(K)=U(K)/D
  31 :  21   CONTINUE
  32 :       U(4) = -(U(1)*CM(1,1)+U(2)*CM(2,1)+U(3)*CM(3,1))                          
  33 : 
  34 :         S = 0.D0
  35 :              DO I=2,(NCM-1)
  36 : C       On segmente le polygone en (NCM-2) triangles
  37 : C
  38 : C       Calcul de la surface d'un triangle 
  39 :              DO K=1,3
  40 :               V(K,1)=CM(K,I)-CM(K,1) 
  41 :               V(K,2)=CM(K,1)-CM(K,I+1)
  42 :              ENDDO
  43 :              W(1)=-V(2,1)*V(3,2)+V(3,1)*V(2,2)
  44 :              W(2)=-V(3,1)*V(1,2)+V(1,1)*V(3,2)
  45 :              W(3)=-V(1,1)*V(2,2)+V(2,1)*V(1,2)
  46 :              D=0.D0
  47 :              DO K=1,3
  48 :               D=D+W(K)**2
  49 :              ENDDO
  50 :              D=DSQRT(D)
  51 :            S = S + D/2.
  52 :         ENDDO
  53 : C
  54 :       RETURN
  55 :       END
  56 :  

© Cast3M 2003 - All rights reserved.
Disclaimer