1 : * RESEAU PROCEDUR JC220346 12/09/12 21:15:08 7501 2 : 'DEBPROC' RESEAU TAB*'TABLE' NIND*'ENTIER' PARAM*'FLOTTANT'; 3 : ************************************************************************ 4 : * * 5 : * PROCEDURE RESEAU (APPELEE PAR LA PROCEDURE TRACTUFI) * 6 : * * 7 : * INTERPOLATION D'UN RESEAU PARAMETRE DE COURBES * 8 : * * 9 : ************************************************************************ 10 : ************************************************************************ 11 : * * 12 : * LA PROCEDURE RESEAU S'APPLIQUE A DES COURBES MONOTONES * 13 : * * 14 : * IL N'EST PAS NECESSAIRE QU'ELLES AIENT DES BORNES COMMUNES * 15 : * * 16 : * QUAND CELA EST POSSIBLE ON PROLONGE LINEAIREMENT LES LISTES * 17 : * D'ABSCISSES ET D'ORDONNEES POUR ATTEINDRE DES BORNES * 18 : * COMMUNES SANS POUR AUTANT MODIFIER LES COURBES FOURNIES * 19 : * * 20 : ************************************************************************ 21 : *----------------------------------------------------------------------- 22 : * RECEPTION DES ARGUMENTS 23 : 24 : TIN='INDEX' TAB; 25 : 26 : * ON CREE LA LISTE CONTENANT LES PARAMETRES 27 : 28 : LPAR=PROG NIND * 0.; 29 : I=0; 30 : 'REPE' BOUCLE NIND; 31 : I=I + 1; 32 : IND=TIN.I; 33 : 'REMP' LPAR I IND; 34 : 'FIN' BOUCLE; 35 : 36 : * ON ORDONNE LA LISTE CONTENANT LES PARAMETRES 37 : * ON RECHERCHE LES DEUX PARAMETRES QUI ENTOURENT PARAM ET ON DETERMINE 38 : * LA POSITION DE PARAM ENTRE CES DEUX PARAMETRES 39 : 40 : LPAR = ORDONNER LPAR; 41 : N='DIME' LPAR; 42 : T1='EXTR' LPAR 1; 43 : T2='EXTR' LPAR N; 44 : 'SI' (PARAM < T1); 45 : PAR1=T1; 46 : PAR2='EXTR' LPAR 2; 47 : 'FINSI'; 48 : 'SI' (PARAM > T2); 49 : PAR1='EXTR' LPAR (N - 1); 50 : PAR2=T2; 51 : 'FINSI'; 52 : 'SI' ('ET' (PARAM >EG T1) (PARAM <EG T2)); 53 : I=1; 54 : 'REPE' BOUCLE0 (N - 1); 55 : I=I + 1; 56 : T2='EXTR' LPAR I; 57 : 'SI' (T2 > PARAM); 58 : PAR1=T1; 59 : PAR2=T2; 60 : 'QUITTER' BOUCLE0; 61 : 'SINON'; 62 : T1=T2; 63 : 'FINSI'; 64 : 'FIN' BOUCLE0; 65 : 'FINSI'; 66 : 67 : LAMBDA=(PAR2 - PARAM) / (PAR2 - PAR1); 68 : 69 : EV1=TAB.PAR1; 70 : EV2=TAB.PAR2; 71 : LABS1='EXTR' EV1 ABSC; 72 : LORD1='EXTR' EV1 ORDO; 73 : LABS2='EXTR' EV2 ABSC; 74 : LORD2='EXTR' EV2 ORDO; 75 : L1='DIME' LABS1;M1=L1; 76 : L2='DIME' LABS2;M2=L2; 77 : *======================================================================= 78 : *= = 79 : *= ON VERIFIE QUE LES DEUX COURBES SONT MONOTONES = 80 : *= ET ON CREE LES LISTES DE TRAVAIL A MODIFIER = 81 : *= = 82 : *======================================================================= 83 : X1='EXTR' LABS1 1; 84 : Y1='EXTR' LORD1 1; 85 : X2='EXTR' LABS1 2; 86 : Y2='EXTR' LORD1 2; 87 : PI1=(Y2 - Y1) / (X2 - X1); 88 : P1=PI1; 89 : I=1; 90 : 'REPETER' BOUCLE1 (L1 - 2); 91 : I=I + 1; 92 : X1='EXTR' LABS1 I; 93 : Y1='EXTR' LORD1 I; 94 : X2='EXTR' LABS1 (I + 1); 95 : Y2='EXTR' LORD1 (I + 1); 96 : P2=(Y2 - Y1) / (X2 - X1); 97 : 'SI' ((P1 * P2) < 0.); 98 : MESS 'UNE COURBE AU MOINS NON MONOTONE'; 99 : 'QUITTER' RESEAU; 100 : 'FINSI'; 101 : P1=P2; 102 : 'FIN' BOUCLE1; 103 : PF1=P2; 104 : X1='EXTR' LABS2 1; 105 : Y1='EXTR' LORD2 1; 106 : X2='EXTR' LABS2 2; 107 : Y2='EXTR' LORD2 2; 108 : PI2=(Y2 - Y1) / (X2 - X1); 109 : P1=PI2; 110 : I=1; 111 : 'REPETER' BOUCLE2 (L2 - 2); 112 : I=I + 1; 113 : X1='EXTR' LABS2 I; 114 : Y1='EXTR' LORD2 I; 115 : X2='EXTR' LABS2 (I + 1); 116 : Y2='EXTR' LORD2 (I + 1); 117 : P2=(Y2 - Y1) / (X2 - X1); 118 : 'SI' ((P1 * P2) < 0.); 119 : MESS 'UNE COURBE AU MOINS NON MONOTONE'; 120 : 'QUITTER' RESEAU; 121 : 'FINSI'; 122 : P1=P2; 123 : 'FIN' BOUCLE2; 124 : PF2=P2; 125 : TABS1=COPI LABS1; 126 : TORD1=COPI LORD1; 127 : TABS2=COPI LABS2; 128 : TORD2=COPI LORD2; 129 : *======================================================================= 130 : *= = 131 : *= ON COMPARE LES PENTES INITIALES ET FINALES A 1 (EN VALEUR ABSOLUE) = 132 : *= = 133 : *======================================================================= 134 : *--------------------------------------------------------DEBUT DE COURBE 135 : 'SI' ('ET' ((ABS(PI1)) >EG 1.) ((ABS(PI2)) >EG 1.));IPEND=A;'FINSI'; 136 : 'SI' ('ET' ((ABS(PI1)) < 1.) ((ABS(PI2)) < 1.));IPEND=B;'FINSI'; 137 : 'SI' ('ET' ((ABS(PI1)) >EG 1.) ((ABS(PI2)) < 1.));IPEND=F;'FINSI'; 138 : 'SI' ('ET' ((ABS(PI1)) < 1.) ((ABS(PI2)) >EG 1.));IPEND=F;'FINSI'; 139 : *----------------------------------------------------------FIN DE COURBE 140 : 'SI' ('ET' ((ABS(PF1)) >EG 1.) ((ABS(PF2)) >EG 1.));IPENF=A;'FINSI'; 141 : 'SI' ('ET' ((ABS(PF1)) < 1.) ((ABS(PF2)) < 1.));IPENF=B;'FINSI'; 142 : 'SI' ('ET' ((ABS(PF1)) >EG 1.) ((ABS(PF2)) < 1.));IPENF=F;'FINSI'; 143 : 'SI' ('ET' ((ABS(PF1)) < 1.) ((ABS(PF2)) >EG 1.));IPENF=F;'FINSI'; 144 : *======================================================================= 145 : *= = 146 : *= CAS OU UNE COURBE EST CROISSANTE ET L'AUTRE DECROISSANTE = 147 : *= = 148 : *======================================================================= 149 : 'SI' ((PI1 * PI2) < 0.); 150 : XOUY=XX; 151 : *--------------------------------------------------------DEBUT DE COURBE 152 : X1='EXTR' TABS1 1; 153 : X2='EXTR' TABS2 1; 154 : 'SI' ('EGA' IPEND 'B'); 155 : 'SI' (X1 < X2); 156 : *------------------------------------------PROLONGATION DE LA COURBE N›2 157 : M2=M2 + 1; 158 : Y='EXTR' TORD2 1; 159 : Y=Y + ((X1 - X2) * PI2); 160 : LISTE=(PROG X1) ET TABS2; 161 : TABS2=COPI LISTE;DETRUIRE LISTE; 162 : LISTE=(PROG Y) ET TORD2; 163 : TORD2=COPI LISTE;DETRUIRE LISTE; 164 : 'FINSI'; 165 : 'SI' (X1 > X2); 166 : *------------------------------------------PROLONGATION DE LA COURBE N›1 167 : M1=M1 + 1; 168 : Y='EXTR' TORD1 1; 169 : Y=Y + ((X2 - X1) * PI1); 170 : LISTE=(PROG X2) ET TABS1; 171 : TABS1=COPI LISTE;DETRUIRE LISTE; 172 : LISTE=(PROG Y) ET TORD1; 173 : TORD1=COPI LISTE;DETRUIRE LISTE; 174 : 'FINSI'; 175 : 'FINSI'; 176 : 'SI' ('OU' ('EGA' IPEND 'A') ('EGA' IPEND 'F')); 177 : 'SI' (X1 < X2); 178 : *-------------------------------------------RESTRICTION DE LA COURBE N›1 179 : Y='IPOL' X2 LABS1 LORD1; 180 : LISTE1=PROG X1; 181 : Y1='EXTR' TORD1 1; 182 : LISTE2=PROG Y1; 183 : I=1; 184 : 'REPE' BOUCLE3 (M1 - 1); 185 : I=I + 1; 186 : X='EXTR' TABS1 I; 187 : 'SI' (X <EG X2); 188 : LISTE1=LISTE1 ET (PROG X); 189 : Y1='EXTR' TORD1 I; 190 : LISTE2=LISTE2 ET (PROG Y1); 191 : M1=M1 - 1; 192 : 'SINON'; 193 : 'QUITTER' BOUCLE3; 194 : 'FINSI'; 195 : 'FIN' BOUCLE3; 196 : TABS1=TABS1 SAUF LISTE1;DETRUIRE LISTE1; 197 : TORD1=TORD1 SAUF LISTE2;DETRUIRE LISTE2; 198 : LISTE=(PROG X2) ET TABS1; 199 : TABS1=COPI LISTE;DETRUIRE LISTE; 200 : LISTE=(PROG Y) ET TORD1; 201 : TORD1=COPI LISTE;DETRUIRE LISTE; 202 : 'FINSI'; 203 : 'SI' (X1 > X2); 204 : *-------------------------------------------RESTRICTION DE LA COURBE N›2 205 : Y='IPOL' X1 LABS2 LORD2; 206 : LISTE1=PROG X2; 207 : Y1='EXTR' TORD2 1; 208 : LISTE2=PROG Y1; 209 : I=1; 210 : 'REPE' BOUCLE4 (M2 - 1); 211 : I=I + 1; 212 : X='EXTR' TABS2 I; 213 : 'SI' (X <EG X1); 214 : LISTE1=LISTE1 ET (PROG X); 215 : Y1='EXTR' TORD2 I; 216 : LISTE2=LISTE2 ET (PROG Y1); 217 : M2=M2 - 1; 218 : 'SINON'; 219 : 'QUITTER' BOUCLE4; 220 : 'FINSI'; 221 : 'FIN' BOUCLE4; 222 : TABS2=TABS2 SAUF LISTE1;DETRUIRE LISTE1; 223 : TORD2=TORD2 SAUF LISTE2;DETRUIRE LISTE2; 224 : LISTE=(PROG X1) ET TABS2; 225 : TABS2=COPI LISTE;DETRUIRE LISTE; 226 : LISTE=(PROG Y) ET TORD2; 227 : TORD2=COPI LISTE;DETRUIRE LISTE; 228 : 'FINSI'; 229 : 'FINSI'; 230 : *----------------------------------------------------------FIN DE COURBE 231 : X1='EXTR' TABS1 M1; 232 : X2='EXTR' TABS2 M2; 233 : 'SI' ('EGA' IPENF 'B'); 234 : 'SI' (X1 < X2); 235 : *------------------------------------------PROLONGATION DE LA COURBE N›1 236 : Y='EXTR' TORD1 M1; 237 : Y=Y + ((X2 - X1) * PF1); 238 : M1=M1 + 1; 239 : TABS1=TABS1 ET (PROG X2); 240 : TORD1=TORD1 ET (PROG Y); 241 : 'FINSI'; 242 : 'SI' (X1 > X2); 243 : *------------------------------------------PROLONGATION DE LA COURBE N›2 244 : Y='EXTR' TORD2 M2; 245 : Y=Y + ((X1 - X2) * PF2); 246 : M2=M2 + 1; 247 : TABS2=TABS2 ET (PROG X1); 248 : TORD2=TORD2 ET (PROG Y); 249 : 'FINSI'; 250 : 'FINSI'; 251 : 'SI' ('OU' ('EGA' IPENF 'A') ('EGA' IPENF 'B')); 252 : 'SI' (X1 < X2); 253 : *-------------------------------------------RESTRICTION DE LA COURBE N›2 254 : Y1='IPOL' X1 LABS2 LORD2; 255 : I=1; 256 : X='EXTR' TABS2 1;LISTE1=PROG X; 257 : Y='EXTR' TORD2 1;LISTE2=PROG Y; 258 : 'REPE' BOUCLE5 (M2 - 1); 259 : I=I + 1; 260 : X='EXTR' TABS2 I; 261 : 'SI' (X < X1); 262 : Y='EXTR' TORD2 I; 263 : LISTE1=LISTE1 ET (PROG X); 264 : LISTE2=LISTE2 ET (PROG Y); 265 : 'SINON'; 266 : LISTE1=LISTE1 ET (PROG X1); 267 : LISTE2=LISTE2 ET (PROG Y1); 268 : M2=I; 269 : 'QUITTER' BOUCLE5; 270 : 'FINSI'; 271 : 'FIN' BOUCLE5; 272 : TABS2=COPI LISTE1;DETRUIRE LISTE1; 273 : TORD2=COPI LISTE2;DETRUIRE LISTE2; 274 : 'FINSI'; 275 : 'SI' (X1 > X2); 276 : *-------------------------------------------RESTRICTION DE LA COURBE N›1 277 : Y1='IPOL' X2 LABS1 LORD1; 278 : I=1; 279 : X='EXTR' TABS1 1;LISTE1=PROG X; 280 : Y='EXTR' TORD1 1;LISTE2=PROG Y; 281 : 'REPE' BOUCLE6 (M1 - 1); 282 : I=I + 1; 283 : X='EXTR' TABS1 I; 284 : 'SI' (X < X2); 285 : Y='EXTR' TORD1 I; 286 : LISTE1=LISTE1 ET (PROG X); 287 : LISTE2=LISTE2 ET (PROG Y); 288 : 'SINON'; 289 : LISTE1=LISTE1 ET (PROG X2); 290 : LISTE2=LISTE2 ET (PROG Y1); 291 : M1=I; 292 : 'QUITTER' BOUCLE6; 293 : 'FINSI'; 294 : 'FIN' BOUCLE6; 295 : TABS1=COPI LISTE1;DETRUIRE LISTE1; 296 : TORD1=COPI LISTE2;DETRUIRE LISTE2; 297 : 'FINSI'; 298 : 'FINSI'; 299 : 'FINSI'; 300 : *======================================================================= 301 : *= = 302 : *= COURBES SIMULTANEMENT SOIT CROISSANTES SOIT DECROISSANTES = 303 : *= = 304 : *======================================================================= 305 : *&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 306 : *& & 307 : *& PENTES INITIALES SUPERIEURES A 1 & 308 : *& PENTES FINALES SUPERIEURES A 1 & 309 : *& & 310 : *&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 311 : 'SI' ('ET' ('EGA' IPEND 'A') ('EGA' IPENF 'A')); 312 : XOUY=YY; 313 : *--------------------------------------------------------DEBUT DE COURBE 314 : Y1='EXTR' TORD1 1; 315 : Y2='EXTR' TORD2 1; 316 : 'SI' (Y1 < Y2); 317 : *------------------------------------------PROLONGATION DE LA COURBE N›2 318 : M2=M2 + 1; 319 : X='EXTR' TABS2 1; 320 : X=X + ((Y1 - Y2) / PI2); 321 : LISTE=(PROG X) ET TABS2; 322 : TABS2=COPI LISTE;DETRUIRE LISTE; 323 : LISTE=(PROG Y1) ET TORD2; 324 : TORD2=COPI LISTE;DETRUIRE LISTE; 325 : 'FINSI'; 326 : 'SI' (Y1 > Y2); 327 : *------------------------------------------PROLONGATION DE LA COURBE N›1 328 : M1=M1 + 1; 329 : X='EXTR' TABS1 1; 330 : X=X + ((Y2 - Y1) / PI1); 331 : LISTE=(PROG X) ET TABS1; 332 : TABS1=COPI LISTE;DETRUIRE LISTE; 333 : LISTE=(PROG Y2) ET TORD1; 334 : TORD1=COPI LISTE;DETRUIRE LISTE; 335 : 'FINSI'; 336 : *----------------------------------------------------------FIN DE COURBE 337 : Y1='EXTR' TORD1 M1; 338 : Y2='EXTR' TORD2 M2; 339 : 'SI' (Y1 < Y2); 340 : *------------------------------------------PROLONGATION DE LA COURBE N›1 341 : X='EXTR' TABS1 M1; 342 : X=X + ((Y2 - Y1) / PF1); 343 : M1=M1 + 1; 344 : TABS1=TABS1 ET (PROG X); 345 : TORD1=TORD1 ET (PROG Y2); 346 : 'FINSI'; 347 : 'SI' (Y1 > Y2); 348 : *------------------------------------------PROLONGATION DE LA COURBE N›2 349 : X='EXTR' TABS2 M2; 350 : X=X + ((Y1 - Y2) / PF2); 351 : M2=M2 + 1; 352 : TABS2=TABS2 ET (PROG X); 353 : TORD2=TORD2 ET (PROG Y1); 354 : 'FINSI'; 355 : 'FINSI'; 356 : *&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 357 : *& & 358 : *& PENTES INITIALES INFERIEURES A 1 & 359 : *& PENTES FINALES INFERIEURES A 1 & 360 : *& & 361 : *&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 362 : 'SI' ('ET' ('EGA' IPEND 'B') ('EGA' IPENF 'B')); 363 : XOUY=XX; 364 : *--------------------------------------------------------DEBUT DE COURBE 365 : X1='EXTR' TABS1 1; 366 : X2='EXTR' TABS2 1; 367 : 'SI' (X1 < X2); 368 : *------------------------------------------PROLONGATION DE LA COURBE N›2 369 : M2=M2 + 1; 370 : Y='EXTR' TORD2 1; 371 : Y=Y + ((X1 - X2) * PI2); 372 : LISTE=(PROG X1) ET TABS2; 373 : TABS2=COPI LISTE;DETRUIRE LISTE; 374 : LISTE=(PROG Y) ET TORD2; 375 : TORD2=COPI LISTE;DETRUIRE LISTE; 376 : 'FINSI'; 377 : 'SI' (X1 > X2); 378 : *------------------------------------------PROLONGATION DE LA COURBE N›1 379 : M1=M1 + 1; 380 : Y='EXTR' TORD1 1; 381 : Y=Y + ((X2 - X1) * PI1); 382 : LISTE=(PROG X2) ET TABS1; 383 : TABS1=COPI LISTE;DETRUIRE LISTE; 384 : LISTE=(PROG Y) ET TORD1; 385 : TORD1=COPI LISTE;DETRUIRE LISTE; 386 : 'FINSI'; 387 : *----------------------------------------------------------FIN DE COURBE 388 : X1='EXTR' TABS1 M1; 389 : X2='EXTR' TABS2 M2; 390 : 'SI' (X1 < X2); 391 : *------------------------------------------PROLONGATION DE LA COURBE N›1 392 : Y='EXTR' TORD1 M1; 393 : Y=Y + ((X2 - X1) * PF1); 394 : M1=M1 + 1; 395 : TABS1=TABS1 ET (PROG X2); 396 : TORD1=TORD1 ET (PROG Y); 397 : 'FINSI'; 398 : 'SI' (X1 > X2); 399 : *------------------------------------------PROLONGATION DE LA COURBE N›2 400 : Y='EXTR' TORD2 M2; 401 : Y=Y + ((X1 - X2) * PF2); 402 : M2=M2 + 1; 403 : TABS2=TABS2 ET (PROG X1); 404 : TORD2=TORD2 ET (PROG Y); 405 : 'FINSI'; 406 : 'FINSI'; 407 : *&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 408 : *& & 409 : *& PENTES INITIALES DE CHAQUES COTES DE 1 & 410 : *& PENTES FINALES DE CHAQUES COTES DE 1 & 411 : *& & 412 : *&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 413 : 'SI' ('ET' ('EGA' IPEND 'F') ('EGA' IPENF 'F')); 414 : XOUY=XX; 415 : *--------------------------------------------------------DEBUT DE COURBE 416 : X1='EXTR' TABS1 1; 417 : X2='EXTR' TABS2 1; 418 : 'SI' (X1 < X2); 419 : *-------------------------------------------RESTRICTION DE LA COURBE N›1 420 : Y='IPOL' X2 LABS1 LORD1; 421 : LISTE1=PROG X1; 422 : Y1='EXTR' TORD1 1; 423 : LISTE2=PROG Y1; 424 : I=1; 425 : 'REPE' BOUCLE7 (M1 - 1); 426 : I=I + 1; 427 : X='EXTR' TABS1 I; 428 : 'SI' (X <EG X2); 429 : LISTE1=LISTE1 ET (PROG X); 430 : Y1='EXTR' TORD1 I; 431 : LISTE2=LISTE2 ET (PROG Y1); 432 : M1=M1 - 1; 433 : 'SINON'; 434 : 'QUITTER' BOUCLE7; 435 : 'FINSI'; 436 : 'FIN' BOUCLE7; 437 : TABS1=TABS1 SAUF LISTE1;DETRUIRE LISTE1; 438 : TORD1=TORD1 SAUF LISTE2;DETRUIRE LISTE2; 439 : LISTE=(PROG X2) ET TABS1; 440 : TABS1=COPI LISTE;DETRUIRE LISTE; 441 : LISTE=(PROG Y) ET TORD1; 442 : TORD1=COPI LISTE;DETRUIRE LISTE; 443 : 'FINSI'; 444 : 'SI' (X1 > X2); 445 : *-------------------------------------------RESTRICTION DE LA COURBE N›2 446 : Y='IPOL' X1 LABS1 LORD1; 447 : LISTE1=PROG X2; 448 : Y1='EXTR' TORD2 1; 449 : LISTE2=PROG Y1; 450 : I=1; 451 : 'REPE' BOUCLE8 (M2 - 1); 452 : I=I + 1; 453 : X='EXTR' TABS2 I; 454 : 'SI' (X <EG X1); 455 : LISTE1=LISTE1 ET (PROG X); 456 : Y1='EXTR' TORD2 I; 457 : LISTE2=LISTE2 ET (PROG Y1); 458 : M2=M2 - 1; 459 : 'SINON'; 460 : 'QUITTER' BOUCLE8; 461 : 'FINSI'; 462 : 'FIN' BOUCLE8; 463 : TABS2=TABS2 SAUF LISTE1;DETRUIRE LISTE1; 464 : TORD2=TORD2 SAUF LISTE2;DETRUIRE LISTE2; 465 : LISTE=(PROG X1) ET TABS2; 466 : TABS2=COPI LISTE;DETRUIRE LISTE; 467 : LISTE=(PROG Y) ET TORD2; 468 : TORD2=COPI LISTE;DETRUIRE LISTE; 469 : 'FINSI'; 470 : *----------------------------------------------------------FIN DE COURBE 471 : X1='EXTR' TABS1 M1; 472 : X2='EXTR' TABS2 M2; 473 : 'SI' (X1 < X2); 474 : *-------------------------------------------RESTRICTION DE LA COURBE N›2 475 : Y1='IPOL' X1 LABS2 LORD2; 476 : I=1; 477 : X='EXTR' TABS2 1;LISTE1=PROG X; 478 : Y='EXTR' TORD2 1;LISTE2=PROG Y; 479 : 'REPE' BOUCLE9 (M2 - 1); 480 : I=I + 1; 481 : X='EXTR' TABS2 I; 482 : 'SI' (X < X1); 483 : Y='EXTR' TORD2 I; 484 : LISTE1=LISTE1 ET (PROG X); 485 : LISTE2=LISTE2 ET (PROG Y); 486 : 'SINON'; 487 : LISTE1=LISTE1 ET (PROG X1); 488 : LISTE2=LISTE2 ET (PROG Y1); 489 : M2=I; 490 : 'QUITTER' BOUCLE9; 491 : 'FINSI'; 492 : 'FIN' BOUCLE9; 493 : TABS2=COPI LISTE1;DETRUIRE LISTE1; 494 : TORD2=COPI LISTE2;DETRUIRE LISTE2; 495 : 'FINSI'; 496 : 'SI' (X1 > X2); 497 : *-------------------------------------------RESTRICTION DE LA COURBE N›1 498 : Y1='IPOL' X2 LABS1 LORD1; 499 : I=1; 500 : X='EXTR' TABS1 1;LISTE1=PROG X; 501 : Y='EXTR' TORD1 1;LISTE2=PROG Y; 502 : 'REPE' BOUCLE10 (M1 - 1); 503 : I=I + 1; 504 : X='EXTR' TABS1 I; 505 : 'SI' (X < X2); 506 : Y='EXTR' TORD1 I; 507 : LISTE1=LISTE1 ET (PROG X); 508 : LISTE2=LISTE2 ET (PROG Y); 509 : 'SINON'; 510 : LISTE1=LISTE1 ET (PROG X2); 511 : LISTE2=LISTE2 ET (PROG Y1); 512 : M1=I; 513 : 'QUITTER' BOUCLE10; 514 : 'FINSI'; 515 : 'FIN' BOUCLE10; 516 : TABS1=COPI LISTE1;DETRUIRE LISTE1; 517 : TORD1=COPI LISTE2;DETRUIRE LISTE2; 518 : 'FINSI'; 519 : 'FINSI'; 520 : *&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 521 : *& & 522 : *& PENTES INITIALES SUPERIEURES A 1 & 523 : *& PENTES FINALES DE CHAQUES COTES DE 1 & 524 : *& & 525 : *&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 526 : 'SI' ('ET' ('EGA' IPEND 'A') ('EGA' IPENF 'F')); 527 : XOUY=YY; 528 : *--------------------------------------------------------DEBUT DE COURBE 529 : Y1='EXTR' TORD1 1; 530 : Y2='EXTR' TORD2 1; 531 : 'SI' (Y1 < Y2); 532 : *------------------------------------------PROLONGATION DE LA COURBE N›2 533 : M2= M2 + 1; 534 : X='EXTR' TABS2 1; 535 : X=X + ((Y1 - Y2) / PI2); 536 : LISTE=(PROG X) ET TABS2; 537 : TABS2= COPI LISTE;DETRUIRE LISTE; 538 : LISTE=(PROG Y1) ET TORD2; 539 : TORD2= COPI LISTE;DETRUIRE LISTE; 540 : 'FINSI'; 541 : 'SI' (Y1 > Y2); 542 : *------------------------------------------PROLONGATION DE LA COURBE N›1 543 : M1= M1 + 1; 544 : X='EXTR' TABS1 1; 545 : X=X + ((Y2 - Y1) / PI1); 546 : LISTE=(PROG X) ET TABS1; 547 : TABS1= COPI LISTE;DETRUIRE LISTE; 548 : LISTE=(PROG Y2) ET TORD1; 549 : TORD1= COPI LISTE;DETRUIRE LISTE; 550 : 'FINSI'; 551 : *----------------------------------------------------------FIN DE COURBE 552 : Y1='EXTR' TORD1 M1; 553 : Y2='EXTR' TORD2 M2; 554 : 'SI' (Y1 < Y2); 555 : *-------------------------------------------RESTRICTION DE LA COURBE N›2 556 : X1='IPOL' Y1 LORD2 LABS2; 557 : I=1; 558 : X='EXTR' TABS2 1;LISTE1=PROG X; 559 : Y='EXTR' TORD2 1;LISTE2=PROG Y; 560 : 'REPE' BOUCLE11 (M2 - 1); 561 : I=I + 1; 562 : Y='EXTR' TORD2 I; 563 : 'SI' (Y < Y1); 564 : X='EXTR' TABS2 I; 565 : LISTE1=LISTE1 ET (PROG X); 566 : LISTE2=LISTE2 ET (PROG Y); 567 : 'SINON'; 568 : LISTE1=LISTE1 ET (PROG X1); 569 : LISTE2=LISTE2 ET (PROG Y1); 570 : M2=I; 571 : 'QUITTER' BOUCLE11; 572 : 'FINSI'; 573 : 'FIN' BOUCLE11; 574 : TABS2=COPI LISTE1;DETRUIRE LISTE1; 575 : TORD2=COPI LISTE2;DETRUIRE LISTE2; 576 : 'FINSI'; 577 : 'SI' (Y1 > Y2); 578 : *-------------------------------------------RESTRICTION DE LA COURBE N›1 579 : X1='IPOL' Y2 LORD1 LABS1; 580 : I=1; 581 : X='EXTR' TABS1 1;LISTE1=PROG X; 582 : Y='EXTR' TORD1 1;LISTE2=PROG Y; 583 : 'REPE' BOUCLE12 (M1 - 1); 584 : I=I + 1; 585 : Y='EXTR' TORD1 I; 586 : 'SI' (Y < Y2); 587 : X='EXTR' TABS1 I; 588 : LISTE1=LISTE1 ET (PROG X); 589 : LISTE2=LISTE2 ET (PROG Y); 590 : 'SINON'; 591 : LISTE1=LISTE1 ET (PROG X1); 592 : LISTE2=LISTE2 ET (PROG Y2); 593 : M1=I; 594 : 'QUITTER' BOUCLE12; 595 : 'FINSI'; 596 : 'FIN' BOUCLE12; 597 : TABS1=COPI LISTE1;DETRUIRE LISTE1; 598 : TORD1=COPI LISTE2;DETRUIRE LISTE2; 599 : 'FINSI'; 600 : 'FINSI'; 601 : *&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 602 : *& & 603 : *& PENTES INITIALES INFERIEURES A 1 & 604 : *& PENTES FINALES DE CHAQUES COTES DE 1 & 605 : *& & 606 : *&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 607 : 'SI' ('ET' ('EGA' IPEND 'B') ('EGA' IPENF 'F')); 608 : XOUY=XX; 609 : *--------------------------------------------------------DEBUT DE COURBE 610 : X1='EXTR' TABS1 1; 611 : X2='EXTR' TABS2 1; 612 : 'SI' (X1 < X2); 613 : *------------------------------------------PROLONGATION DE LA COURBE N›2 614 : M2= M2 + 1; 615 : Y='EXTR' TORD2 1; 616 : Y=Y + ((X1 - X2) * PI2); 617 : LISTE=(PROG X1) ET TABS2; 618 : TABS2= COPI LISTE;DETRUIRE LISTE; 619 : LISTE=(PROG Y) ET TORD2; 620 : TORD2= COPI LISTE;DETRUIRE LISTE; 621 : 'FINSI'; 622 : 'SI' (X1 > X2); 623 : *------------------------------------------PROLONGATION DE LA COURBE N›1 624 : M1= M1 + 1; 625 : Y='EXTR' TORD1 1; 626 : Y=Y + ((X2 - X1) * PI1); 627 : LISTE=(PROG X2) ET TABS1; 628 : TABS1= COPI LISTE;DETRUIRE LISTE; 629 : LISTE=(PROG Y) ET TORD1; 630 : TORD1= COPI LISTE;DETRUIRE LISTE; 631 : 'FINSI'; 632 : *----------------------------------------------------------FIN DE COURBE 633 : X1='EXTR' TABS1 M1; 634 : X2='EXTR' TABS2 M2; 635 : 'SI' (X1 < X2); 636 : *-------------------------------------------RESTRICTION DE LA COURBE N›1 637 : Y1='IPOL' X1 LABS2 LORD2; 638 : I=1; 639 : X='EXTR' TABS2 1;LISTE1=PROG X; 640 : Y='EXTR' TORD2 1;LISTE2=PROG Y; 641 : 'REPE' BOUCLE13 (M2 - 1); 642 : I=I + 1; 643 : X='EXTR' TABS2 I; 644 : 'SI' (X < X1); 645 : Y='EXTR' TORD2 I; 646 : LISTE1=LISTE1 ET (PROG X); 647 : LISTE2=LISTE2 ET (PROG Y); 648 : 'SINON'; 649 : LISTE1=LISTE1 ET (PROG X1); 650 : LISTE2=LISTE2 ET (PROG Y1); 651 : M2=I; 652 : 'QUITTER' BOUCLE13; 653 : 'FINSI'; 654 : 'FIN' BOUCLE13; 655 : TABS2=COPI LISTE1;DETRUIRE LISTE1; 656 : TORD2=COPI LISTE2;DETRUIRE LISTE2; 657 : 'FINSI'; 658 : 'SI' (X1 > X2); 659 : *-------------------------------------------RESTRICTION DE LA COURBE N›1 660 : Y1='IPOL' X2 LABS1 LORD1; 661 : I=1; 662 : X='EXTR' TABS1 1;LISTE1=PROG X; 663 : Y='EXTR' TORD1 1;LISTE2=PROG Y; 664 : 'REPE' BOUCLE14 (M1 - 1); 665 : I=I + 1; 666 : X='EXTR' TABS1 I; 667 : 'SI' (X < X2); 668 : Y='EXTR' TORD1 I; 669 : LISTE1=LISTE1 ET (PROG X); 670 : LISTE2=LISTE2 ET (PROG Y); 671 : 'SINON'; 672 : LISTE1=LISTE1 ET (PROG X2); 673 : LISTE2=LISTE2 ET (PROG Y1); 674 : M1=I; 675 : 'QUITTER' BOUCLE14; 676 : 'FINSI'; 677 : 'FIN' BOUCLE14; 678 : TABS1=COPI LISTE1;DETRUIRE LISTE1; 679 : TORD1=COPI LISTE2;DETRUIRE LISTE2; 680 : 'FINSI'; 681 : 'FINSI'; 682 : *&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 683 : *& & 684 : *& PENTES INITIALES DE CHAQUES COTES DE 1 & 685 : *& PENTES FINALES SUPERIEURES A 1 & 686 : *& & 687 : *&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 688 : 'SI' ('ET' ('EGA' IPEND 'F') ('EGA' IPENF 'A')); 689 : XOUY=YY; 690 : *--------------------------------------------------------DEBUT DE COURBE 691 : Y1='EXTR' TORD1 1; 692 : Y2='EXTR' TORD2 1; 693 : 'SI' (Y1 < Y2); 694 : *-------------------------------------------RESTRICTION DE LA COURBE N›1 695 : X='IPOL' Y2 LORD1 LABS1; 696 : X1='EXTR' TABS1 1; 697 : LISTE1=PROG X1; 698 : LISTE2=PROG Y1; 699 : I=1; 700 : 'REPE' BOUCLE15 (M1 - 1); 701 : I=I + 1; 702 : Y='EXTR' TORD1 I; 703 : 'SI' (Y <EG Y2); 704 : X1='EXTR' TABS1 I; 705 : LISTE1=LISTE1 ET (PROG X1); 706 : LISTE2=LISTE2 ET (PROG Y); 707 : M1=M1 - 1; 708 : 'SINON'; 709 : 'QUITTER' BOUCLE15; 710 : 'FINSI'; 711 : 'FIN' BOUCLE15; 712 : TABS1=TABS1 SAUF LISTE1;DETRUIRE LISTE1; 713 : TORD1=TORD1 SAUF LISTE2;DETRUIRE LISTE2; 714 : LISTE=(PROG X) ET TABS1; 715 : TABS1=COPI LISTE;DETRUIRE LISTE; 716 : LISTE=(PROG Y2) ET TORD1; 717 : TORD1=COPI LISTE;DETRUIRE LISTE; 718 : 'FINSI'; 719 : 'SI' (Y1 > Y2); 720 : *-------------------------------------------RESTRICTION DE LA COURBE N›2 721 : X='IPOL' Y1 LORD2 LABS2; 722 : X1='EXTR' TABS2 1; 723 : LISTE1=PROG X1; 724 : LISTE2=PROG Y2; 725 : I=1; 726 : 'REPE' BOUCLE16 (M2 - 1); 727 : I=I + 1; 728 : Y='EXTR' TORD2 I; 729 : 'SI' (Y <EG Y1); 730 : X1='EXTR' TABS2 I; 731 : LISTE1=LISTE1 ET (PROG X1); 732 : LISTE2=LISTE2 ET (PROG Y); 733 : M2=M2 - 1; 734 : 'SINON'; 735 : 'QUITTER' BOUCLE16; 736 : 'FINSI'; 737 : 'FIN' BOUCLE16; 738 : TABS2=TABS2 SAUF LISTE1;DETRUIRE LISTE1; 739 : TORD2=TORD2 SAUF LISTE2;DETRUIRE LISTE2; 740 : LISTE=(PROG X) ET TABS2; 741 : TABS2=COPI LISTE;DETRUIRE LISTE; 742 : LISTE=(PROG Y1) ET TORD2; 743 : TORD2=COPI LISTE;DETRUIRE LISTE; 744 : 'FINSI'; 745 : *----------------------------------------------------------FIN DE COURBE 746 : Y1='EXTR' TORD1 M1; 747 : Y2='EXTR' TORD2 M2; 748 : 'SI' (Y1 < Y2); 749 : *------------------------------------------PROLONGATION DE LA COURBE N›1 750 : X='EXTR' TABS1 M1; 751 : X=X + ((Y2 - Y1) / PF1); 752 : M1=M1 + 1; 753 : TABS1=TABS1 ET (PROG X); 754 : TORD1=TORD1 ET (PROG Y2); 755 : 'FINSI'; 756 : 'SI' (Y1 > Y2); 757 : *------------------------------------------PROLONGATION DE LA COURBE N›2 758 : X='EXTR' TABS2 M2; 759 : X=X + ((Y1 - Y2) / PF2); 760 : M2=M2 + 1; 761 : TABS2=TABS2 ET (PROG X); 762 : TORD2=TORD2 ET (PROG Y1); 763 : 'FINSI'; 764 : 'FINSI'; 765 : *&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 766 : *& & 767 : *& PENTES INITIALES DE CHAQUES COTES DE 1 & 768 : *& PENTES FINALES INFERIEURES A 1 & 769 : *& & 770 : *&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 771 : 'SI' ('ET' ('EGA' IPEND 'F') ('EGA' IPENF 'B')); 772 : XOUY=XX; 773 : *--------------------------------------------------------DEBUT DE COURBE 774 : X1='EXTR' TABS1 1; 775 : X2='EXTR' TABS2 1; 776 : 'SI' (X1 < X2); 777 : *-------------------------------------------RESTRICTION DE LA COURBE N›1 778 : Y='IPOL' X2 LABS1 LORD1; 779 : LISTE1=PROG X1; 780 : Y1='EXTR' TORD1 1; 781 : LISTE2=PROG Y1; 782 : I=1; 783 : 'REPE' BOUCLE17 (M1 - 1); 784 : I=I + 1; 785 : X='EXTR' TABS1 I; 786 : 'SI' (X <EG X2); 787 : LISTE1=LISTE1 ET (PROG X); 788 : Y1='EXTR' TORD1 I; 789 : LISTE2=LISTE2 ET (PROG Y1); 790 : M1=M1 - 1; 791 : 'SINON'; 792 : 'QUITTER' BOUCLE17; 793 : 'FINSI'; 794 : 'FIN' BOUCLE17; 795 : TABS1=TABS1 SAUF LISTE1;DETRUIRE LISTE1; 796 : TORD1=TORD1 SAUF LISTE2;DETRUIRE LISTE2; 797 : LISTE=(PROG X2) ET TABS1; 798 : TABS1=COPI LISTE;DETRUIRE LISTE; 799 : LISTE=(PROG Y) ET TORD1; 800 : TORD1=COPI LISTE;DETRUIRE LISTE; 801 : 'FINSI'; 802 : 'SI' (X1 > X2); 803 : *-------------------------------------------RESTRICTION DE LA COURBE N›2 804 : Y='IPOL' X1 LABS1 LORD1; 805 : LISTE1=PROG X2; 806 : Y1='EXTR' TORD2 1; 807 : LISTE2=PROG Y1; 808 : I=1; 809 : 'REPE' BOUCLE18 (M2 - 1); 810 : I=I + 1; 811 : X='EXTR' TABS2 I; 812 : 'SI' (X <EG X1); 813 : LISTE1=LISTE1 ET (PROG X); 814 : Y1='EXTR' TORD2 I; 815 : LISTE2=LISTE2 ET (PROG Y1); 816 : M2=M2 - 1; 817 : 'SINON'; 818 : 'QUITTER' BOUCLE18; 819 : 'FINSI'; 820 : 'FIN' BOUCLE18; 821 : TABS2=TABS2 SAUF LISTE1;DETRUIRE LISTE1; 822 : TORD2=TORD2 SAUF LISTE2;DETRUIRE LISTE2; 823 : LISTE=(PROG X1) ET TABS2; 824 : TABS2=COPI LISTE;DETRUIRE LISTE; 825 : LISTE=(PROG Y) ET TORD2; 826 : TORD2=COPI LISTE;DETRUIRE LISTE; 827 : 'FINSI'; 828 : *----------------------------------------------------------FIN DE COURBE 829 : X1='EXTR' TABS1 M1; 830 : X2='EXTR' TABS2 M2; 831 : 'SI' (X1 < X2); 832 : *------------------------------------------PROLONGATION DE LA COURBE N›1 833 : Y='EXTR' TORD1 M1; 834 : Y=Y + ((X2 - X1) * PF1); 835 : M1=M1 + 1; 836 : TABS1=TABS1 ET (PROG X2); 837 : TORD1=TORD1 ET (PROG Y); 838 : 'FINSI'; 839 : 'SI' (X1 > X2); 840 : *------------------------------------------PROLONGATION DE LA COURBE N›2 841 : Y='EXTR' TORD2 M2; 842 : Y=Y + ((X1 - X2) * PF2); 843 : M2=M2 + 1; 844 : TABS2=TABS2 ET (PROG X1); 845 : TORD2=TORD2 ET (PROG Y); 846 : 'FINSI'; 847 : 'FINSI'; 848 : *&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 849 : *& & 850 : *& PENTES INITIALES SUPERIEURES A 1 & 851 : *& PENTES FINALES INFERIEURES A 1 & 852 : *& & 853 : *&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 854 : 'SI' ('ET' ('EGA' IPEND 'A') ('EGA' IPENF 'B')); 855 : XOUY=YX; 856 : *--------------------------------------------------------DEBUT DE COURBE 857 : X1='EXTR' TABS1 1; 858 : X2='EXTR' TABS2 1; 859 : 'SI' (X1 < X2); 860 : *------------------------------------------PROLONGATION DE LA COURBE N›2 861 : M2= M2 + 1; 862 : X='EXTR' TABS2 1; 863 : Y=Y + ((X1 - X2) * PI2); 864 : LISTE=(PROG X1) ET TABS2; 865 : TABS2= COPI LISTE;DETRUIRE LISTE; 866 : LISTE=(PROG Y) ET TORD2; 867 : TORD2= COPI LISTE;DETRUIRE LISTE; 868 : 'FINSI'; 869 : 'SI' (X1 > X2); 870 : *------------------------------------------PROLONGATION DE LA COURBE N›1 871 : M1= M1 + 1; 872 : Y='EXTR' TABS1 1; 873 : Y=Y + ((X2 - X1) * PI1); 874 : LISTE=(PROG X2) ET TABS1; 875 : TABS1= COPI LISTE;DETRUIRE LISTE; 876 : LISTE=(PROG Y) ET TORD1; 877 : TORD1= COPI LISTE;DETRUIRE LISTE; 878 : 'FINSI'; 879 : *----------------------------------------------------------FIN DE COURBE 880 : X1='EXTR' TABS1 M1; 881 : X2='EXTR' TABS2 M2; 882 : 'SI' (X1 < X2); 883 : *------------------------------------------PROLONGATION DE LA COURBE N›1 884 : Y='EXTR' TORD1 M1; 885 : Y=Y + ((X2 - X1) * PF1); 886 : M1=M1 + 1; 887 : TABS1=TABS1 ET (PROG X2); 888 : TORD1=TORD1 ET (PROG Y); 889 : 'FINSI'; 890 : 'SI' (X1 > X2); 891 : *------------------------------------------PROLONGATION DE LA COURBE N›2 892 : Y='EXTR' TORD2 M2; 893 : Y=Y + ((X1 - X2) * PF2); 894 : M2=M2 + 1; 895 : TABS2=TABS2 ET (PROG X1); 896 : TORD2=TORD2 ET (PROG Y); 897 : 'FINSI'; 898 : 'FINSI'; 899 : *&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 900 : *& & 901 : *& PENTES INITIALES INFERIEURES A 1 & 902 : *& PENTES FINALES SUPERIEURES A 1 & 903 : *& & 904 : *&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 905 : 'SI' ('ET' ('EGA' IPEND 'B') ('EGA' IPENF 'A')); 906 : XOUY=XY; 907 : *--------------------------------------------------------DEBUT DE COURBE 908 : X1='EXTR' TABS1 1; 909 : X2='EXTR' TABS2 1; 910 : 'SI' (X1 < X2); 911 : *------------------------------------------PROLONGATION DE LA COURBE N›2 912 : M2= M2 + 1; 913 : X='EXTR' TABS2 1; 914 : Y=Y + ((X1 - X2) * PI2); 915 : LISTE=(PROG X1) ET TABS2; 916 : TABS2= COPI LISTE;DETRUIRE LISTE; 917 : LISTE=(PROG Y) ET TORD2; 918 : TORD2= COPI LISTE;DETRUIRE LISTE; 919 : 'FINSI'; 920 : 'SI' (X1 > X2); 921 : *------------------------------------------PROLONGATION DE LA COURBE N›1 922 : M1= M1 + 1; 923 : Y='EXTR' TABS1 1; 924 : Y=Y + ((X2 - X1) * PI1); 925 : LISTE=(PROG X2) ET TABS1; 926 : TABS1= COPI LISTE;DETRUIRE LISTE; 927 : LISTE=(PROG Y) ET TORD1; 928 : TORD1= COPI LISTE;DETRUIRE LISTE; 929 : 'FINSI'; 930 : *----------------------------------------------------------FIN DE COURBE 931 : Y1='EXTR' TORD1 M1; 932 : Y2='EXTR' TORD2 M2; 933 : 'SI' (Y1 < Y2); 934 : *------------------------------------------PROLONGATION DE LA COURBE N›1 935 : X='EXTR' TABS1 M1; 936 : X=X + ((Y2 - Y1) / PF1); 937 : M1=M1 + 1; 938 : TABS1=TABS1 ET (PROG X); 939 : TORD1=TORD1 ET (PROG Y2); 940 : 'FINSI'; 941 : 'SI' (Y1 > Y2); 942 : *------------------------------------------PROLONGATION DE LA COURBE N›2 943 : X='EXTR' TABS2 M2; 944 : X=X + ((Y1 - Y2) / PF2); 945 : M2=M2 + 1; 946 : TABS2=TABS2 ET (PROG X); 947 : TORD2=TORD2 ET (PROG Y1); 948 : 'FINSI'; 949 : 'FINSI'; 950 : *======================================================================= 951 : *= = 952 : *= ELABORATION DE LA COURBE RELATIVE A PARAM = 953 : *= = 954 : *======================================================================= 955 : *----------------------------------------------------------------------- 956 : *- COUPURE DANS LA COURBE : INTERPOLATION D'ABORD EN Y, PUIS EN X - 957 : *----------------------------------------------------------------------- 958 : 'SI' ('EGA' XOUY 'YX'); 959 : M=M1 / 2; 960 : LABS=PROG M1 * 0.; 961 : LORD=PROG M1 * 0.; 962 : I=0; 963 : 'REPE' BOUCLE19 M; 964 : I=I + 1; 965 : Y='EXTR' TORD1 I; 966 : X1='EXTR' TABS1 I; 967 : MAX='EXTR' TORD2 M2; 968 : 'SI' (('VALE' Y) 'EGA' MAX); 969 : X2='EXTR' TABS2 M2; 970 : 'SINON'; 971 : X2='IPOL' Y TORD2 TABS2; 972 : 'FINSI'; 973 : X=(LAMBDA * X1) + ((1. - LAMBDA) * X2); 974 : 'REMP' LABS I X; 975 : 'REMP' LORD I Y; 976 : 'FIN' BOUCLE19; 977 : 'REPE' BOUCLE20 (M1 - M); 978 : I=I + 1; 979 : X='EXTR' TABS1 I; 980 : Y1='EXTR' TORD1 I; 981 : MAX='EXTR' TABS2 M2; 982 : 'SI' (('VALE' X) 'EGA' MAX); 983 : Y2='EXTR' TORD2 M2; 984 : 'SINON'; 985 : Y2='IPOL' X TABS2 TORD2; 986 : 'FINSI'; 987 : Y=(LAMBDA * Y1) + ((1. - LAMBDA) * Y2); 988 : 'REMP' LABS I X; 989 : 'REMP' LORD I Y; 990 : 'FIN' BOUCLE20; 991 : 'FINSI'; 992 : *----------------------------------------------------------------------- 993 : *- COUPURE DANS LA COURBE : INTERPOLATION D'ABORD EN X, PUIS EN Y - 994 : *----------------------------------------------------------------------- 995 : 'SI' ('EGA' XOUY 'XY'); 996 : M=M1 / 2; 997 : LABS=PROG M1 * 0.; 998 : LORD=PROG M1 * 0.; 999 : I=0; 1000 : 'REPE' BOUCLE21 M; 1001 : I=I + 1; 1002 : X='EXTR' TABS1 I; 1003 : Y1='EXTR' TORD1 I; 1004 : MAX='EXTR' TABS2 M2; 1005 : 'SI' (('VALE' X) 'EGA' MAX); 1006 : Y2='EXTR' TORD2 M2; 1007 : 'SINON'; 1008 : Y2='IPOL' X TABS2 TORD2; 1009 : 'FINSI'; 1010 : Y=(LAMBDA * Y1) + ((1. - LAMBDA) * Y2); 1011 : 'REMP' LABS I X; 1012 : 'REMP' LORD I Y; 1013 : 'FIN' BOUCLE21; 1014 : 'REPE' BOUCLE22 (M1 - M); 1015 : I=I + 1; 1016 : Y='EXTR' TORD1 I; 1017 : X1='EXTR' TABS1 I; 1018 : MAX='EXTR' TORD2 M2; 1019 : 'SI' (('VALE' Y) 'EGA' MAX); 1020 : X2='EXTR' TABS2 M2; 1021 : 'SINON'; 1022 : X2='IPOL' Y TORD2 TABS2; 1023 : 'FINSI'; 1024 : X=(LAMBDA * X1) + ((1. - LAMBDA) * X2); 1025 : 'REMP' LABS I X; 1026 : 'REMP' LORD I Y; 1027 : 'FIN' BOUCLE22; 1028 : 'FINSI'; 1029 : *----------------------------------------------------------------------- 1030 : *- CAS D'UNE INTERPOLATION SANS COUPURE EN X - 1031 : *----------------------------------------------------------------------- 1032 : 'SI' ('EGA' XOUY 'XX'); 1033 : LABS=COPI TABS1; 1034 : LORD=PROG M1 * 0.; 1035 : I=0; 1036 : 'REPE' BOUCLE23 M1; 1037 : I=I + 1; 1038 : X='EXTR' LABS I; 1039 : Y1='EXTR' TORD1 I; 1040 : MAX='EXTR' TABS2 M2; 1041 : 'SI' (('VALE' X) 'EGA' MAX); 1042 : Y2='EXTR' TORD2 M2; 1043 : 'SINON'; 1044 : Y2='IPOL' X TABS2 TORD2; 1045 : 'FINSI'; 1046 : Y=(LAMBDA * Y1) + ((1. - LAMBDA) * Y2); 1047 : 'REMP' LORD I Y; 1048 : 'FIN' BOUCLE23; 1049 : 'FINSI'; 1050 : *----------------------------------------------------------------------- 1051 : *- CAS D'UNE INTERPOLATION SANS COUPURE EN Y - 1052 : *----------------------------------------------------------------------- 1053 : 'SI' ('EGA' XOUY 'YY'); 1054 : LABS=PROG M1 * 0.; 1055 : LORD=COPI TORD1; 1056 : I=0; 1057 : 'REPE' BOUCLE24 M1; 1058 : I=I + 1; 1059 : Y='EXTR' LORD I; 1060 : X1='EXTR' TABS1 I; 1061 : MAX='EXTR' TORD2 M2; 1062 : 'SI' (('VALE' Y) 'EGA' MAX); 1063 : X2='EXTR' TABS2 M2; 1064 : 'SINON'; 1065 : X2='IPOL' Y TORD2 TABS2; 1066 : 'FINSI'; 1067 : X=(LAMBDA * X1) + ((1. - LAMBDA) * X2); 1068 : 'REMP' LABS I X; 1069 : 'FIN' BOUCLE24; 1070 : 'FINSI'; 1071 : *----------------------------------------------------------------------- 1072 : *- FIN DE LA PROCEDURE - 1073 : *----------------------------------------------------------------------- 1074 : DETRUIRE TABS1; 1075 : DETRUIRE TORD1; 1076 : DETRUIRE TABS2; 1077 : DETRUIRE TORD2; 1078 : * 1079 : EVN=EVOL MANU LABS LORD; 1080 : * 1081 : 'FINPROC' EVN; 1082 :
© Cast3M 2003 - All rights reserved.
Disclaimer