Télécharger reseau.procedur

Retour à la liste

Numérotation des lignes :

  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 &lt;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 &lt;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 &lt;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 &lt;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 &lt;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 &lt;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 &lt;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 &lt;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 &lt;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.  
  1083.  

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