$$$$ DEDANS * DEDANS PROCEDUR AM 12/06/06 21:15:00 7384 'DEBPROC' DEDANS P0*POINT CTR1*MAILLAGE PREC/'FLOTTANT' ; * * Procedure GIBIANE pour determiner si un point est à l'interieur d'un * contour fermé orienté en dimesnion 2 * * LOG1 = DEDANS P0(type POINT) CTR1(type MAILLAGE) (PREC (type FLOTTANT)) ; * * Si z0 est l'affixe du point P0 * On intègre la fonction complex 1/(z-z0) sur le contour, * d'après la théorie des résidus * si le point est dans le contour l'integrale vaut +/- 360 * sinon l'intégrale vaut 0. * 'SI' ('NON' ('EXISTE' PREC)) ; PREC = 0. ; 'FINSI' ; DIDI = VALE DIME ; 'SI' ( DIDI EGA 3) ; ERREUR 'Fonction indisponible en dimension 3' ; 'FINSI' ; CTR2 = CHANGER 'SEG2' CTR1 ; NBE1 = NBELEM CTR2 ; X0 Y0 = COOR P0 ; STHET0 = 0. ; * * boucle sur chaque element du contour * 'REPETER' BLOC1 NBE1 ; SEGEL1 = CTR2 'ELEM' &BLOC1 ; * on recupère les points du seg2 PEL1 = SEGEL1 'POINT' 1 ; PEL2 = SEGEL1 'POINT' 2 ; * calcule sur les coordonnés X1 Y1 = COOR PEL1 ; X2 Y2 = COOR PEL2 ; L1 = (X1 - X0) ** 2 + ((Y1 -Y0) ** 2) ** 0.5 ; L2 = (X2 - X0) ** 2 + ((Y2 -Y0) ** 2) ** 0.5 ; 'SI' ( 'OU' (L1 0. ) ; THETA1 = 90. ; 'SINON' ; THETA1 = -90. ; 'FINSI' ; 'SINON' ; THETA1 = ATG ( SITH1 / COTH1 ) ; 'SI' ( COTH1 < 0. ) ; 'SI' ( SITH1 >EG 0. ) ; THETA1 = THETA1 + 180. ; 'SINON' ; THETA1 = THETA1 - 180. ; 'FINSI' ; 'FINSI' ; 'FINSI' ; STHET0 = STHET0 + THETA1 ; 'FIN' BLOC1 ; * * * 'SI' ( (ABS (ABS STHET0 - 360. ))