Télécharger postou.procedur

Retour à la liste

Numérotation des lignes :

  1. * POSTOU PROCEDUR LJ1 14/11/26 21:15:05 8301
  2. DEBPROC POSTOU TAB1*TABLE DIST/FLOTTANT;
  3.  
  4. **** brafis **************************
  5.  
  6. x11 = tab1.zgi.x . 1;
  7. x12 = tab1.zgi.x . 2;
  8. z11 = tab1.zgi.z . 1;
  9. z12 = tab1.zgi.z . 2;
  10. kk1 = (x12 - x11)/(z12 - z11);
  11. *
  12. x21 = tab1.zgf.x . 1;
  13. x22 = tab1.zgf.x . 2;
  14. z21 = tab1.zgf.z . 1;
  15. z22 = tab1.zgf.z . 2;
  16. kk2 = (x22 - x21)/(z22 - z21);
  17. *
  18. ** reperer les points dans la zone
  19. *
  20. i = 1;
  21. tabx = table;
  22. tabz = table;
  23. tabo = table;
  24. repeter bou1 (dime tab1.pfx);
  25. tabx.i = prog;
  26. tabz.i = prog;
  27. tabo.i = prog;
  28. logg = '>' (dime tab1.pfx.i) 0;
  29. si logg;
  30. zz = tab1.pfz.i . 1;
  31. x1 = (kk1 * (zz - z11)) + x11;
  32. x2 = (kk2 * (zz - z21)) + x21;
  33. j = 1;k = 1;
  34. repeter bou2 (dime tab1.pfx.i);
  35. xx = tab1.pfx.i . j;
  36. si tab1.droi;
  37. log1 = ('<' xx x2) et ('>' xx x1);
  38. sinon;
  39. log1 = ('>' xx x2) et ('<' xx x1);
  40. fins;
  41. si log1;
  42. tabx.i = inser tabx.i k xx;
  43. tabz.i = inser tabz.i k zz;
  44. tabo.i = inser tabo.i k (tab1.pfo.i . j);
  45. k = k + 1;
  46. fins;
  47. j = j + 1;
  48. fin bou2;
  49. fins;
  50. i = i + 1;
  51. fin bou1;
  52. *
  53. ** reperer les points avec l'ouverture maximale
  54. *
  55. i = 1;
  56. k = 0;
  57. tabxx = table;
  58. tabzz = table;
  59. tabii = table;
  60. taboo = table;
  61. repeter bou1 (dime tabx);
  62. si ('NEG' (dime tabx.i) 0);
  63. j = 1;
  64. k = k + 1;
  65. aa = maxi tabo.i;
  66. repeter bou2 (dime tabx.i);
  67. si('EGA' (aa - (extr tabo.i j)) 0.);
  68. tabxx.k = extr tabx.i j;
  69. tabzz.k = extr tabz.i j;
  70. tabii.k = i;
  71. taboo.k = aa;
  72. fins;
  73. j = j + 1;
  74. fin bou2;
  75. fins;
  76. i = i + 1;
  77. fin bou1;
  78. *
  79. ** lisser le chemin
  80. *
  81. i = 2;j = 1;
  82. lisx = prog;lisz = prog;
  83. lisi = prog;liso = prog;
  84. repeter bou1 ((dime tabxx) - 1);
  85. dd = tabxx.i - tabxx.(i - 1);
  86. *list dd;
  87. si ('<' dd 0.);
  88. *list tabxx.(i - 1);
  89. lisx = inser lisx j tabxx.(i - 1);
  90. lisz = inser lisz j tabzz.(i - 1);
  91. lisi = inser lisi j tabii.(i - 1);
  92. liso = inser liso j taboo.(i - 1);
  93. j = j + 1;
  94. fins;
  95. i = i + 1;
  96. fin bou1;
  97. lisx = inser lisx j tabxx.(i - 1);
  98. lisz = inser lisz j tabzz.(i - 1);
  99. lisi = inser lisi j tabii.(i - 1);
  100. liso = inser liso j taboo.(i - 1);
  101. *
  102. ** lisser le chemin pas-encore-lissé
  103. *
  104. i = 2;j = 1;
  105. lisxx = prog; liszz = prog;lisoo = prog; lisii = prog;
  106. repeter bou1 ((dime lisx) - 1);
  107. d = (extr lisx i) - (extr lisx (i - 1));
  108. si ('<' d 0.);
  109. lisxx = inser lisxx j (extr lisx (i - 1));
  110. liszz = inser liszz j (extr lisz (i - 1));
  111. lisii = inser lisii j (extr lisi (i - 1));
  112. lisoo = inser lisoo j (extr liso (i - 1));
  113. j = j + 1;
  114. fins;
  115. i = i + 1;
  116. fin bou1;
  117. lisxx = inser lisxx j (extr lisx (i - 1));
  118. liszz = inser liszz j (extr lisz (i - 1));
  119. lisii = inser lisii j (extr lisi (i - 1));
  120. lisoo = inser lisoo j (extr liso (i - 1));
  121. *
  122. ** lisser encore plus
  123. *
  124. i = 2;j = 1;
  125. lisxxx = prog; liszzz = prog;
  126. lisooo = prog; lisiii = prog;
  127. repeter bou1 ((dime lisxx) - 1);
  128. d = (extr lisxx i) - (extr lisxx (i - 1));
  129. si ('<' d 0.);
  130. lisxxx = inser lisxxx j (extr lisxx (i - 1));
  131. liszzz = inser liszzz j (extr liszz (i - 1));
  132. lisiii = inser lisiii j (extr lisii (i - 1));
  133. lisooo = inser lisooo j (extr lisoo (i - 1));
  134. j = j + 1;
  135. fins;
  136. i = i + 1;
  137. fin bou1;
  138. lisxxx = inser lisxxx j (extr lisxx (i - 1));
  139. liszzz = inser liszzz j (extr liszz (i - 1));
  140. lisiii = inser lisiii j (extr lisii (i - 1));
  141. lisooo = inser lisooo j (extr lisoo (i - 1));
  142. *
  143. tab1.che = table;
  144. tab1.che.x = lisxxx;
  145. tab1.che.z = liszzz;
  146. tab1.che.n = lisiii;
  147. tab1.che.o = lisooo;
  148.  
  149. **** dirfis **************************
  150.  
  151. lisx = tab1.che.x;
  152. lisz = tab1.che.z;
  153. i = 3;
  154. tabnorm = table;
  155. tabnorm.x = table;
  156. tabnorm.z = table;
  157. tabdirn = table;
  158. repeter bou1 ((dime lisx) - 2);
  159. xx = extr lisx (i - 1);
  160. zz = extr lisz (i - 1);
  161. vx1 = (extr lisx i) - (extr lisx (i - 1));
  162. vx2 = (extr lisx (i - 2)) - (extr lisx (i - 1));
  163. vz1 = (extr lisz i) - (extr lisz (i - 1));
  164. vz2 = (extr lisz (i - 2)) - (extr lisz (i - 1));
  165. vv1 = ((vx1 * vx1) + (vz1 * vz1))**(0.5);
  166. si ('EGA' vv1 0.);
  167. vv1 = 1.;
  168. fins;
  169. vx1 = vx1/vv1;
  170. vz1 = vz1/vv1;
  171. *
  172. vv2 = ((vx2 * vx2) + (vz2 * vz2))**(0.5);
  173. si ('EGA' vv2 0.);
  174. vv2 = 1.;
  175. fins;
  176. vx2 = vx2/vv2;
  177. vz2 = vz2/vv2;
  178. *
  179. vxn = vx1 + vx2;
  180. vzn = vz1 + vz2;
  181. si ('>' (abs vxn) 1.e-9);
  182. kn = vzn/vxn;
  183. sinon;
  184. vxn = (-1) * vz1;
  185. vzn = vx1;
  186. *
  187. kn = vzn/vxn;
  188. fins;
  189. vvn = ((vxn**2) + (vzn**2))**(0.5);
  190. si ('EGA' vvn 0.);
  191. vvn = 1.;
  192. fins;
  193. vxn1 = vxn/vvn;
  194. vzn1 = vzn/vvn;
  195. *
  196. kk = (1 + (kn**2))**(0.5);
  197. xn1 = xx + (dist/kk);
  198. xn2 = xx - (dist/kk);
  199. *
  200. zn1 = (kn * (xn1 - xx)) + zz;
  201. zn2 = (kn * (xn2 - xx)) + zz;
  202. *
  203. tabdirn . (i - 2) = table;
  204. tabdirn . (i - 2) . 1 = vxn1;
  205. tabdirn . (i - 2) . 2 = vzn1;
  206. *
  207. tabnorm . x . i = table;
  208. tabnorm . z . i = table;
  209. tabnorm.x . i . 1 = xn1;
  210. tabnorm.x . i . 2 = xn2;
  211. tabnorm.z . i . 1 = zn1;
  212. tabnorm.z . i . 2 = zn2;
  213. i = i + 1;
  214. fin bou1;
  215. *
  216. tab1.normm = tabnorm;
  217. tab1.dirnn = tabdirn;
  218.  
  219. **** ouvsfi **************************
  220. *
  221. tain = tab1.critt ;
  222. plan = tab1.pla;
  223. *
  224. opti elem seg2;
  225. *
  226. ** créer la ligne d'influence
  227. *
  228. ih = 3;tabcx = table;taboo = table;tabot = table;
  229. tabpl = table;tabpl.ppi = table;tabpl.ppf = table;
  230. repeter bouih (dime tab1.normm.x);
  231. xx1 = tab1.normm.x.ih . 1;
  232. xx2 = tab1.normm.x.ih . 2;
  233. zz1 = tab1.normm.z.ih . 1;
  234. zz2 = tab1.normm.z.ih . 2;
  235.  
  236. vx1 = xx2 - xx1;
  237. vz1 = zz2 - zz1;
  238. vv1 = ((vx1**2) + (vz1**2))**(0.5);
  239. si ('EGA' vv1 0.);
  240. vv1 = 1.;
  241. fins;
  242. vx1 = vx1/vv1;
  243. vz1 = vz1/vv1;
  244. *
  245. si ('EGA' plan 'ZX');
  246. yy = coor 2 tab1.poi ;
  247. p1 = xx1 yy zz1;
  248. p2 = xx2 yy zz2;
  249. fins;
  250. *
  251. si ('EGA' plan 'XY');
  252. yy = coor 3 tab1.poi;
  253. p1 = xx1 zz1 yy;
  254. p2 = xx2 zz2 yy;
  255. fins;
  256. *
  257. tabpl.ppi.(ih - 2) = p1;
  258. tabpl.ppf.(ih - 2) = p2;
  259. *
  260. l1 = droit p1 p2 dini (tain * tab1.telx) dfin (tain * tab1.telx);
  261. dep1 = chan cham tab1.deplacements.(tab1.pas) tab1.geo;
  262. dep2 = proi l1 dep1;
  263. l2 = chan poi1 l1;
  264. nl = nbel l2;
  265. *
  266. i = 2;lisx = prog; liso = prog;lisot = prog;
  267. repeter bou1 (nl - 1);
  268. poil1 = l2 poin (i - 1);
  269. depx1 = extr dep2 ux poil1;
  270. depz1 = extr dep2 uz poil1;
  271.  
  272. poil2 = l2 poin i;
  273. depx2 = extr dep2 ux poil2;
  274. depz2 = extr dep2 uz poil2;
  275.  
  276. sdepx = depx2 - depx1;
  277. sdepz = depz2 - depz1;
  278. ouvnn = (sdepx * vx1) + (sdepz * vz1);
  279. ouvnn = abs ouvnn;
  280. ouvtt = (sdepx * vz1) - (sdepz * vx1);
  281. ouvtt = abs ouvtt;
  282.  
  283. lisx = inser lisx &bou1 i;
  284. liso = inser liso &bou1 ouvnn;
  285. lisot = inser lisot &bou1 ouvtt;
  286.  
  287. i = i + 1;
  288. fin bou1;
  289.  
  290. tabcx.(ih - 2) = lisx;
  291. taboo.(ih - 2) = liso;
  292. tabot.(ih - 2) = lisot;
  293.  
  294. ih = ih + 1;
  295. fin bouih;
  296. *
  297. tab1.ouvnx = tabcx;
  298. tab1.ouvno = taboo;
  299. tab1.ouvto = tabot;
  300.  
  301. **** ouvfin ***********************
  302.  
  303. tabx = tab1.che.x;
  304. tabz = tab1.che.z;
  305. tabo = tab1.ouvno;
  306. tabot = tab1.ouvto;
  307. i = 1;lisno = prog;lisii = prog;listo = prog;
  308. repeter bou1 (dime tabo);
  309. j = 1;oo = 0.;
  310. repeter bou2 (dime tabo.i);
  311. oo = oo + (extr tabo.i j);
  312. j = j + 1;
  313. fin bou2;
  314. ot = maxi tabot.i;
  315. lisno = inser lisno &bou1 oo;
  316. listo = inser listo &bou1 ot;
  317. i = i + 1;
  318. fin bou1;
  319. *
  320. **
  321. *
  322. i = 1;lisnx = prog; lisnz = prog;
  323. repeter bou1 (dime lisno);
  324. lisnx = inser lisnx i (extr tabx i);
  325. lisnz = inser lisnz i (extr tabz i);
  326. i = i + 1;
  327. fin bou1;
  328.  
  329. tab1.fisnx = lisnx;
  330. tab1.fisnz = lisnz;
  331. tab1.fisno = lisno;
  332. tab1.fisto = listo;
  333.  
  334. FINPROC;
  335.  
  336.  

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