/*************************************************************************************************************************************/
/* */
/* G E N E R A T I O N D E L ' I M A G E C O U R A N T E : */
/* */
/* */
/* Author of '$xrk/attractor.1A$I' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 1992??????????). */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* G E N E R A T I O N D E L ' I M A G E C O U R A N T E S A N S R E N O R M A L I S A T I O N : */
/* */
/*************************************************************************************************************************************/
#define GENERATION_D_UNE_IMAGE_ET_PASSAGE_A_LA_SUIVANTE(horloge) \
Bblock \
GENERATION_D_UNE_IMAGE_ET_PASSAGE_A_LA_SUIVANTE_AVEC_RENORMALISATION(horloge \
,NO_RENORMALISATION,NO_RENORMALISATION \
,NO_RENORMALISATION,NO_RENORMALISATION \
,NO_RENORMALISATION,NO_RENORMALISATION \
); \
/* Generation de l'image courante avec une renormalisation "neutre" (1/1)... */ \
Eblock \
/* Generation de l'image courante et passage a la suivante avec gestion eventuelle d'une */ \
/* horloge et sans renormalisation finale des niveaux... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* G E N E R A T I O N D E L ' I M A G E C O U R A N T E A V E C R E N O R M A L I S A T I O N : */
/* */
/*************************************************************************************************************************************/
#define GENERATION_D_UNE_IMAGE_ET_PASSAGE_A_LA_SUIVANTE_AVEC_RENORMALISATION(horloge,aROUGE,nROUGE,aVERTE,nVERTE,aBLEUE,nBLEUE) \
Bblock \
Test(IFGE(numero_de_la_periode_courante,numero_de_la_premiere_periode_a_visualiser)) \
Bblock \
/* Cas des periodes a visualiser : */ \
Test(IL_FAUT(editer_le_nombre_de_points_memorises)) \
/* Test introduit le 20200402120129... */ \
Bblock \
CAL2(Prin1("NombreDePointsMemorises=%d\n" \
,nombre_de_points_traites_par_MEMORISATION_DU_POINT_COURANT_COMPLET \
) \
); \
/* Edition introduite le 20200402120129 a des fins de test... */ \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
\
Test(IL_FAUT(lister_la_liste_des_points)) \
/* Tests introduits le 20131214184316... */ \
Bblock \
Test(IL_FAUT(indiquer_si_tous_les_points_ont_ete_listes)) \
Bblock \
Test(EST_FAUX(lister_la_liste_des_points_apres_toutes_les_transformations)) \
Bblock \
Test(IFNE(nombre_de_points_listes_avant_toutes_transformations \
,nombre_de_points_traites_par_MEMORISATION_DU_POINT_COURANT_COMPLET \
) \
) \
Bblock \
PRINT_ERREUR("il y a des points qui n'ont pas ete listes avant les transformations"); \
CAL1(Prer2("(%d points ont ete traites et %d ont ete listes : il faut reduire le zoom)\n" \
,nombre_de_points_traites_par_MEMORISATION_DU_POINT_COURANT_COMPLET \
,nombre_de_points_listes_avant_toutes_transformations \
) \
); \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
ATes \
Bblock \
Test(IFNE(nombre_de_points_listes_apres_toutes_transformations \
,nombre_de_points_traites_par_MEMORISATION_DU_POINT_COURANT_COMPLET \
) \
) \
Bblock \
PRINT_ERREUR("il y a des points qui n'ont pas ete listes apres les transformations"); \
CAL1(Prer2("(%d points ont ete traites et %d ont ete listes : il faut reduire le zoom)\n" \
,nombre_de_points_traites_par_MEMORISATION_DU_POINT_COURANT_COMPLET \
,nombre_de_points_listes_apres_toutes_transformations \
) \
); \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
ETes \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
\
CLIR(nombre_de_points_traites_par_MEMORISATION_DU_POINT_COURANT_COMPLET); \
CLIR(nombre_de_points_listes_avant_toutes_transformations); \
CLIR(nombre_de_points_listes_apres_toutes_transformations); \
/* Et nettoyage pour l'eventuelle iteration suivante... */ \
\
CALCUL_DU_PSEUDO_CENTRE_DE_GRAVITE_ET_TRI_D_UNE_LISTE_DE_POINTS; \
/* Tri eventuel de la liste des points par 'Z' croissants, avec retour prealable sur le */ \
/* dernier point memorise dans la liste... */ \
\
Test(IL_NE_FAUT_PAS(renormaliser_arbitrairement_les_differentielles)) \
/* Le 20221005132232, lors de la mise au point de 'v $xiirv/NFRI.F1' dans laquelle il y */ \
/* avait des niveaux beaucoup trop faibles (sur le "sol" de la scene des pics), je note */ \
/* que 'v $xrv/champs_5.12$I RENORMALISATION_D_UNE_LISTE_DE_POINTS' commence par : */ \
/* */ \
/* Test(IFET(IL_FAUT(visualiser_en_RVB) */ \
/* ,IL_NE_FAUT_PAS(renormaliser_arbitrairement_les_differentielles) */ \
/* ) */ \
/* ) */ \
/* */ \
/* ce qui fait que l'indicateur 'renormaliser_arbitrairement_les_differentielles' est */ \
/* teste deux fois de suite... */ \
Bblock \
RENORMALISATION_D_UNE_LISTE_DE_POINTS; \
/* Renormalisation d'une liste de points lorsque cela est demande, auquel cas, les */ \
/* arguments (aROUGE,nROUGE,aVERTE,nVERTE,aBLEUE,nBLEUE) sont ineffectifs. De plus, il */ \
/* imperatif que 'RENORMALISATION_D_UNE_LISTE_DE_POINTS' soit situe apres l'appel a la */ \
/* procedure 'CALCUL_DU_PSEUDO_CENTRE_DE_GRAVITE_ET_TRI_D_UNE_LISTE_DE_POINTS' a cause */ \
/* de l'instruction : */ \
/* */ \
/* DECR(index_de_rangement_dans_la_liste,I); */ \
/* */ \
/* que cette derniere contient... */ \
/* */ \
/* Je note le 20091024100423 (un peu tard...) que cette renormalisation a lieu apres */ \
/* 'lister_la_liste_des_points' (que cela soit AVANT ou APRES les transformations...). */ \
/* En effet, on trouve dans (AVANT donc) : */ \
/* */ \
/* v $xrv/champs_5.26$I MEMORISATION_DU_POINT_COURANT_COMPLET */ \
/* */ \
/* Test(IFET(IL_FAUT(lister_la_liste_des_points) */ \
/* ,EST_FAUX(lister_la_liste_des_points_apres_toutes_transformations) */ \
/* ) */ \
/* ) */ \
/* */ \
/* et dans (APRES donc) : */ \
/* */ \
/* v $xrv/champs_5.11$I MEMORISATION_D_UN_POINT */ \
/* */ \
/* Test(IFET(IL_FAUT(lister_la_liste_des_points) */ \
/* ,EST_VRAI(lister_la_liste_des_points_apres_toutes_les_transformations) */ \
/* ) */ \
/* ) */ \
/* */ \
/* Or 'MEMORISATION_DU_POINT_COURANT_COMPLET(...)' et 'MEMORISATION_D_UN_POINT(...)' sont */ \
/* appelees AU FUR ET A MESURE de la generation des points et donc bien avant que l'on */ \
/* soit ici pour faire 'RENORMALISATION_D_UNE_LISTE_DE_POINTS'. Ici, il est donc trop */ \
/* tard pour agir sur la liste des points qui a donc deja ete listee dans tous les cas... */ \
/* */ \
/* D'autre part, on n'oubliera pas les trois 'F___DENORMALISE_NIVEAU(...)'s faits dans */ \
/* 'v $xrv/champs_5.11$I LISTER_LA_LISTE_DES_COULEURS_DES_POINTS'... */ \
/* */ \
/* Ce sont ces remarques (precedentes) aux environs du 20170201125655 qui ont conduit */ \
/* a la programmation de 'v $xiirs/.CYLI.31.1.$U' pour l'image 'v $xiirs/CYLI.31'... */ \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
\
VISUALISATION_D_UNE_LISTE_DE_POINTS_AVEC_RENORMALISATION(aROUGE,nROUGE \
,aVERTE,nVERTE \
,aBLEUE,nBLEUE \
,numero_de_la_periode_courante \
); \
/* Visualisation de la liste des points (eventuellement triees). */ \
\
GENERATION_DE_L_EVENTUEL_EFFET_DE_BRUME; \
/* Generation de l'eventuel effet de brume... */ \
\
GENERATION_D_UNE_OU_PLUSIEURS_LISTES(numero_de_la_periode_courante); \
/* Memorisation eventuelle d'une ou plusieurs listes... */ \
\
GENERATION_D_UNE_IMAGE(numero_de_la_periode_courante); \
/* Memorisation eventuelle de l'image courante. */ \
\
GENERATION_D_UN_CHAMP_DE_BRUME(numero_de_la_periode_courante); \
/* Memorisation eventuelle du champ de brume... */ \
Eblock \
ATes \
Bblock \
/* Cas des periodes a ne pas visualiser : */ \
Test(IL_FAUT(generer_les_trainees)) \
Bblock \
PRINT_ATTENTION("la generation des trainees est fausse, les premieres images n'etant pas calculees"); \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
ETes \
\
BLOC(horloge); \
/* Gestion d'une eventuelle horloge... */ \
PASSAGE_A_L_IMAGE_SUIVANTE; \
/* Et passage a l'image suivante... */ \
Eblock \
/* Generation de l'image courante et passage a la suivante avec gestion eventuelle d'une */ \
/* horloge et avec renormalisation finale des niveaux... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* G E N E R A T I O N D E L ' I M A G E C O U R A N T E A V E C R E N O R M A L I S A T I O N : */
/* */
/*************************************************************************************************************************************/
#define PASSAGE_A_L_IMAGE_SUIVANTE \
Bblock \
INCR(numero_de_la_periode_courante,I); \
/* Et passage a l'image suivante... */ \
Eblock \
/* Passage a l'image suivante... */