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. )) <EG 1.D-4 ) ; 69 : 'RESPRO' VRAI ; 70 : 'SINON' ; 71 : 'SI' ( (ABS STHET0) <EG 1.D-4 ) ; 72 : 'RESPRO' FAUX ; 73 : 'SINON' ; 74 : 'ERREUR' 28 ; 75 : 'FINSI' ; 76 : 'FINSI' ; 77 : * 78 : 'FINPROC' ; 79 :
© Cast3M 2003 - All rights reserved.
Disclaimer