/*************************************************************************************************************************************/ /* */ /* C O U R B E T R I D I M E N S I O N N E L L E P E R I O D I Q U E */ /* I N S P I R E E D E 'v $xrk/SolConnue.21$K' : */ /* */ /* */ /* Author of '$xrk/SinCos.11$K' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 1998??????????). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* I N T E R F A C E ' listG ' : */ /* */ /* */ /* :Debut_listG: */ /* :Fin_listG: */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D I R E C T I V E S S P E C I F I Q U E S D E C O M P I L A T I O N : */ /* */ /*************************************************************************************************************************************/ @define PRAGMA_CL_____MODULE_NON_OPTIMISABLE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* F I C H I E R S D ' I N C L U D E S : */ /* */ /*************************************************************************************************************************************/ #include INCLUDES_BASE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N S D E B A S E E T U N I V E R S E L L E S : */ /* */ /*************************************************************************************************************************************/ #include xrk/attractor.11.I" /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 3 */ /* D E F I N I T I O N D E L ' E S P A C E P H Y S I Q U E D A N S R ( D E B U T ) : */ /* */ /* */ /* Nota : */ /* */ /* Les extrema des coordonnees {x,y,z} */ /* ainsi que ceux de leurs differentielles */ /* {dx,dy,dz} sont fixees un peu arbitrairement */ /* et sans etre parametrees. Elles ont ete */ /* obtenues a l'aide du programme 'v $xtc/lorenz.01$c'. */ /* */ /* */ /*************************************************************************************************************************************/ #define hXmin_ESPACE \ PARE(-1.0) #define hYmin_ESPACE \ PARE(-1.0) #define hZmin_ESPACE \ PARE(-1.0) /* Definition du "coin" inferieur-gauche-arriere de l'espace physique. */ #define hXmax_ESPACE \ PARE(1.0) #define hYmax_ESPACE \ PARE(1.0) #define hZmax_ESPACE \ PARE(1.0) /* Definition du "coin" superieur-droite-avant de l'espace physique. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 3 */ /* D E F I N I T I O N D E L ' E S P A C E P H Y S I Q U E D A N S R ( D E B U T ) : */ /* */ /*************************************************************************************************************************************/ #include xrk/attractor.12.I" #define dXmin_ESPACE \ PARE(-1.0) #define dYmin_ESPACE \ PARE(-1.0) #define dZmin_ESPACE \ PARE(-1.0) /* Definition des minima des differentielles {dx,dy,dz}. */ #define dXmax_ESPACE \ PARE(1.0) #define dYmax_ESPACE \ PARE(1.0) #define dZmax_ESPACE \ PARE(1.0) /* Definition des maxima des differentielles {dx,dy,dz}. */ #include xrk/attractor.1D.I" /* Formules de renormalisation des differentielles dans [0,1] ; elles sont utilisees lorsque */ /* la production d'images en couleurs est demandee (voir 'visualiser_en_RVB'). */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E S D I F F E R E N T S E S P A C E S E T D E L ' E F F E T D E B R U M E : */ /* */ /*************************************************************************************************************************************/ #include xrk/attractor.13.I" /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A I D E A U C A D R A G E D E S I M A G E S : */ /* */ /*************************************************************************************************************************************/ #include xrk/attractor.1C.I" DONNEES_DE_RECHERCHE_DES_EXTREMA_DES_COORDONNEES_ET_DES_DERIVEES /* Definition des extrema des coordonnees et des derivees. On notera bien l'absence de */ /* point-virgule apres 'DONNEES_DE_RECHERCHE_DES_EXTREMA_DES_COORDONNEES_ET_DES_DERIVEES'. */ #define EDITER_LES_COORDONNEES_ET_LES_VITESSES \ FAUX DEFV(Local,DEFV(Logical,INIT(editer_les_coordonnees_et_les_vitesses,EDITER_LES_COORDONNEES_ET_LES_VITESSES))); /* Indique si a chaque pas de temps on doit editer ('VRAI') ou pas ('FAUX') les coordonnees */ /* et les vitesses de chaque corps... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* G E N E R A T I O N D E S I M A G E S : */ /* */ /*************************************************************************************************************************************/ #include xrv/champs_5.14.I" #include xrk/attractor.1A.I" /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N S G E N E R A L E S R E L A T I V E S A L A V I S U A L I S A T I O N : */ /* */ /*************************************************************************************************************************************/ #define NOMBRE_D_ITERATIONS \ CENT \ /* A ete introduit le 19990520122834 a cause de son utilisation dans la definition de 'DCT' */ \ /* qui doit elle-meme preceder l'appel de '$xrk/attractor.14$I', alors que c'est grace a */ \ /* lui que l'on definit habituellement 'NOMBRE_D_ITERATIONS' via un "include" supplementaire */ \ /* 'v $xrk/attractor.41$I NOMBRE_D_ITERATIONS'... */ #define DCT \ DIVI(CERCLE_TRIGONOMETRIQUE,NOMBRE_D_ITERATIONS) DEFV(Local,DEFV(Float,INIT(dct,DCT))); /* Definition de 'dt'. La valeur implicite permet de balayer une periode des solutions */ #include xrk/attractor.14.I" /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* F O N C T I O N D E M E M O R I S A T I O N D U P O I N T C O U R A N T : */ /* */ /*************************************************************************************************************************************/ #include xrk/attractor.16.I" #define RAYON_DE_VISUALISATION \ FRA6(FRA10(mhXYZlongueur_ESPACE)) DEFV(Local,DEFV(Float,INIT(rayon_de_visualisation,RAYON_DE_VISUALISATION))); /* Rayon du disque materialisant une iteration. Il fut exprime longtemps sous la */ /* forme : */ /* */ /* GRO4(FRA4(FU)) */ /* */ BFonctionI DEFV(Local,DEFV(FonctionI,memorisation_1_point_07(AXf,AYf,AZf,AdXf,AdYf,AdZf,numero_de_l_iteration_courante))) DEFV(Argument,DEFV(Float,AXf)); DEFV(Argument,DEFV(Float,AYf)); DEFV(Argument,DEFV(Float,AZf)); /* Definition de la position {x,y,z} de l'iteration courante. */ DEFV(Argument,DEFV(Float,AdXf)); DEFV(Argument,DEFV(Float,AdYf)); DEFV(Argument,DEFV(Float,AdZf)); /* Definition des differentielles {dx,dy,dz} de la position de l'iteration courante. */ DEFV(Argument,DEFV(Int,numero_de_l_iteration_courante)); /* Numero de l'iteration courante afin d'attenuer eventuellement la luminance des points */ /* materialisant chaque iteration en fonction de leur numero (les premieres iterations etant */ /* plus sombres, et les dernieres etant plus lumineuses). */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock #include xrk/attractor.15.I" INIT_ERROR; /*..............................................................................................................................*/ MEMORISATION_DU_POINT_COURANT(X_DERIVEE_DANS_01(AdXf) ,Y_DERIVEE_DANS_01(AdYf) ,Z_DERIVEE_DANS_01(AdZf) ); /* Memorisation du point courant en Noir et Blanc ou en Couleurs, mais uniquement s'il est */ /* visible en fonction des conditions de visualisation... */ RETU_ERROR; Eblock EFonctionI /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D ' U N E C O U R B E T R I D I M E N S I O N N E L L E P E R I O D I Q U E : */ /* */ /* */ /* Definition : */ /* */ /* Soit le systeme de trois fonctions de */ /* la variable 't' (ou 'theta') : */ /* */ /* */ /* ex.t ecx esx */ /* x(t) = Kx.e .[cos (ocx.t+pcx).sin (osx.t+psx)] + Tx */ /* */ /* ey.t ecy esy */ /* y(t) = Ky.e .[cos (ocy.t+pcy).sin (osy.t+psy)] + Ty */ /* */ /* ez.t ecz esz */ /* z(t) = Kz.e .[cos (ocz.t+pcz).sin (osz.t+psz)] + Tz */ /* */ /* */ /* ou {ecx,esx,ecy,esy,ecz,esz} sont de preference des */ /* entiers positifs ou nuls (puisqu'utilises dans 'PUIX(...)'). */ /* */ /* On notera que le 20170110125058, ces formules */ /* ont inspire le programme 'v $xrs/epicycloide.31$K'. */ /* */ /* */ /*************************************************************************************************************************************/ #include xrk/attractor.17.I" dfTRANSFORMAT_31(liste_NOMBRE_D_ITERATIONS,fichier_NOMBRE_D_ITERATIONS,NOMBRE_D_ITERATIONS_IMPLICITE,NOMBRE_D_ITERATIONS) /* Definition du fichier des nombres d'iterations. */ #define sNOMBRE_D_ITERATIONS(numero_de_la_periode) \ INTE(sTRANSFORMAT_31(numero_de_la_periode,liste_NOMBRE_D_ITERATIONS)) \ /* Formule generale definissant les variations du nombre d'iterations. */ #define T0 \ FRA10(FRA10(FU)) /* Exactes... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* F O N C T I O N S D E V I S U A L I S A T I O N E T D ' I N T E R P O L A T I O N : */ /* */ /*************************************************************************************************************************************/ #include xrv/particule.31.I" dfTRANSFORMAT_31(liste_VARIABLE_t0,fichier_VARIABLE_t0,VARIABLE_t0_IMPLICITE,T0) /* Definition du fichier la valeur initiale de t. */ #define sVARIABLE_t0(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_VARIABLE_t0)) \ /* Formule generale definissant les variations de la valeur initiale de t. */ dfTRANSFORMAT_31(liste_PAS_DE_TEMPS_dct,fichier_PAS_DE_TEMPS_dct,PAS_DE_TEMPS_dct_IMPLICITE,DCT) /* Definition du fichier des pas de temps 'dt'. */ #define sPAS_DE_TEMPS_dct(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_PAS_DE_TEMPS_dct)) \ /* Formule generale definissant les variations du pas de temps. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E S T R O I S F O N C T I O N S ' S ' : */ /* */ /*************************************************************************************************************************************/ #define X_AMPLIFICATION \ FU DEFV(Local,DEFV(Float,INIT(X_amplification,X_AMPLIFICATION))); #define X_TRANSLATION \ FZERO DEFV(Local,DEFV(Float,INIT(X_translation,X_TRANSLATION))); #define Y_AMPLIFICATION \ FU DEFV(Local,DEFV(Float,INIT(Y_amplification,Y_AMPLIFICATION))); #define Y_TRANSLATION \ FZERO DEFV(Local,DEFV(Float,INIT(Y_translation,Y_TRANSLATION))); #define Z_AMPLIFICATION \ FU DEFV(Local,DEFV(Float,INIT(Z_amplification,Z_AMPLIFICATION))); #define Z_TRANSLATION \ FZERO DEFV(Local,DEFV(Float,INIT(Z_translation,Z_TRANSLATION))); #define X_EXPONENTIELLE \ FZERO DEFV(Local,DEFV(Float,INIT(X_exponentielle,X_EXPONENTIELLE))); #define Y_EXPONENTIELLE \ FZERO DEFV(Local,DEFV(Float,INIT(Y_exponentielle,Y_EXPONENTIELLE))); #define Z_EXPONENTIELLE \ FZERO DEFV(Local,DEFV(Float,INIT(Z_exponentielle,Z_EXPONENTIELLE))); #define X_EXPOSANT_COSX \ FU DEFV(Local,DEFV(Float,INIT(X_exposant_COSX,X_EXPOSANT_COSX))); #define X_EXPOSANT_SINX \ FZERO DEFV(Local,DEFV(Float,INIT(X_exposant_SINX,X_EXPOSANT_SINX))); #define Y_EXPOSANT_COSX \ FU DEFV(Local,DEFV(Float,INIT(Y_exposant_COSX,Y_EXPOSANT_COSX))); #define Y_EXPOSANT_SINX \ FU DEFV(Local,DEFV(Float,INIT(Y_exposant_SINX,Y_EXPOSANT_SINX))); #define Z_EXPOSANT_COSX \ FZERO DEFV(Local,DEFV(Float,INIT(Z_exposant_COSX,Z_EXPOSANT_COSX))); #define Z_EXPOSANT_SINX \ FU DEFV(Local,DEFV(Float,INIT(Z_exposant_SINX,Z_EXPOSANT_SINX))); #define X_PULSATION_COSX \ FU DEFV(Local,DEFV(Float,INIT(X_pulsation_COSX,X_PULSATION_COSX))); #define X_PULSATION_SINX \ FU DEFV(Local,DEFV(Float,INIT(X_pulsation_SINX,X_PULSATION_SINX))); #define Y_PULSATION_COSX \ FU DEFV(Local,DEFV(Float,INIT(Y_pulsation_COSX,Y_PULSATION_COSX))); #define Y_PULSATION_SINX \ FU DEFV(Local,DEFV(Float,INIT(Y_pulsation_SINX,Y_PULSATION_SINX))); #define Z_PULSATION_COSX \ FU DEFV(Local,DEFV(Float,INIT(Z_pulsation_COSX,Z_PULSATION_COSX))); #define Z_PULSATION_SINX \ FU DEFV(Local,DEFV(Float,INIT(Z_pulsation_SINX,Z_PULSATION_SINX))); #define X_PHASE_COSX \ FZERO DEFV(Local,DEFV(Float,INIT(X_phase_COSX,X_PHASE_COSX))); #define X_PHASE_SINX \ FZERO DEFV(Local,DEFV(Float,INIT(X_phase_SINX,X_PHASE_SINX))); #define Y_PHASE_COSX \ FZERO DEFV(Local,DEFV(Float,INIT(Y_phase_COSX,Y_PHASE_COSX))); #define Y_PHASE_SINX \ FZERO DEFV(Local,DEFV(Float,INIT(Y_phase_SINX,Y_PHASE_SINX))); #define Z_PHASE_COSX \ FZERO DEFV(Local,DEFV(Float,INIT(Z_phase_COSX,Z_PHASE_COSX))); #define Z_PHASE_SINX \ FZERO DEFV(Local,DEFV(Float,INIT(Z_phase_SINX,Z_PHASE_SINX))); #define Sx(t) \ AXPB(X_amplification \ ,MUL3(EXPX(MUL2(X_exponentielle,t)) \ ,PUIX(COSX(AXPB(X_pulsation_COSX,t,X_phase_COSX)),X_exposant_COSX) \ ,PUIX(SINX(AXPB(X_pulsation_SINX,t,X_phase_SINX)),X_exposant_SINX) \ ) \ ,X_translation \ ) \ /* Definition de la fonction S (t). */ \ /* x */ #define Sy(t) \ AXPB(Y_amplification \ ,MUL3(EXPX(MUL2(Y_exponentielle,t)) \ ,PUIX(COSX(AXPB(Y_pulsation_COSX,t,Y_phase_COSX)),Y_exposant_COSX) \ ,PUIX(SINX(AXPB(Y_pulsation_SINX,t,Y_phase_SINX)),Y_exposant_SINX) \ ) \ ,Y_translation \ ) \ /* Definition de la fonction S (t). */ \ /* y */ #define Sz(t) \ AXPB(Z_amplification \ ,MUL3(EXPX(MUL2(Z_exponentielle,t)) \ ,PUIX(COSX(AXPB(Z_pulsation_COSX,t,Z_phase_COSX)),Z_exposant_COSX) \ ,PUIX(SINX(AXPB(Z_pulsation_SINX,t,Z_phase_SINX)),Z_exposant_SINX) \ ) \ ,Z_translation \ ) \ /* Definition de la fonction S (t). */ \ /* z */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L ' I N T E G R A T I O N D U S Y S T E M E */ /* D ' E Q U A T I O N S D I F F E R E N T I E L L E S : */ /* */ /*************************************************************************************************************************************/ #include xrk/integr.1B.vv.I" /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E S I N I T I A L I S A T I O N S : */ /* */ /*************************************************************************************************************************************/ #include xrk/attractor.18.I" /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* C O U R B E T R I D I M E N S I O N N E L L E P E R I O D I Q U E */ /* I N S P I R E E D E 'v $xrk/SolConnue.21$K' : */ /* */ /*************************************************************************************************************************************/ BCommande(nombre_d_arguments,arguments) /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ INITIALISATIONS_GENERALES; /* Initialisations generales faites au tout debut... */ iTRANSFORMAT_31(liste_VARIABLE_t0,VARIABLE_t0_IMPLICITE); /* Initialisation de la valeur initiale de t. */ iTRANSFORMAT_31(liste_PAS_DE_TEMPS_dct,PAS_DE_TEMPS_dct_IMPLICITE); /* Initialisation du pas de temps. */ iTRANSFORMAT_31(liste_NOMBRE_D_ITERATIONS,NOMBRE_D_ITERATIONS_IMPLICITE); /* Initialisation du nombre d'iterations. */ #include xrv/champs_5.1A.I" GET_ARGUMENTSv(nombre_d_arguments ,BLOC(PROCESS_ARGUMENTS_GEOMETRIQUES; PROCESS_ARGUMENT_FICHIER("VARIABLE_t0=" ,fichier_VARIABLE_t0 ,liste_VARIABLE_t0 ,VARIABLE_t0_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("PAS_DE_TEMPS_dct=" ,fichier_PAS_DE_TEMPS_dct ,liste_PAS_DE_TEMPS_dct ,PAS_DE_TEMPS_dct_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("NOMBRE_D_ITERATIONS=" ,fichier_NOMBRE_D_ITERATIONS ,liste_NOMBRE_D_ITERATIONS ,NOMBRE_D_ITERATIONS_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENTS_DE_VISUALISATION; PROCESS_ARGUMENTS_DE_VISUALISATION_DES_AXES_DE_COORDONNEES; GET_ARGUMENT_I("n=""iterations=",nombre_d_iterations); GET_ARGUMENT_F("dt=""dct=",dct); GET_ARGUMENT_F("kx=""Kx=",X_amplification); GET_ARGUMENT_F("Tx=",X_translation); GET_ARGUMENT_F("ex=",X_exponentielle); GET_ARGUMENT_F("ecx=",X_exposant_COSX); GET_ARGUMENT_F("ocx=",X_pulsation_COSX); GET_ARGUMENT_F("pcx=",X_phase_COSX); GET_ARGUMENT_F("esx=",X_exposant_SINX); GET_ARGUMENT_F("osx=",X_pulsation_SINX); GET_ARGUMENT_F("psx=",X_phase_SINX); GET_ARGUMENT_F("ky=""Ky=",Y_amplification); GET_ARGUMENT_F("Ty=",Y_translation); GET_ARGUMENT_F("ey=",Y_exponentielle); GET_ARGUMENT_F("ecy=",Y_exposant_COSX); GET_ARGUMENT_F("ocy=",Y_pulsation_COSX); GET_ARGUMENT_F("pcy=",Y_phase_COSX); GET_ARGUMENT_F("esy=",Y_exposant_SINX); GET_ARGUMENT_F("osy=",Y_pulsation_SINX); GET_ARGUMENT_F("psy=",Y_phase_SINX); GET_ARGUMENT_F("kz=""Kz=",Z_amplification); GET_ARGUMENT_F("Tz=",Z_translation); GET_ARGUMENT_F("ez=",Z_exponentielle); GET_ARGUMENT_F("ecz=",Z_exposant_COSX); GET_ARGUMENT_F("ocz=",Z_pulsation_COSX); GET_ARGUMENT_F("pcz=",Z_phase_COSX); GET_ARGUMENT_F("esz=",Z_exposant_SINX); GET_ARGUMENT_F("osz=",Z_pulsation_SINX); GET_ARGUMENT_F("psz=",Z_phase_SINX); GET_ARGUMENT_L("coordonnees_vitesses=",editer_les_coordonnees_et_les_vitesses); ) ); #include xrv/champs_5.19.I" /* Pour eviter le message : */ /* */ /* Static function is not referenced. */ /* */ /* sur 'SYSTEME_ES9000_AIX_CC'... */ #include xrk/attractor.19.I" /* Validations et definition de l'espace physique. */ Komp(numero_de_la_periode_courante_de_la_simulation,nombre_de_periodes_de_la_simulation) Bblock PARALLELISME(BLOC(RE_INITIALISATION_DE_L_HORLOGE; INITIALISATIONS_RELATIVES_A_CHAQUE_NOUVELLE_IMAGE(numero_de_la_periode_courante); /* Initialisations necessaires avant le calcul et la generation de chaque nouvelle image. */ vTRANSFORMAT_31(nombre_d_iterations ,sNOMBRE_D_ITERATIONS ,numero_de_la_periode_courante ,fichier_NOMBRE_D_ITERATIONS ); /* Calcul du nombre d'iterations lorsqu'il est variable. */ vTRANSFORMAT_31(dct ,sPAS_DE_TEMPS_dct ,numero_de_la_periode_courante ,fichier_PAS_DE_TEMPS_dct ); /* Calcul du pas de temps. */ Komp(numero_de_l_iteration_courante,nombre_d_iterations) Bblock MISE_A_JOUR(cx_t_1,cx,cy_t_1,cy,cz_t_1,cz); /* Sauvegarde de l'etat anterieur. */ MISE_A_JOUR(cx,Sx(temps_courant) ,cy,Sy(temps_courant) ,cz,Sz(temps_courant) ); /* Calcul de la fonction. */ Test(IFGT(numero_de_l_iteration_courante,PREMIERE_ITERATION_D_UN_Komp)) Bblock EGAL(dcx,SOUS(cx,cx_t_1)); EGAL(dcy,SOUS(cy,cy_t_1)); EGAL(dcz,SOUS(cz,cz_t_1)); /* Et approximation des differentielles... */ Eblock ATes Bblock EGAL(dcx,FZERO); EGAL(dcy,FZERO); EGAL(dcz,FZERO); /* Initialisation des differentielles pour la premiere visualisation si celle-ci a lieu */ /* en couleurs. On notera que 'FZERO' est la valeur la plus "logique"... */ Eblock ETes RECHERCHE_DES_EXTREMA_DES_COORDONNEES_ET_DES_DERIVEES; /* On notera que cette recherche n'est pas conditionnee par 'editer_les_extrema', car les */ /* extrema pourraient etre utilises pour la visualisation... */ Test(IFOU(IL_FAUT(visualiser_le_fantome) ,IFGE(numero_de_l_iteration_courante,PREMIERE_ITERATION_VISUALISEE) ) ) Bblock CALS(memorisation_1_point_07(SOUS(cx,Xcentre_ESPACE) ,SOUS(cy,Ycentre_ESPACE) ,SOUS(cz,Zcentre_ESPACE) ,dcx ,dcy ,dcz ,numero_de_l_iteration_courante ) ); /* Memorisation de l'iteration courante... */ Test(IL_FAUT(editer_les_coordonnees_et_les_vitesses)) Bblock CAL2(Prin1("temps=%f",temps_courant)); CAL2(Prin3(" coordonnees={%+.17f,%+.17f,%+.17f}" ,cx ,cy ,cz ) ); CAL2(Prin3(" vitesse={%+.17f,%+.17f,%+.17f}" ,dcx ,dcy ,dcz ) ); CAL2(Prin0("\n")); Eblock ATes Bblock Eblock ETes Eblock ATes Bblock Eblock ETes INCREMENTATION_DE_L_HORLOGE(dct); /* Simulation du temps de la simulation... */ Eblock EKom VISUALISATION_DES_AXES_DE_COORDONNEES; /* Visualisation si necessaire des trois axes de coordonnees. */ GENERATION_D_UNE_IMAGE_ET_PASSAGE_A_LA_SUIVANTE(BLOC(VIDE;)); /* Generation de l'image courante... */ ) ,BLOC(PASSAGE_A_L_IMAGE_SUIVANTE;) ,numero_de_la_periode_courante ); Eblock EKom EDITION_DES_EXTREMA_DES_COORDONNEES_ET_DES_DERIVEES; /* Edition facultative des extrema des coordonnees et des derivees. */ RETU_Commande; Eblock ECommande