/*************************************************************************************************************************************/
/* */
/* 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