Mardi 13 Mai 2008
~ Tracé de trajectoires (sources) ~
Menu
> Accueil

Programmation
> Algorithmes de tri
> Java

Réseaux Telecom
> Logiciel Vigie

Dossiers
> Trajectoire de comètes
> Gestion d'emploi du temps
> Tracking d'internautes
> Référencement
> Open Office
> Multi-agents dans les EIAH

Divers
> Album Photo
> Citations
> Recettes
> Bibliothèque
> Logiciels
> Mini-Annuaire

A propos
> Mon CV
> Me contacter
Recherche
Google
Sur ce site
Sur le web
Annonces
Accueil > Trajectoire de comètes > Tracé de trajectoires (sources)

Vers le tracé de trajectoire (Présentation)

include "D:/Bibliothéque graphique.ml";;

let Pi=4.*.atan(1.0);;

type plein_point=plein|point;;

type foyer=soleil|autre;;

type conique={e:float;p:float;aap:float};;

type comete={equ:conique;foyer:foyer};;

let n_element tableau n=let l=vect_length tableau in
                      tableau.(n-(l*(n/l)));;

let fond_ecran couleur=set_color couleur;
                       fill_rect 0 0 (size_x()) (size_y());
                       set_color black;;

#open "random";;

let etoiles nombre couleur=set_color couleur;
                   for i=1 to nombre do
                   point_ecr {X=(int (size_x()));Y=(int (size_y()))};done;
                   set_color black;;

let ciel n couleurs=let y=(vect_length couleurs) in
                    for i=0 to (y-1) do
                            etoiles (n/y) (couleurs.(i));done;;

let ciel2 n=for i=0 to n do etoiles 1 (rgb (int 255) (int 255) (int 255)) done;;

let astre_solaire rayon repère= set_color yellow;
                fill_circle (repère.O.X) (repère.O.Y) (int_of_float((float_of_int(repère.I))*.rayon));
                         set_color red;
                         move_rep {x=(-.rayon);y=0.} repère;
                         line_rep {x=rayon;y=0.} repère;
                         move_rep {x=0.;y=(1./.2.)*.rayon} repère;
                         line_rep {x=0.;y=(1./.2.)*.(-.rayon)} repère;
                         set_color black;;

let color_conique nom repere pp n tableau depart intervalle=
  let dt=(intervalle)/.(float_of_int n)
  and valeur p e teta aap=p/.(1.+.(e*.cos(teta-.aap)))
  and p=nom.equ.p and e=nom.equ.e and aap=nom.equ.aap in
  let t=ref(depart+.aap+.dt) in
  begin
  match pp with
  |plein ->set_color (n_element tableau 1);
           move_rep {x=(valeur p e (!t) aap)*.cos(!t);y=(valeur p e (!t) aap)*.sin(!t)} repere;
           for i=2 to n-1 do
             t:=!t+.dt;
             set_color (n_element tableau i);
             line_rep {x=((valeur p e !t aap)*.cos(!t));y=((valeur p e !t aap)*.sin(!t))} repere;
           done;
  |point ->for i=1 to n-1 do
             set_color (n_element tableau i);
             point_rep {x=((valeur p e !t aap)*.cos(!t));y=((valeur p e !t aap)*.sin(!t))} repere;
             t:=!t+.dt;
           done;
  end;
  set_color black;;

let trace_comete nom repere pp n tableau=
match (nom.equ.e) with
   |1.0->color_conique nom repere pp n tableau (-.Pi) (2.*.Pi)
   |x when x<.1. ->color_conique nom repere pp n tableau (0.) (2.*.Pi)
   |x ->let g=acos(-.1./.x) in
         match (nom.foyer) with
           |soleil->color_conique nom repere pp n tableau (-.g) (2.*.g)
           |autre->color_conique nom repere pp n tableau (g) ((2.*.Pi)-.(2.*.g));;

let trajectoire comète pp centre largeur=clear_graph();
let repere=(vision centre largeur) in
fond_ecran black;
ciel 150 [|white;yellow;cyan|];
trace_rep repere 1 blue;
astre_solaire ((comète.equ.p)/.5.) repere;
trace_comete comète repere pp 500 [|blue;white;red;yellow;magenta|];;

Accueil > Trajectoire de comètes > Tracé de trajectoires (sources)