Télécharger knorm.eso

Retour à la liste

Numérotation des lignes :

knorm
  1. C KNORM SOURCE CB215821 16/04/21 21:17:31 8920
  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=SQRT(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=SQRT(D)
  51. S = S + D/2.
  52. ENDDO
  53. C
  54. RETURN
  55. END
  56.  
  57.  
  58.  
  59.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales