Télécharger orbite.procedur

Retour à la liste

Numérotation des lignes :

  1. * ORBITE PROCEDUR BP208322 16/09/02 21:15:01 9054
  2. *=======================================================
  3. *
  4. * ORBITE
  5. * VISUalisation animée de la trajectoire d'un point dans un plan
  6. * definie par une evolution parametrique : y(t) - x(t)
  7. * __ _____ _________
  8. * / \___/ \_______/ \___________,°
  9. *
  10. *=======================================================
  11. *
  12. * Creation : BP, 2015/11/24
  13. * Modifs : ...
  14. *
  15. *
  16. DEBPROC ORBITE EVOL1*'EVOLUTIO' TABOPT/'TABLE';
  17.  
  18.  
  19. ************************************************************************
  20. *** RECUP DES EVENTUELLES OPTIONS ***
  21. *** + PREPARATION ***
  22. ************************************************************************
  23.  
  24.  
  25. * nombre d'evolutions
  26. nbev1 = DIME EVOL1;
  27.  
  28. * nombre de point de l'evolution 1
  29. nt1 = DIME (EXTR (EXTR EVOL1 'COUR' 1) 'ABSC');
  30.  
  31. * Table d'options
  32. SI (NON (EXIS TABOPT)); TABOPT = TABL; FINSI;
  33.  
  34. * nombre de plot = ndess1
  35. SI (EXIS TABOPT 'N_DESSIN');
  36. ndess1 = TABOPT . 'N_DESSIN';
  37. SINON;
  38. * on choisit de plotter environ 100 images
  39. ndess1 = 100;
  40. FINSI;
  41. SI (ndess1 > nt1); ndess1 = nt1; FINSI;
  42.  
  43. * on plot tous les ndec1 points
  44. SI (EXIS TABOPT 'PAS');
  45. ndec1 = TABOPT . 'PAS';
  46. * mise a jour de ndess1 : tant pis s'il etait deja defini !
  47. ndess1 = ENTI (nt1 / ndec1);
  48. SINON;
  49. * ndec1 = 32 ;
  50. ndec1 = ENTI 'PROCH' (nt1 / ndess1) ;
  51. FINSI;
  52.  
  53. * longueur de la queue de la comete
  54. SI (EXIS TABOPT 'QUEUE');
  55. nqueue1 = TABOPT . 'QUEUE';
  56. SI (EGA (TYPE nqueue1) 'MOT');
  57. SI (NEG nqueue1 'INFINIE');
  58. MESS 'Indice QUEUE de la table d options doit etre un entier ou'
  59. ' le mot INFINIE';
  60. ERRE 21;
  61. FINSI;
  62. nqueue1 = nt1 + 1;
  63. FINSI;
  64. SI (NEG (TYPE nqueue1) 'ENTIER');
  65. MESS 'Indice QUEUE de la table d options doit etre un entier ou'
  66. ' le mot INFINIE';
  67. ERRE 21;
  68. FINSI;
  69. SINON;
  70. * nqueue1 = 25 * ndec1;
  71. nqueue1 = ENTI 'PROCHE' (nt1 / 4);
  72. FINSI;
  73. SI (nqueue1 < ndec1); nqueue1 = ndec1; FINSI;
  74.  
  75. * on plot a partir du ideb0 ieme point
  76. SI (EXIS TABOPT 'IDEB'); ideb0 = TABOPT . 'IDEB';
  77. SINON; ideb0 = 0;
  78. FINSI;
  79.  
  80.  
  81. * liste de temps relatifs t/T :
  82. SI (EXIS TABOPT 'TEMPS_CALCULES');
  83. prtau = TABOPT . 'TEMPS_CALCULES';
  84. SINON;
  85. prtau = LECT 0 PAS 1 (nt1 - 1);
  86. FINSI;
  87.  
  88. * On regroupe les evolutions elementaires :
  89. * - 1 à nbev1 : "queue" des orbites a tracer
  90. * - nbev1+1 à 2*nbev1 : "tete" des comètes
  91. * - dernière (2*nbev1+1) : evolution fixe (optionnelle)
  92. EVOL2 = EVOL1 et EVOL1;
  93. SI (EXIS TABOPT 'EVOL_FIXE');
  94. EVOL2 = EVOL2 ET TABOPT . 'EVOL_FIXE';
  95. FINSI;
  96.  
  97. * titre et autres options du DESSin
  98. SI (EXIS TABOPT 'TITRE'); cha1orb = TABOPT . 'TITRE';
  99. SINON; cha1orb = mot 'ORBITE';
  100. FINSI;
  101. SI (EXIS TABOPT 'TITX'); titx1 = TEXT 'TITX' TABOPT . 'TITX';
  102. SINON; titx1 = TEXT ' ';
  103. FINSI;
  104. SI (EXIS TABOPT 'TITY'); tity1 = TEXT 'TITY' TABOPT . 'TITY';
  105. SINON; tity1 = TEXT ' ';
  106. FINSI;
  107. SI (EXIS TABOPT 'XBOR'); xbor1 = TEXT 'XBOR' TABOPT . 'XBOR';
  108. SINON; xbor1 = TEXT ' ';
  109. FINSI;
  110. SI (EXIS TABOPT 'YBOR'); ybor1 = TEXT 'YBOR' TABOPT . 'YBOR';
  111. SINON; ybor1 = TEXT ' ';
  112. FINSI;
  113. SI (EXIS TABOPT 'CARR'); flcar1 = TABOPT . 'CARR';
  114. SINON; flcar1 = VRAI;
  115. FINSI;
  116. SI (flcar1); car1 = TEXT 'CARR';
  117. SINON; car1 = TEXT ' ';
  118. FINSI;
  119.  
  120.  
  121. * table option de DESS
  122. Tdess1 = TABL;
  123. Tdess1 . 'INITIAL' = TABL;
  124. Tdess1 . 'FINAL' = TABL;
  125. * option pour la tete de la comete
  126. REPE BCOMETE nbev1;
  127. * Tdess1 . (nbev1 + &BCOMETE) = mot 'MARQ S PLEIN ROND';
  128. Tdess1 . (nbev1 + &BCOMETE) = mot 'MARQ PLEIN ROND';
  129. FIN BCOMETE;
  130.  
  131. MESS cha1orb ': 1 pas/' ndec1 ' soit' ndess1 ' tracés'
  132. ' pas0='ideb0 ' queue=' nqueue1 'pas';
  133. * option pour EVOL_FIXE
  134. Tdess1 . (2*nbev1 + 1) = mot 'TIRR';
  135.  
  136.  
  137.  
  138. ************************************************************************
  139. *** BOUCLE SUR LES DESSINS ***
  140. ************************************************************************
  141.  
  142. ifin1 = ideb0;
  143. idess1 = 0;
  144. REPE BDESS1 ndess1; idess1 = idess1 + 1;
  145.  
  146. * effet comete pour les evolutions 1 a max(1,(nbev1 - 1))
  147. ifin1 = ifin1 + ndec1;
  148. si (ifin1 > nt1); quit BDESS1; finsi;
  149. ideb1 = ifin1 - nqueue1;
  150. si (ideb1 < 1); ideb1=1; finsi;
  151. REPE BCOMETE nbev1;
  152. * queue de la comete
  153. Tdess1 . 'INITIAL' . &BCOMETE = ideb1;
  154. Tdess1 . 'FINAL' . &BCOMETE = ifin1;
  155. * tete de la comete
  156. Tdess1 . 'INITIAL' . (nbev1 + &BCOMETE) = ifin1;
  157. Tdess1 . 'FINAL' . (nbev1 + &BCOMETE) = ifin1;
  158. FIN BCOMETE;
  159.  
  160. * titre du graphique
  161. tau1 = extr prtau ifin1;
  162. tit1orb = chai cha1orb ' - \t=' tau1;
  163.  
  164. * plot
  165. DESS EVOL2
  166. titx1 'POSX' 'CENT' tity1 'POSY' 'CENT'
  167. xbor1 ybor1 car1 'TITR' tit1orb Tdess1 'NCLK';
  168.  
  169. FIN BDESS1;
  170.  
  171.  
  172.  
  173.  
  174.  
  175. FINPROC;
  176.  
  177.  

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