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