/*************************************************************************************************************************************/
/* */
/* C A L C U L D E L ' H Y P E R - V O L U M E P R O P R E M E N T D I T : */
/* */
/* */
/* Author of '$xrs/hyper_volumes.12$I' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 20230209180401). */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C A L C U L D E L ' H Y P E R - V O L U M E V I A L E S C O O R D O N N E E S C U R V I L I G N E S : */
/* */
/*************************************************************************************************************************************/
#include xrk/attractor.1A.I"
#include xrv/champs_5.19.I"
/* Pour eviter le message : */
/* */
/* Static function is not referenced. */
/* */
#include xrk/attractor.19.I"
/* Validations et definition de l'espace physique. */
#define u_NORMALISEE \
NORM(u,minimum_de_u,maximum_de_u)
#define v_NORMALISEE \
NORM(v,minimum_de_v,maximum_de_v)
#define w_NORMALISEE \
NORM(w,minimum_de_w,maximum_de_w)
#define t_NORMALISEE \
NORM(t,minimum_de_t,maximum_de_t)
/* Coordonnees {u,v,w,t} dans [0,1]... */
#define PERMUTATION_EVENTUELLE_DES_COORDONNEES_ET_DES_DIFFERENTIELLES \
Bblock \
Test(IL_FAUT(permuter_les_coordonnees_et_les_differentielles)) \
Bblock \
fSWAP(cx,dcx); \
fSWAP(cy,dcy); \
fSWAP(cz,dcz); \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
/* Permutation eventuelle des coordonnees et des differentielles. */
#define GENERATION_DU_POINT_uvwt_COURANT(Fx,Fy,Fz,calcul_eventuel_point_courant,sequence_de_generation) \
Bblock \
begin_nouveau_block \
Bblock \
begin_nouveau_block \
Bblock \
begin_nouveau_block \
Bblock \
/* Cette suite de 'Bblock's est destinee a ne pas changer la tabulation de ce qui suit... */ \
DEFV(Float,INIT(u_effectif,u)); \
DEFV(Float,INIT(d_u_effectif,d_u)); \
\
DEFV(Float,INIT(v_effectif,v)); \
DEFV(Float,INIT(d_v_effectif,d_v)); \
\
DEFV(Float,INIT(w_effectif,w)); \
DEFV(Float,INIT(d_w_effectif,d_w)); \
\
DEFV(Float,INIT(t_effectif,t)); \
DEFV(Float,INIT(d_t_effectif,d_t)); \
\
EGAL(u_effectif \
,COND(IL_NE_FAUT_PAS(gestion_torique_de_u) \
,NEUT(u_effectif) \
,MODF(u_effectif,minimum_de_u_effectif,maximum_de_u_effectif) \
) \
); \
EGAL(v_effectif \
,COND(IL_NE_FAUT_PAS(gestion_torique_de_v) \
,NEUT(v_effectif) \
,MODF(v_effectif,minimum_de_v_effectif,maximum_de_v_effectif) \
) \
); \
EGAL(w_effectif \
,COND(IL_NE_FAUT_PAS(gestion_torique_de_w) \
,NEUT(w_effectif) \
,MODF(w_effectif,minimum_de_w_effectif,maximum_de_w_effectif) \
) \
); \
EGAL(t_effectif \
,COND(IL_NE_FAUT_PAS(gestion_torique_de_t) \
,NEUT(t_effectif) \
,MODF(t_effectif,minimum_de_t_effectif,maximum_de_t_effectif) \
) \
); \
\
Test(I4ET(IFINff(u_effectif,minimum_de_u_effectif,maximum_de_u_effectif) \
,IFINff(v_effectif,minimum_de_v_effectif,maximum_de_v_effectif) \
,IFINff(w_effectif,minimum_de_w_effectif,maximum_de_w_effectif) \
,IFINff(t_effectif,minimum_de_t_effectif,maximum_de_t_effectif) \
) \
) \
Bblock \
Test(I5OU(I4ET(DIVISIBLE(echantillonnage_courant_de_u,echantillonnage_de_u) \
,DIVISIBLE(echantillonnage_courant_de_v,echantillonnage_de_v) \
,DIVISIBLE(echantillonnage_courant_de_w,echantillonnage_de_w) \
,DIVISIBLE(echantillonnage_courant_de_t,echantillonnage_de_t) \
) \
,I4ET(NON_DIVISIBLE(echantillonnage_courant_de_u,echantillonnage_de_u) \
,DIVISIBLE(echantillonnage_courant_de_v,echantillonnage_de_v) \
,DIVISIBLE(echantillonnage_courant_de_w,echantillonnage_de_w) \
,DIVISIBLE(echantillonnage_courant_de_t,echantillonnage_de_t) \
) \
,I4ET(DIVISIBLE(echantillonnage_courant_de_u,echantillonnage_de_u) \
,NON_DIVISIBLE(echantillonnage_courant_de_v,echantillonnage_de_v) \
,DIVISIBLE(echantillonnage_courant_de_w,echantillonnage_de_w) \
,DIVISIBLE(echantillonnage_courant_de_t,echantillonnage_de_t) \
) \
,I4ET(DIVISIBLE(echantillonnage_courant_de_u,echantillonnage_de_u) \
,DIVISIBLE(echantillonnage_courant_de_v,echantillonnage_de_v) \
,NON_DIVISIBLE(echantillonnage_courant_de_w,echantillonnage_de_w) \
,DIVISIBLE(echantillonnage_courant_de_t,echantillonnage_de_t) \
) \
,I4ET(DIVISIBLE(echantillonnage_courant_de_u,echantillonnage_de_u) \
,DIVISIBLE(echantillonnage_courant_de_v,echantillonnage_de_v) \
,DIVISIBLE(echantillonnage_courant_de_w,echantillonnage_de_w) \
,NON_DIVISIBLE(echantillonnage_courant_de_t,echantillonnage_de_t) \
) \
) \
) \
Bblock \
EGAL(cx,Fx(u_effectif,v_effectif,w_effectif,t_effectif)); \
EGAL(cy,Fy(u_effectif,v_effectif,w_effectif,t_effectif)); \
EGAL(cz,Fz(u_effectif,v_effectif,w_effectif,t_effectif)); \
/* Generation du point courant de l'hyper-volume... */ \
\
BLOC(sequence_de_generation); \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
end_nouveau_block \
Eblock \
end_nouveau_block \
Eblock \
end_nouveau_block \
Eblock
#define index_definition_arbitraire \
index_de_definition_arbitraire_des_coordonnees_u_v_w_t \
/* Afin de raccourcir certaines des lignes qui suivent... */
#define gGENERATION_D_UNE_IMAGE_DE_L_HYPER_VOLUME(Fx,Fy,Fz,calcul_eventuel_point_courant,sequence_de_generation) \
Bblock \
DEFV(Float,INIT(differentielle_ROUGE,FLOT__UNDEF)); \
DEFV(Float,INIT(differentielle_VERTE,FLOT__UNDEF)); \
DEFV(Float,INIT(differentielle_BLEUE,FLOT__UNDEF)); \
DEFV(Logical,INIT(utiliser_les_differentielles_ROUGE_VERTE_BLEUE,FAUX)); \
\
DEFV(Float,INIT(minimum_de_u_effectif,minimum_de_u)); \
DEFV(Float,INIT(maximum_de_u_effectif,maximum_de_u)); \
DEFV(Float,INIT(minimum_de_v_effectif,minimum_de_v)); \
DEFV(Float,INIT(maximum_de_v_effectif,maximum_de_v)); \
DEFV(Float,INIT(minimum_de_w_effectif,minimum_de_w)); \
DEFV(Float,INIT(maximum_de_w_effectif,maximum_de_w)); \
DEFV(Float,INIT(minimum_de_t_effectif,minimum_de_t)); \
DEFV(Float,INIT(maximum_de_t_effectif,maximum_de_t)); \
\
DEFV(Float,INIT(pas_de_u_effectif,DIVI(pas_de_u,diviseur_du_pas_de_u))); \
DEFV(Float,INIT(pas_de_v_effectif,DIVI(pas_de_v,diviseur_du_pas_de_v))); \
DEFV(Float,INIT(pas_de_w_effectif,DIVI(pas_de_w,diviseur_du_pas_de_w))); \
DEFV(Float,INIT(pas_de_t_effectif,DIVI(pas_de_t,diviseur_du_pas_de_t))); \
\
DEFV(Int,INIT(echantillonnage_courant_de_u,translation_de_l_echantillonnage_de_u)); \
/* Afin de gerer l'echantillonnage de 'u'. */ \
\
DEFV(Float,INIT(pas_u_de_differentiation,FLOT__UNDEF)); \
DEFV(Float,INIT(pas_v_de_differentiation,FLOT__UNDEF)); \
DEFV(Float,INIT(pas_w_de_differentiation,FLOT__UNDEF)); \
DEFV(Float,INIT(pas_t_de_differentiation,FLOT__UNDEF)); \
\
EGAL(pas_u_de_differentiation \
,DIVI(COND(EST_VRAI(le_pas_de_u_de_differentiation_est_homothetique),pas_de_u_effectif,pas_de_u) \
,diviseur_de_differentiation_de_u \
) \
); \
EGAL(pas_v_de_differentiation \
,DIVI(COND(EST_VRAI(le_pas_de_v_de_differentiation_est_homothetique),pas_de_v_effectif,pas_de_v) \
,diviseur_de_differentiation_de_v \
) \
); \
EGAL(pas_w_de_differentiation \
,DIVI(COND(EST_VRAI(le_pas_de_w_de_differentiation_est_homothetique),pas_de_w_effectif,pas_de_w) \
,diviseur_de_differentiation_de_w \
) \
); \
EGAL(pas_t_de_differentiation \
,DIVI(COND(EST_VRAI(le_pas_de_t_de_differentiation_est_homothetique),pas_de_t_effectif,pas_de_t) \
,diviseur_de_differentiation_de_t \
) \
); \
\
Test(IL_FAUT(definir_arbitrairement_les_coordonnees_u_v_w_t)) \
Bblock \
DEFV(Int,INIT(echantillonnage_courant_de_u,translation_de_l_echantillonnage_de_u)); \
DEFV(Int,INIT(echantillonnage_courant_de_v,translation_de_l_echantillonnage_de_v)); \
DEFV(Int,INIT(echantillonnage_courant_de_w,translation_de_l_echantillonnage_de_w)); \
DEFV(Int,INIT(echantillonnage_courant_de_t,translation_de_l_echantillonnage_de_t)); \
/* Ne servent qu'a permettre 'GENERATION_DU_POINT_uvwt_COURANT(...)' ci-apres... */ \
\
DEFV(Logical,INIT(recuperer_les_coordonnees_u_v_w_t,VRAI)); \
\
Tant(IL_FAUT(recuperer_les_coordonnees_u_v_w_t)) \
Bblock \
DEFV(Float,INIT(u,ELEMENT_DU_FICHIER_COORDONNEES_u(index_definition_arbitraire))); \
DEFV(Float,INIT(v,ELEMENT_DU_FICHIER_COORDONNEES_v(index_definition_arbitraire))); \
DEFV(Float,INIT(w,ELEMENT_DU_FICHIER_COORDONNEES_w(index_definition_arbitraire))); \
DEFV(Float,INIT(t,ELEMENT_DU_FICHIER_COORDONNEES_t(index_definition_arbitraire))); \
\
Test(I4ET(IFNE(u,separateur_de_definition_arbitraire_des_coordonnees_u_v_w_t) \
,IFNE(v,separateur_de_definition_arbitraire_des_coordonnees_u_v_w_t) \
,IFNE(w,separateur_de_definition_arbitraire_des_coordonnees_u_v_w_t) \
,IFNE(t,separateur_de_definition_arbitraire_des_coordonnees_u_v_w_t) \
) \
) \
/* Test introduit le 20230217102703... */ \
Bblock \
Test(I3ET(IFNE_chaine(fichier_des_coordonnees_ROUGE,NOM_PIPE_Local) \
,IFNE_chaine(fichier_des_coordonnees_VERTE,NOM_PIPE_Local) \
,IFNE_chaine(fichier_des_coordonnees_BLEUE,NOM_PIPE_Local) \
) \
) \
Bblock \
EGAL(differentielle_ROUGE,ELEMENT_DU_FICHIER_COORDONNEES_ROUGE(index_definition_arbitraire)); \
EGAL(differentielle_VERTE,ELEMENT_DU_FICHIER_COORDONNEES_VERTE(index_definition_arbitraire)); \
EGAL(differentielle_BLEUE,ELEMENT_DU_FICHIER_COORDONNEES_BLEUE(index_definition_arbitraire)); \
/* Les initialisations de 'GENERATION_D_UNE_IMAGE_DE_L_HYPER_VOLUME_AVEC_DIFFEREN...(...)' */ \
/* sont donc ici "oubliees"... */ \
\
EGAL(utiliser_les_differentielles_ROUGE_VERTE_BLEUE,VRAI); \
/* Afin de pouvoir definir {differentielle_x,differentielle_y,differentielle_z} */ \
/* dans 'GENER_HYPER_VOLUME_AVEC_DIFFERENCES____(...)'. */ \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
\
Test(IFNE_chaine(fichier_des_coordonnees_RAYON,NOM_PIPE_Local)) \
Bblock \
EGAL(rayon_de_visualisation,ELEMENT_DU_FICHIER_COORDONNEES_RAYON(index_definition_arbitraire)); \
/* Introduit le 20240517140550... */ \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
\
Test(IFNE_chaine(fichier_des_coordonnees_MASSE,NOM_PIPE_Local)) \
Bblock \
EGAL(masse_de_la_sphere_courante \
,ELEMENT_DU_FICHIER_COORDONNEES_MASSE(index_definition_arbitraire) \
); \
/* Introduit le 20240519090812... */ \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
\
GENERATION_DU_POINT_uvwt_COURANT(Fx,Fy,Fz \
,calcul_eventuel_point_courant \
,sequence_de_generation \
); \
Eblock \
ATes \
Bblock \
EGAL(recuperer_les_coordonnees_u_v_w_t,FAUX); \
Eblock \
ETes \
\
INCR(index_definition_arbitraire,pas_de_parcours_d_un_fichier); \
\
Test(IFGT(index_definition_arbitraire,DERNIER_ELEMENT_D_UN_FICHIER)) \
Bblock \
EGAL(index_definition_arbitraire,PREMIER_ELEMENT_D_UN_FICHIER); \
EGAL(recuperer_les_coordonnees_u_v_w_t,FAUX); \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
ETan \
Eblock \
ATes \
Bblock \
FDoIn(u,minimum_de_u_effectif,maximum_de_u_effectif,pas_de_u_effectif) \
Bblock \
DEFV(Int,INIT(echantillonnage_courant_de_v,translation_de_l_echantillonnage_de_v)); \
/* Afin de gerer l'echantillonnage de 'v'. */ \
\
FDoIn(v,minimum_de_v_effectif,maximum_de_v_effectif,pas_de_v_effectif) \
Bblock \
DEFV(Int,INIT(echantillonnage_courant_de_w,translation_de_l_echantillonnage_de_w)); \
/* Afin de gerer l'echantillonnage de 'w'. */ \
\
FDoIn(w,minimum_de_w_effectif,maximum_de_w_effectif,pas_de_w_effectif) \
Bblock \
DEFV(Int,INIT(echantillonnage_courant_de_t,translation_de_l_echantillonnage_de_t)); \
/* Afin de gerer l'echantillonnage de 't'. */ \
\
FDoIn(t,minimum_de_t_effectif,maximum_de_t_effectif,pas_de_t_effectif) \
Bblock \
GENERATION_DU_POINT_uvwt_COURANT(Fx,Fy,Fz \
,calcul_eventuel_point_courant \
,sequence_de_generation \
); \
\
INCR(echantillonnage_courant_de_t,I); \
/* Gestion de l'echantillonnage de 't'. */ \
Eblock \
EFDoI \
\
INCR(echantillonnage_courant_de_w,I); \
/* Gestion de l'echantillonnage de 'w'. */ \
Eblock \
EFDoI \
\
INCR(echantillonnage_courant_de_v,I); \
/* Gestion de l'echantillonnage de 'v'. */ \
Eblock \
EFDoI \
\
INCR(echantillonnage_courant_de_u,I); \
/* Gestion de l'echantillonnage de 'u'. */ \
Eblock \
EFDoI \
Eblock \
ETes \
\
Eblock \
/* Calcul et visualisation generale de l'hyper-volume pour un instant donne. */
#define LISTER_EVENTUELLEMENT_LES_COORDONNEES_u_v_w_t_DES_POINTS \
Bblock \
Test(IFET(IL_FAUT(lister_la_liste_des_points) \
,IL_FAUT(lister_les_coordonnees_u_v_w_t_des_points) \
) \
) \
Bblock \
Test(IFET(IZGT(rayon_de_visualisation) \
,IFOU(EST_VRAI(les_trois_les_differentielles_peuvent_etre_nulles) \
,IFET(EST_FAUX(les_trois_les_differentielles_peuvent_etre_nulles) \
,IFOU(IL_NE_FAUT_PAS(renormaliser_arbitrairement_derivees) \
,IFET(IL_FAUT(renormaliser_arbitrairement_derivees) \
,I3OU(IZNE(dcx) \
,IZNE(dcy) \
,IZNE(dcz) \
) \
) \
) \
) \
) \
) \
) \
Bblock \
CAL2(Prin4(" U=%+.^^^ V=%+.^^^ W=%+.^^^ T=%+.^^^ " \
,u_effectif \
,v_effectif \
,w_effectif \
,t_effectif \
) \
); \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
/* Listage des coordonnees {u,v,w,t} des points... */
#define GENERATION_D_UNE_IMAGE_DE_L_HYPER_VOLUME_SANS_DIFFERENTIATION(Fx,Fy,Fz,calcul_eventuel_point_courant) \
Bblock \
DEFV(Float,INIT(d_u,FLOT__UNDEF)); \
DEFV(Float,INIT(d_v,FLOT__UNDEF)); \
DEFV(Float,INIT(d_w,FLOT__UNDEF)); \
DEFV(Float,INIT(d_t,FLOT__UNDEF)); \
\
gGENERATION_D_UNE_IMAGE_DE_L_HYPER_VOLUME \
(Fx,Fy,Fz \
,calcul_eventuel_point_courant \
,BLOC(Bblock \
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... */ \
\
BLOC(calcul_eventuel_point_courant); \
/* Calculs eventuels d'informations specifiques au point courant... */ \
\
PERMUTATION_EVENTUELLE_DES_COORDONNEES_ET_DES_DIFFERENTIELLES; \
\
LISTER_EVENTUELLEMENT_LES_COORDONNEES_u_v_w_t_DES_POINTS; \
\
CALS(memorisation_1_point_06(SOUS(cx,Xcentre_ESPACE) \
,SOUS(cy,Ycentre_ESPACE) \
,SOUS(cz,Zcentre_ESPACE) \
,dcx \
,dcy \
,dcz \
) \
); \
/* Memorisation du point courant. */ \
\
Eblock \
) \
) \
Eblock \
/* Calcul et visualisation de l'hyper-volume pour un instant donne sans differentiation. */
#define GENER_HYPER_VOLUME_AVEC_DIFFERENCES____(Fx,Fy,Fz,calcul_eventuel_point_courant) \
Bblock \
DEFV(Float,INIT(d_u,FLOT__UNDEF)); \
DEFV(Float,INIT(d_v,FLOT__UNDEF)); \
DEFV(Float,INIT(d_w,FLOT__UNDEF)); \
DEFV(Float,INIT(d_t,FLOT__UNDEF)); \
\
gGENERATION_D_UNE_IMAGE_DE_L_HYPER_VOLUME \
(Fx,Fy,Fz \
,calcul_eventuel_point_courant \
,BLOC(Bblock \
DEFV(Float,INIT(differentielle_x,FLOT__UNDEF)); \
DEFV(Float,INIT(differentielle_y,FLOT__UNDEF)); \
DEFV(Float,INIT(differentielle_z,FLOT__UNDEF)); \
/* Definition des trois differentielles. */ \
\
Test(IL_FAUT(utiliser_les_differentielles_ROUGE_VERTE_BLEUE)) \
Bblock \
EGAL(differentielle_x,differentielle_ROUGE); \
EGAL(differentielle_y,differentielle_VERTE); \
EGAL(differentielle_z,differentielle_BLEUE); \
\
EGAL(utiliser_les_differentielles_ROUGE_VERTE_BLEUE,FAUX); \
/* Ne sert a rien, mais c'est plus sur... */ \
Eblock \
ATes \
Bblock \
EGAL(differentielle_x \
,DERIVATION_PARTIELLE(Fx(SOUS(u_effectif,MUL2(facteur_x_de_pas_de_u,pas_u_de_differentiation)) \
,SOUS(v_effectif,MUL2(facteur_x_de_pas_de_v,pas_v_de_differentiation)) \
,SOUS(w_effectif,MUL2(facteur_x_de_pas_de_w,pas_w_de_differentiation)) \
,SOUS(t_effectif,MUL2(facteur_x_de_pas_de_t,pas_t_de_differentiation)) \
) \
,Fx(ADD2(u_effectif,MUL2(facteur_x_de_pas_de_u,pas_u_de_differentiation)) \
,ADD2(v_effectif,MUL2(facteur_x_de_pas_de_v,pas_v_de_differentiation)) \
,ADD2(w_effectif,MUL2(facteur_x_de_pas_de_w,pas_w_de_differentiation)) \
,ADD2(t_effectif,MUL2(facteur_x_de_pas_de_t,pas_t_de_differentiation)) \
) \
,DOUB(GpytF4D(MUL2(facteur_x_de_pas_de_u,pas_u_de_differentiation) \
,MUL2(facteur_x_de_pas_de_v,pas_v_de_differentiation) \
,MUL2(facteur_x_de_pas_de_w,pas_w_de_differentiation) \
,MUL2(facteur_x_de_pas_de_t,pas_t_de_differentiation) \
) \
) \
) \
); \
EGAL(differentielle_y \
,DERIVATION_PARTIELLE(Fy(SOUS(u_effectif,MUL2(facteur_y_de_pas_de_u,pas_u_de_differentiation)) \
,SOUS(v_effectif,MUL2(facteur_y_de_pas_de_v,pas_v_de_differentiation)) \
,SOUS(w_effectif,MUL2(facteur_y_de_pas_de_w,pas_w_de_differentiation)) \
,SOUS(t_effectif,MUL2(facteur_y_de_pas_de_t,pas_t_de_differentiation)) \
) \
,Fy(ADD2(u_effectif,MUL2(facteur_y_de_pas_de_u,pas_u_de_differentiation)) \
,ADD2(v_effectif,MUL2(facteur_y_de_pas_de_v,pas_v_de_differentiation)) \
,ADD2(w_effectif,MUL2(facteur_y_de_pas_de_w,pas_w_de_differentiation)) \
,ADD2(t_effectif,MUL2(facteur_y_de_pas_de_t,pas_t_de_differentiation)) \
) \
,DOUB(GpytF4D(MUL2(facteur_y_de_pas_de_u,pas_u_de_differentiation) \
,MUL2(facteur_y_de_pas_de_v,pas_v_de_differentiation) \
,MUL2(facteur_y_de_pas_de_w,pas_w_de_differentiation) \
,MUL2(facteur_y_de_pas_de_t,pas_t_de_differentiation) \
) \
) \
) \
); \
EGAL(differentielle_z \
,DERIVATION_PARTIELLE(Fz(SOUS(u_effectif,MUL2(facteur_z_de_pas_de_u,pas_u_de_differentiation)) \
,SOUS(v_effectif,MUL2(facteur_z_de_pas_de_v,pas_v_de_differentiation)) \
,SOUS(w_effectif,MUL2(facteur_z_de_pas_de_w,pas_w_de_differentiation)) \
,SOUS(t_effectif,MUL2(facteur_z_de_pas_de_t,pas_t_de_differentiation)) \
) \
,Fz(ADD2(u_effectif,MUL2(facteur_z_de_pas_de_u,pas_u_de_differentiation)) \
,ADD2(v_effectif,MUL2(facteur_z_de_pas_de_v,pas_v_de_differentiation)) \
,ADD2(w_effectif,MUL2(facteur_z_de_pas_de_w,pas_w_de_differentiation)) \
,ADD2(t_effectif,MUL2(facteur_z_de_pas_de_t,pas_t_de_differentiation)) \
) \
,DOUB(GpytF4D(MUL2(facteur_z_de_pas_de_u,pas_u_de_differentiation) \
,MUL2(facteur_z_de_pas_de_v,pas_v_de_differentiation) \
,MUL2(facteur_z_de_pas_de_w,pas_w_de_differentiation) \
,MUL2(facteur_z_de_pas_de_t,pas_t_de_differentiation) \
) \
) \
) \
); \
Eblock \
ETes \
\
EGAL(dcx \
,LIZ10(ponderation_de__x_____dans_dx,cx \
,ponderation_de__y_____dans_dx,cy \
,ponderation_de__z_____dans_dx,cz \
,ponderation_de__u_____dans_dx,u \
,ponderation_de__v_____dans_dx,v \
,ponderation_de__w_____dans_dx,w \
,ponderation_de__t_____dans_dx,t \
,ponderation_de_dx_____dans_dx,differentielle_x \
,ponderation_de_dy_____dans_dx,differentielle_y \
,ponderation_de_dz_____dans_dx,differentielle_z \
) \
); \
EGAL(dcy \
,LIZ10(ponderation_de__x_____dans_dy,cx \
,ponderation_de__y_____dans_dy,cy \
,ponderation_de__z_____dans_dy,cz \
,ponderation_de__u_____dans_dy,u \
,ponderation_de__v_____dans_dy,v \
,ponderation_de__w_____dans_dy,w \
,ponderation_de__t_____dans_dy,t \
,ponderation_de_dx_____dans_dy,differentielle_x \
,ponderation_de_dy_____dans_dy,differentielle_y \
,ponderation_de_dz_____dans_dy,differentielle_z \
) \
); \
EGAL(dcz \
,LIZ10(ponderation_de__x_____dans_dz,cx \
,ponderation_de__y_____dans_dz,cy \
,ponderation_de__z_____dans_dz,cz \
,ponderation_de__u_____dans_dz,u \
,ponderation_de__v_____dans_dz,v \
,ponderation_de__w_____dans_dz,w \
,ponderation_de__t_____dans_dz,t \
,ponderation_de_dx_____dans_dz,differentielle_x \
,ponderation_de_dy_____dans_dz,differentielle_y \
,ponderation_de_dz_____dans_dz,differentielle_z \
) \
); \
/* Calcul des couleurs utiles... */ \
\
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... */ \
\
BLOC(calcul_eventuel_point_courant); \
/* Calculs eventuels d'informations specifiques au point courant... */ \
\
PERMUTATION_EVENTUELLE_DES_COORDONNEES_ET_DES_DIFFERENTIELLES; \
\
LISTER_EVENTUELLEMENT_LES_COORDONNEES_u_v_w_t_DES_POINTS; \
\
CALS(memorisation_1_point_06(SOUS(cx,Xcentre_ESPACE) \
,SOUS(cy,Ycentre_ESPACE) \
,SOUS(cz,Zcentre_ESPACE) \
,dcx \
,dcy \
,dcz \
) \
); \
/* Memorisation du point courant. */ \
Eblock \
) \
) \
Eblock \
/* Calcul et visualisation de l'hyper-volume pour un instant donne avec differentiation */ \
/* numerique. */
#define VISUALISATION_GENERALE_DE_L_HYPER_VOLUME(calcul_des_parametres,calcul_de_l_hyper_volume,Fx,Fy,Fz,Pxyz) \
Bblock \
RE_INITIALISATION_DE_L_HORLOGE; \
/* Depuis que le 19990512152305 a ete mis en place un : */ \
/* */ \
/* INCREMENTATION_DE_L_HORLOGE(dct); */ \
/* */ \
/* apres chaque image, l'initialisation de l'horloge ne doit plus etre faite pour chaque */ \
/* image, mais une seul fois, au tout debut... */ \
\
Komp(numero_de_la_periode_courante_de_la_simulation,nombre_de_periodes_de_la_simulation) \
Bblock \
INITIALISATIONS_RELATIVES_A_CHAQUE_NOUVELLE_IMAGE(numero_de_la_periode_courante); \
/* Initialisations necessaires avant le calcul et la generation de chaque nouvelle image. */ \
\
BLOC(calcul_des_parametres); \
/* Calcul des parametres evoluant au cours de la simulation... */ \
\
BLOC(calcul_de_l_hyper_volume); \
/* Calcul de l'hyper-volume proprement dit... */ \
\
GENERATION_D_UNE_IMAGE_ET_PASSAGE_A_LA_SUIVANTE(BLOC(VIDE;)); \
/* Generation de l'image courante... */ \
\
INCREMENTATION_DE_L_HORLOGE(dct); \
Eblock \
EKom \
\
EDITION_DES_EXTREMA_DES_COORDONNEES_ET_DES_DERIVEES; \
/* Edition facultative des extrema des coordonnees. */ \
Eblock \
/* Calcul et visualisation de l'hyper-volume avec evolution temporelle... */
#define VISUALISATION_DE_L_HYPER_VOLUME_SANS_DIFFERENTIATION(calcul_des_parametres,Fx,Fy,Fz,Pxyz,calcul_pc) \
Bblock \
VISUALISATION_GENERALE_DE_L_HYPER_VOLUME(BLOC(calcul_des_parametres) \
,BLOC(Bblock \
GENERATION_D_UNE_IMAGE_DE_L_HYPER_VOLUME_SANS_DIFFERENTIATION \
(Fx,Fy,Fz \
,BLOC(calcul_pc) \
); \
Eblock \
) \
,Fx,Fy,Fz \
,Pxyz \
); \
Eblock \
/* Calcul sans differentiation et visualisation de l'hyper-volume avec evolution temporelle. */
#define VISUALISATION_DE_L_HYPER_VOLUME_AVEC_DIFFERENCES____(calcul_des_parametres,Fx,Fy,Fz,Pxyz,calcul_pc) \
Bblock \
VISUALISATION_GENERALE_DE_L_HYPER_VOLUME(BLOC(calcul_des_parametres) \
,BLOC(Bblock \
GENER_HYPER_VOLUME_AVEC_DIFFERENCES____(Fx,Fy,Fz \
,BLOC(calcul_pc) \
); \
Eblock \
) \
,Fx,Fy,Fz \
,Pxyz \
); \
Eblock \
/* Calcul avec differentiation et visualisation de l'hyper-volume avec evolution temporelle. */