Télécharger dedans.procedur

Retour à la liste

Numérotation des lignes :

  1. * DEDANS PROCEDUR AM 12/06/06 21:15:00 7384
  2. 'DEBPROC' DEDANS P0*POINT CTR1*MAILLAGE PREC/'FLOTTANT' ;
  3. *
  4. * Procedure GIBIANE pour determiner si un point est à l'interieur d'un
  5. * contour fermé orienté en dimesnion 2
  6. *
  7. * LOG1 = DEDANS P0(type POINT) CTR1(type MAILLAGE) (PREC (type FLOTTANT)) ;
  8. *
  9. * Si z0 est l'affixe du point P0
  10. * On intègre la fonction complex 1/(z-z0) sur le contour,
  11. * d'après la théorie des résidus
  12. * si le point est dans le contour l'integrale vaut +/- 360
  13. * sinon l'intégrale vaut 0.
  14. *
  15. 'SI' ('NON' ('EXISTE' PREC)) ;
  16. PREC = 0. ;
  17. 'FINSI' ;
  18.  
  19.  
  20. DIDI = VALE DIME ;
  21. 'SI' ( DIDI EGA 3) ;
  22. ERREUR 'Fonction indisponible en dimension 3' ;
  23. 'FINSI' ;
  24. CTR2 = CHANGER 'SEG2' CTR1 ;
  25. NBE1 = NBELEM CTR2 ;
  26. X0 Y0 = COOR P0 ;
  27. STHET0 = 0. ;
  28. *
  29. * boucle sur chaque element du contour
  30. *
  31. 'REPETER' BLOC1 NBE1 ;
  32. SEGEL1 = CTR2 'ELEM' &BLOC1 ;
  33. * on recupère les points du seg2
  34. PEL1 = SEGEL1 'POINT' 1 ;
  35. PEL2 = SEGEL1 'POINT' 2 ;
  36. * calcule sur les coordonnés
  37. X1 Y1 = COOR PEL1 ;
  38. X2 Y2 = COOR PEL2 ;
  39. L1 = (X1 - X0) ** 2 + ((Y1 -Y0) ** 2) ** 0.5 ;
  40. L2 = (X2 - X0) ** 2 + ((Y2 -Y0) ** 2) ** 0.5 ;
  41. 'SI' ( 'OU' (L1 <EG PREC) (L2 <EG PREC) );
  42. 'RESPRO' VRAI ;
  43. 'QUITTER' DEDANS ;
  44. 'FINSI' ;
  45. COTH1 = (X1 - X0)*(X2 - X0) +((Y1 -Y0) * (Y2 -Y0)) / L1 / L2 ;
  46. SITH1 = (X1 - X0)*(Y2 -Y0) - ((Y1 -Y0) * (X2 - X0)) / L1 / L2 ;
  47. 'SI' ( COTH1 EGA 0. ) ;
  48. 'SI' (SITH1 > 0. ) ;
  49. THETA1 = 90. ;
  50. 'SINON' ;
  51. THETA1 = -90. ;
  52. 'FINSI' ;
  53. 'SINON' ;
  54. THETA1 = ATG ( SITH1 / COTH1 ) ;
  55. 'SI' ( COTH1 < 0. ) ;
  56. 'SI' ( SITH1 >EG 0. ) ;
  57. THETA1 = THETA1 + 180. ;
  58. 'SINON' ;
  59. THETA1 = THETA1 - 180. ;
  60. 'FINSI' ;
  61. 'FINSI' ;
  62. 'FINSI' ;
  63. STHET0 = STHET0 + THETA1 ;
  64. 'FIN' BLOC1 ;
  65. *
  66. *
  67. *
  68. 'SI' ( (ABS (ABS STHET0 - 360. )) &lt;EG 1.D-4 ) ;
  69. 'RESPRO' VRAI ;
  70. 'SINON' ;
  71. 'SI' ( (ABS STHET0) &lt;EG 1.D-4 ) ;
  72. 'RESPRO' FAUX ;
  73. 'SINON' ;
  74. 'ERREUR' 28 ;
  75. 'FINSI' ;
  76. 'FINSI' ;
  77. *
  78. 'FINPROC' ;
  79.  

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