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