/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        V I S U A L I S A T I O N   D E   C I N Q   C H A M P S   S C A L A I R E S   S I M U L T A N E M E N T  :                 */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xrv/champs_5.10$K' :                                                                                           */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 1992??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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_CPP_____POUR_LES_Iload_NE_PAS_VERIFIER_LES_MULTIPLES_UTILISATIONS_DE_L_IMAGE_____ImageA1
@define   PRAGMA_CPP_____POUR_LES_Iload_NE_PAS_VERIFIER_LES_MULTIPLES_UTILISATIONS_DE_L_IMAGE_____ImageA2
@define   PRAGMA_CPP_____POUR_LES_Iload_NE_PAS_VERIFIER_LES_MULTIPLES_UTILISATIONS_DE_L_IMAGE_____ImageA3
@define   PRAGMA_CPP_____POUR_LES_Iload_NE_PAS_VERIFIER_LES_MULTIPLES_UTILISATIONS_DE_L_IMAGE_____ImageA4
@define   PRAGMA_CPP_____POUR_LES_Iload_NE_PAS_VERIFIER_LES_MULTIPLES_UTILISATIONS_DE_L_IMAGE_____ImageA5
                                        /* Introduit le 20060124092235.                                                              */

@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
#include  image_image_IMAGESF_EXT
                                        /* Introduit le 20111019181829...                                                            */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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  xrv/dimensionnement.01.vv.I"
                                        /* Introduit le 20111209173601...                                                            */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N S   D E   L A   C O M P I L A T I O N  :                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   __VERSION__GENERATION_D_UN_NUCLEON                                                                                            \
                                        /* Et oui, car on veut faire croire que l'on est dans '$xrq/nucleon.L0$K'...                 */

#include  xrq/nucleon.L1.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N S   D E S   C O N S T A N T E S   U N I V E R S E L L E S  :                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrq/nucleon.L2.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N S   D U   T E M P S  :                                                                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrq/nucleon.L3.I"
#include  xrv/particule.41.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 )  :                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Xcentre_ESPACE                                                                                                                \
                    FLOT(k___Xmin)
#define   Ycentre_ESPACE                                                                                                                \
                    FLOT(k___Ymin)
#define   Zcentre_ESPACE                                                                                                                \
                    FLOT(k___Zmin)
                                        /* Definition de l'origine (ou "centre") de l'espace physique. En fait, elles ne servent     */
                                        /* qu'a recentrer l'objet lors de la visualisation, et d'autre part, elles doivent           */
                                        /* etre des constantes absolues a cause de :                                                 */
                                        /*                                                                                           */
                                        /*                  DEFINITION_D_UNE_POSITION(position_indefinie,Xcentre_ESPACE,...);     \  */
                                        /*                                                                                           */
                                        /* dans '$xrq/nucleon.L5$I'.                                                                 */

#define   Xtranslation                                                                                                                  \
                    MOIT(dimX)
#define   Ytranslation                                                                                                                  \
                    MOIT(dimY)
#define   Ztranslation                                                                                                                  \
                    MOIT(dimZ)
                                        /* Definition des demi-longueurs des trois axes.                                             */

#define   hXmin_ESPACE                                                                                                                  \
                    SOUS(Xmin,Xtranslation)
#define   hYmin_ESPACE                                                                                                                  \
                    SOUS(Ymin,Ytranslation)
#define   hZmin_ESPACE                                                                                                                  \
                    SOUS(Zmin,Ztranslation)
                                        /* Definition du "coin" inferieur-gauche-arriere de l'espace physique.                       */

#define   hXmax_ESPACE                                                                                                                  \
                    ADD2(Xmin,Xtranslation)
#define   hYmax_ESPACE                                                                                                                  \
                    ADD2(Ymin,Ytranslation)
#define   hZmax_ESPACE                                                                                                                  \
                    ADD2(Zmin,Ztranslation)
                                        /* Definition du "coin" superieur-droite-avant de l'espace physique.                         */

#include  xrk/attractor.12.I"
#include  xrk/attractor.1D.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N S   D E S   D I F F E R E N T S   E S P A C E S  :                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrq/nucleon.L4.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        G E S T I O N   D E   L A   B R U M E   E V E N T U E L L E  :                                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrv/champs_5.16.I"

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

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P O U R   S E   S I M P L I F I E R   L A   V I E  :                                                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrq/nucleon.L5.I"
#include  xrq/nucleon.L6.I"
#include  xrq/nucleon.LB.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        A N T I - A L I A S I N G  :                                                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrq/nucleon.LP.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N S   D E   L A   S O U R C E   L U M I N E U S E  :                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrq/nucleon.LQ.I"

#include  xrv/champs_5.21.I"
                                        /* Pour corriger les initialisations precedentes. ATTENTION, a cause de la derivation        */
                                        /* formelle d'ordre superieur a 1, ces 'undef's ne peuvent etre que dans un fichier          */
                                        /* d'include...                                                                              */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N S   D E S   F O N D U S  :                                                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrq/nucleon.LR.2.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N S   D E   L A   G E S T I O N   D U   " D E P T H - C U E I N G "  :                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   AJUSTER_AUTOMATIQUEMENT_PROFONDEUR_MINIMALE_ET_PROFONDEUR_MAXIMALE                                                            \
                    VRAI                                                                                                                \
                                        /* Afin d'ajuster automatiquement lex extrema de la troisieme coordonnee...                  */
#define   PROFONDEUR_MINIMALE_DE_TRONCATION                                                                                             \
                    GRO2(FRA4(COORDONNEE_BARYCENTRIQUE_MAXIMALE))                                                                       \
                                        /* Afin de ne pas avoir trop de depth-cueing...                                              */

#include  xrq/nucleon.Ld.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N S   D E   L A   G E S T I O N   D U   Z O O M  :                                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrq/nucleon.Le.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N S   D E   L A   V I S U A L I S A T I O N   D ' U N E   S P H E R E  :                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrv/champs_5.1C.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N S   D E S   T R A N S L A T I O N S   E T   R O T A T I O N S  :                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrq/nucleon.LT.2.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        G E S T I O N   D E S   C O U L E U R S  :                                                                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrv/champs_5.15.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        G E S T I O N   D E   L A   L I S T E   D E S   P O I N T S   D E S T I N E E   A   F A I R E   U N   T R I                */
/*        S U R   L A   C O O R D O N N E E   ' Z '   D ' A R R I E R E   E N   A V A N T   P O U R   L U T T E R                    */
/*        E F F I C A C E M E N T   C O N T R E   L ' A L I A S I N G  :                                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrv/champs_5.11.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N T I O N   D E S   I M A G E S  :                                                                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   ImageA_Z____                                                                                                                  \
                    ImageA1
#define   IFmageA_Z____                                                                                                                 \
                    IFmageA1

#define   ImageA_RAYON                                                                                                                  \
                    ImageA2
#define   IFmageA_RAYON                                                                                                                 \
                    IFmageA2

#define   ImageA_ROUGE                                                                                                                  \
                    ImageA3
#define   IFmageA_ROUGE                                                                                                                 \
                    IFmageA3

#define   ImageA_VERTE                                                                                                                  \
                    ImageA4
#define   IFmageA_VERTE                                                                                                                 \
                    IFmageA4

#define   ImageA_BLEUE                                                                                                                  \
                    ImageA5
#define   IFmageA_BLEUE                                                                                                                 \
                    IFmageA5
                                        /* Definitions introduites le 20111019172810...                                              */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N S   D E S   M O D E S   D E   R E P R E S E N T A T I O N   D E S   C H A M P S  :                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   PAS_HORIZONTAL                                                                                                                \
                    GRO8(PasX)
#define   PAS_VERTICAL                                                                                                                  \
                    GRO8(PasY)
DEFV(Local,DEFV(Int,INIT(pas_horizontal,PAS_HORIZONTAL)));
DEFV(Local,DEFV(Int,INIT(pas_vertical,PAS_VERTICAL)));
                                        /* Pas de sous-echantillonnage des champs (introduit ici sous forme de 'Int's le             */
                                        /* 20111019191648).                                                                          */

#define   DIMENSION_DE_LA_MAILLE_X                                                                                                      \
                    UN
#define   DIMENSION_DE_LA_MAILLE_Y                                                                                                      \
                    UN
DEFV(Local,DEFV(Int,INIT(dimension_de_la_maille_X,DIMENSION_DE_LA_MAILLE_X)));
DEFV(Local,DEFV(Int,INIT(dimension_de_la_maille_Y,DIMENSION_DE_LA_MAILLE_Y)));
#define   TRANSLATION_DE_LA_MAILLE_X                                                                                                    \
                    ZERO
#define   TRANSLATION_DE_LA_MAILLE_Y                                                                                                    \
                    ZERO
DEFV(Local,DEFV(Int,INIT(translation_de_la_maille_X,TRANSLATION_DE_LA_MAILLE_X)));
DEFV(Local,DEFV(Int,INIT(translation_de_la_maille_Y,TRANSLATION_DE_LA_MAILLE_Y)));
                                        /* Introduits le 20111020075526 afin de pouvoir mailler la surface...                        */

#define   CHAMP_X(x,y)                                                                                                                  \
                    FLOT(SOUS(COXR(x),Xtranslation))                                                                                    \
                                        /* Definition de la coordonnee 'X'.                                                          */
#define   CHAMP_Y(x,y)                                                                                                                  \
                    FLOT(SOUS(COYR(y),Ytranslation))                                                                                    \
                                        /* Definition de la coordonnee 'Y'.                                                          */

DEFV(Local,DEFV(Logical,INIT(denormaliser_les_Zs_non_standards,VRAI)));
                                        /* Introduit le 20111020094530 afin de savoir s'il faut denormaliser ou pas les 'Z's         */
                                        /* non standards...                                                                          */
#define   FACTEUR_DU_Z                                                                                                                  \
                    FU
DEFV(Local,DEFV(Float,INIT(facteur_du_Z,FACTEUR_DU_Z)));
                                        /* Facteur permettant de "scaler" la troisieme dimension...                                  */
#define   CHAMP_Z(x,y)                                                                                                                  \
                    MUL2(facteur_du_Z                                                                                                   \
                        ,COND(EST_VRAI(les_images_sont_standards)                                                                       \
                             ,FLOT(SOUS(COZR(_cDENORMALISE_OZ(______NORMALISE_NIVEAU(load_point(ImageA_Z____,x,y)))),Ztranslation))     \
                             ,COND(IL_FAUT(denormaliser_les_Zs_non_standards)                                                           \
                                  ,SOUS(_cDENORMALISE_OZ(loadF_point(IFmageA_Z____,x,y)),Ztranslation)                                  \
                                  ,SOUS(loadF_point(IFmageA_Z____,x,y),_____lNORMALISE_OZ(Ztranslation))                                \
                                   )                                                                                                    \
                              )                                                                                                         \
                         )                                                                                                              \
                                        /* Definition de la coordonnee 'Z'.                                                          */

#include  xrv/champs_5.1B.I"

#define   RAYON_DE_VISUALISATION                                                                                                        \
                    FLOT(TRENTE_DEUX)                                                                                                   \
                                        /* Introduit le 20060311095953 a cause de 'v $xrv/champs_5.1A$I PROKESS_ARGUMENT_F' qui      */ \
                                        /* en a besoin depuis le 20060224121036...                                                   */

#define   FACTEUR_DU_RAYON_DE_VISUALISATION                                                                                             \
                    DIVI(RAYON_DE_VISUALISATION,FU)
DEFV(Local,DEFV(Float,INIT(facteur_du_rayon_de_visualisation,FACTEUR_DU_RAYON_DE_VISUALISATION)));
                                        /* Facteur permettant de "scaler" le rayon des spheres. Il donne aussi le rayon maximal des  */
                                        /* spheres de visualisation...                                                               */
#define   CHAMP_RAYON(x,y)                                                                                                              \
                    RAYON_DES_SPHERES_REPRESENTATIVES(facteur_du_rayon_de_visualisation                                                 \
                                                     ,COND(EST_VRAI(les_images_sont_standards)                                          \
                                                          ,______NORMALISE_NIVEAU(load_point(ImageA_RAYON,x,y))                         \
                                                          ,loadF_point(IFmageA_RAYON,x,y)                                               \
                                                           )                                                                            \
                                                      )                                                                                 \
                                        /* Definition du rayon des spheres.                                                          */

DEFV(Local,DEFV(Logical,INIT(normaliser_les_niveaux_non_standards,VRAI)));
                                        /* Introduit le 20111020093809 afin de savoir s'il faut renormaliser ou pas les niveaux      */
                                        /* non standards...                                                                          */

#include  xrv/champs_5.1D.I"
                                        /* Introduit le 20111020095504 a cause de la presence de 'OPC1(...)' dans la definition      */
                                        /* de 'CHAMP_ROUGE(..)', 'CHAMP_VERTE(..)' et 'CHAMP_BLEUE(..)'.                             */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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.24.I"

#include  xrv/champs_5.26.I"

BFonctionI

DEFV(Local,DEFV(FonctionI,memorisation_1_point_02(X,Y)))
DEFV(Argument,DEFV(Int,X));
DEFV(Argument,DEFV(Int,Y));
                                        /* Definition de la position {x,y} du point courant dans les coordonnees des champs.         */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
#include  xrk/attractor.15.I"
                                        /* Donnees utiles...                                                                         */

     INIT_ERROR;
     /*..............................................................................................................................*/
     MEMORISATION_DU_POINT_COURANT_COMPLET(CHAMP_X(X,Y),CHAMP_Y(X,Y),CHAMP_Z(X,Y)
                                          ,CHAMP_RAYON(X,Y)
                                          ,CHAMP_ROUGE(X,Y),CHAMP_VERTE(X,Y),CHAMP_BLEUE(X,Y)
                                           );
                                        /* Memorisation du point courant , mais uniquement s'il est visible en fonction des          */
                                        /* conditions de visualisation...                                                            */
     RETU_ERROR;
     Eblock

EFonctionI

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        F O N C T I O N   D E   V I S U A L I S A T I O N   D U   P O I N T   C O U R A N T  :                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrv/champs_5.12.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        G E S T I O N   D E   L A   V I S U A L I S A T I O N   S T E R E O S C O P I Q U E  :                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrv/champs_5.13.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N S   D E   L ' I N T E R P O L A T I O N   D E S   P A R A M E T R E S  :                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrq/nucleon.LX.2.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  xrv/champs_5.17.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D U   S E U I L L A G E  :                                                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   LE_SEUILLAGE_EST_ALEATOIRE                                                                                                    \
                    FAUX                                                                                                                \
                                        /* Le seuillage est-il aleatoire ('VRAI') ou deterministe ('FAUX') et lie donc aux           */ \
                                        /* parametres 'SEUIL_DE_MASQUAGE_INFERIEUR' et 'SEUIL_DE_MASQUAGE_SUPERIEUR'.                */

#define   GRAINE                                                                                                                        \
                    DEUX                                                                                                                \
                                        /* Graine initiale.                                                                          */
#define   FACTEUR_DES_NIVEAUX                                                                                                           \
                    FU                                                                                                                  \
                                        /* Seuil implicite de generation des points.                                                 */

#define   SEUIL_DE_MASQUAGE_INFERIEUR                                                                                                   \
                    FLOT__NOIR                                                                                                          \
                                        /* Seuil de masquage en-deca duquel les points des images 'nom_imageA_Z____' sont ignores.   */
#define   SEUIL_DE_MASQUAGE_SUPERIEUR                                                                                                   \
                    FLOT__BLANC                                                                                                         \
                                        /* Seuil de masquage au-dela duquel les points des images 'nom_imageA_Z____' sont ignores.   */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        A C C E S   A U X   I M A G E S  :                                                                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   SEQUENCES_EVOLUTIVES                                                                                                          \
                    FAUX
DEFV(Local,DEFV(Logical,INIT(sequences_evolutives,SEQUENCES_EVOLUTIVES)));
                                        /* Indicateur precisant si les images 'RAYON', 'ROUGE', 'VERTE' et 'BLEUE' evoluent au       */
                                        /* au cours du temps ('VRAI') ou restent "constantes" ('FAUX')...                            */

#define   ACCES_AUX_IMAGES(image,imageF,nom_d_image,charger_une_sequence_evolutive,numero_d_image)                                      \
                                        /* L'argument 'imageF' a ete introduit le 20111019172810...                                  */ \
                    Bblock                                                                                                              \
                    Test(IFNE_chaine(nom_d_image,NOM_PIPE_Local))                                                                       \
                                        /* ATTENTION, jusqu'au 1994120700 il y avait ici :                                           */ \
                                        /*                                                                                           */ \
                                        /*                  Test(IFNE_chaine(nom_d_image,NOM_PIPE))                                  */ \
                                        /*                                                                                           */ \
                                        /* ce qui semble faux...                                                                     */ \
                         Bblock                                                                                                         \
                         Test(IL_NE_FAUT_PAS(sequences_evolutives))                                                                     \
                              Bblock                                                                                                    \
                              CALi(gIload_image(les_images_sont_standards,image,imageF,nom_d_image));                                   \
                                        /* Chargement d'une image non numerotee...                                                   */ \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              Test(IL_FAUT(charger_une_sequence_evolutive))                                                             \
                                   Bblock                                                                                               \
                                   DEFV(CHAR,INIT(POINTERc(nom_image),NOM_UNDEF));                                                      \
                                   EGAL(nom_image                                                                                       \
                                       ,chain_Aconcaten2_sauf_nom_pipe(nom_d_image                                                      \
                                                                      ,chain_numero_modulo(NUMERO_D_IMAGE(numero_d_image)               \
                                                                                          ,nombre_de_chiffres                           \
                                                                                           )                                            \
                                                                       )                                                                \
                                        );                                                                                              \
                                        /* Le 20221212121023, 'chain_numero_modulo(...)' a remplace 'chain_numero(...)'...           */ \
                                                                                                                                        \
                                   CALi(Iload_image(image,nom_image));                                                                  \
                                        /* Chargement d'une image numerotee...                                                       */ \
                                   CALZ_FreCC(nom_image);                                                                               \
                                   Eblock                                                                                               \
                              ATes                                                                                                      \
                                   Bblock                                                                                               \
                                   Eblock                                                                                               \
                              ETes                                                                                                      \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Acces a une image lorsque cela est necessaire...                                          */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        N U M E R O T A G E   D E S   I M A G E S  :                                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   NUMERO_D_IMAGE(numero_d_image)                                                                                                \
                    numero_d_image                                                                                                      \
                                        /* Fonction de calcul du numero de l'image courante...                                       */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        V I S U A L I S A T I O N   D E   C I N Q   C H A M P S   S C A L A I R E S   S I M U L T A N E M E N T  :                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(CHAR,INIT(POINTERc(nom_imageA_Z____),NOM_PIPE_Local));
     DEFV(CHAR,INIT(POINTERc(nom_imageA_RAYON),NOM_PIPE_Local));
     DEFV(CHAR,INIT(POINTERc(nom_imageA_ROUGE),NOM_PIPE_Local));
     DEFV(CHAR,INIT(POINTERc(nom_imageA_VERTE),NOM_PIPE_Local));
     DEFV(CHAR,INIT(POINTERc(nom_imageA_BLEUE),NOM_PIPE_Local));
                                        /* Nom des cinq champs a visualiser.                                                         */
     DEFV(Logical,INIT(le_seuillage_est_aleatoire,LE_SEUILLAGE_EST_ALEATOIRE));
                                        /* Le seuillage est-il aleatoire ('VRAI') ou deterministe ('FAUX') et lie donc aux           */
                                        /* parametres 'SEUIL_DE_MASQUAGE_INFERIEUR' et 'SEUIL_DE_MASQUAGE_SUPERIEUR'.                */
     DEFV(Int,INIT(graine,GRAINE));
                                        /* Graine du generateur aleatoire...                                                         */
     DEFV(Float,INIT(facteur_des_niveaux,FACTEUR_DES_NIVEAUX));
                                        /* Pour calculer le seuil de generation aleatoire a partir d'un niveau.                      */
     DEFV(Float,INIT(borne_inferieure,PROBABILITE_NULLE));
                                        /* Borne inferieure du generateur,                                                           */
     DEFV(Float,INIT(borne_superieure,PROBABILITE_UNITE));
                                        /* Borne superieure du generateur.                                                           */
     DEFV(pointI_2D,point_courant);
                                        /* Point (entier) courant.                                                                   */
     DEFV(genere_Float,INIT(seuil_de_masquage_inferieur,SEUIL_DE_MASQUAGE_INFERIEUR));
                                        /* Seuil de masquage en-deca duquel les points des images 'nom_imageA_Z____' sont ignores.   */
     DEFV(genere_Float,INIT(seuil_de_masquage_superieur,SEUIL_DE_MASQUAGE_SUPERIEUR));
                                        /* Seuil de masquage au-dela duquel les points des images 'nom_imageA_Z____' sont ignores.   */
     /*..............................................................................................................................*/
     INITIALISATIONS_GENERALES;
                                        /* Initialisations generales faites au tout debut...                                         */

#include  xrv/champs_5.1A.I"

     GET_ARGUMENTSv(nombre_d_arguments
                   ,BLOC(PROCESS_ARGUMENTS_GEOMETRIQUES;

                         GET_ARGUMENT_L("evolution=",sequences_evolutives);

                         GET_ARGUMENT_C("cZ=",nom_imageA_Z____);
                         GET_ARGUMENT_C("cRAYON=",nom_imageA_RAYON);
                         GET_ARGUMENT_C("cROUGE=",nom_imageA_ROUGE);
                         GET_ARGUMENT_C("cVERTE=",nom_imageA_VERTE);
                         GET_ARGUMENT_C("cBLEUE=",nom_imageA_BLEUE);

                         GET_ARGUMENT_L("standard=",les_images_sont_standards);
                                        /* Argument introduit le 20111019172810...                                                   */

                         PROCESS_ARGUMENTS_DE_VISUALISATION_PRIMAIRES;

                         GET_ARGUMENT_L("aleatoire=",le_seuillage_est_aleatoire);
                         GET_ARGUMENT_I("graine=",graine);
                         GET_ARGUMENT_L("affiner_rdn=",rdnIFnD_____affiner_la_generation);
                         GET_ARGUMENT_L("iterer_rdn=",rdnIFnD_____iterer_la_generation);
                         GET_ARGUMENT_F("facteurN=",facteur_des_niveaux);
                         GET_ARGUMENT_F("seuilI=""seuil=""masqueI=""masque=",seuil_de_masquage_inferieur);
                         GET_ARGUMENT_F("seuilS=""masqueS=",seuil_de_masquage_superieur);
                                        /* Les seuils sont passes de 'GET_ARGUMENT_P(...)' a 'GET_ARGUMENT_F(...)' le                */
                                        /* 20111019174620...                                                                         */

                         GET_ARGUMENT_F("facteurZ=",facteur_du_Z);

                         GET_ARGUMENT_I("pas_horizontal=""pash=",pas_horizontal);
                         GET_ARGUMENT_I("pas_vertical=""pasv=",pas_vertical);
                                        /* Arguments introduits le 20111019183320...                                                 */

                         GET_ARGUMENT_I("dimension_maille_X=""dmX=",dimension_de_la_maille_X);
                         GET_ARGUMENT_I("dimension_maille_Y=""dmY=",dimension_de_la_maille_Y);
                         GET_ARGUMENT_I("translation_maille_X=""tmX=",translation_de_la_maille_X);
                         GET_ARGUMENT_I("translation_maille_Y=""tmY=",translation_de_la_maille_Y);
                                        /* Arguments introduits le 20111020075526...                                                 */

                         PROCESS_ARGUMENTS_DE_DEFINITION_DU_RAYON_DES_SPHERES_REPRESENTATIVES;

                         GET_ARGUMENT_F("facteurR=",facteur_du_rayon_de_visualisation);

                         GET_ARGUMENT_L("denormaliser_Z_non_standards=""dZ=",denormaliser_les_Zs_non_standards);
                                        /* Argument introduit le 20111020094530...                                                   */
                         GET_ARGUMENT_L("normaliser_niveaux_non_standards=""nn=",normaliser_les_niveaux_non_standards);
                                        /* Argument introduit le 20111020093809...                                                   */
                         )
                    );

     SET_ECHANTILLONNAGE(pas_horizontal,pas_vertical);
                                        /* Introduit le 20111019190915...                                                            */

#include  xrv/champs_5.19.I"
                                        /* Pour eviter le message :                                                                  */
                                        /*                                                                                           */
                                        /*                  Static function is not referenced.                                       */
                                        /*                                                                                           */
                                        /* sur 'SYSTEME_ES9000_AIX_CC'...                                                            */

     Test(IFGT(nombre_de_periodes_de_la_simulation,NOMBRE_MAXIMAL_DE_PERIODES_DE_LA_SIMULATION))
          Bblock
          PRINT_ERREUR("la simulation demandee est trop longue");
          EGAL(nombre_de_periodes_de_la_simulation,NOMBRE_MAXIMAL_DE_PERIODES_DE_LA_SIMULATION);
                                        /* Et on seuille le nombre de periodes...                                                    */
          Eblock
     ATes
          Bblock
          Eblock
     ETes

     DEFINITION_DE_L_ESPACE_PHYSIQUE;
                                        /* Initialisation de la definition de l'espace physique apres que les dimensions des images  */
                                        /* aient ete definies...                                                                     */

     Test(EST_VRAI(le_seuillage_est_aleatoire))
          Bblock
          INITIALISATION_POINT_2D(point_courant,Xmin,Ymin);
          CALS(rdnI2D(ADRESSE(point_courant),UNDEF,RDN_INIT,borne_inferieure,borne_superieure));
                                        /* Initialisation du generateur aleatoire.                                                   */
          Eblock
     ATes
          Bblock
          Eblock
     ETes

     CALi(gIIinitialisation(les_images_sont_standards,ImageA_Z____,IFmageA_Z____,BLANC,FU));
     CALi(gIIinitialisation(les_images_sont_standards,ImageA_RAYON,IFmageA_RAYON,BLANC,FU));
     CALi(gIIinitialisation(les_images_sont_standards,ImageA_ROUGE,IFmageA_ROUGE,BLANC,FLOT__BLANC));
     CALi(gIIinitialisation(les_images_sont_standards,ImageA_VERTE,IFmageA_VERTE,BLANC,FLOT__BLANC));
     CALi(gIIinitialisation(les_images_sont_standards,ImageA_BLEUE,IFmageA_BLEUE,BLANC,FLOT__BLANC));
                                        /* Ainsi, si l'un des champs n'est pas defini, il fournira une contribution maximale...      */

     ACCES_AUX_IMAGES(ImageA_Z____,IFmageA_Z____,nom_imageA_Z____,FAUX,UNDEF);
     ACCES_AUX_IMAGES(ImageA_RAYON,IFmageA_RAYON,nom_imageA_RAYON,FAUX,UNDEF);
     ACCES_AUX_IMAGES(ImageA_ROUGE,IFmageA_ROUGE,nom_imageA_ROUGE,FAUX,UNDEF);
     ACCES_AUX_IMAGES(ImageA_VERTE,IFmageA_VERTE,nom_imageA_VERTE,FAUX,UNDEF);
     ACCES_AUX_IMAGES(ImageA_BLEUE,IFmageA_BLEUE,nom_imageA_BLEUE,FAUX,UNDEF);
                                        /* Acces aux images non evolutives...                                                        */

     Komp(numero_de_la_periode_courante_de_la_simulation,nombre_de_periodes_de_la_simulation)
          Bblock
          ACCES_AUX_IMAGES(ImageA_Z____,IFmageA_Z____,nom_imageA_Z____,VRAI,numero_de_la_periode_courante_de_la_simulation);
          ACCES_AUX_IMAGES(ImageA_RAYON,IFmageA_RAYON,nom_imageA_RAYON,VRAI,numero_de_la_periode_courante_de_la_simulation);
          ACCES_AUX_IMAGES(ImageA_ROUGE,IFmageA_ROUGE,nom_imageA_ROUGE,VRAI,numero_de_la_periode_courante_de_la_simulation);
          ACCES_AUX_IMAGES(ImageA_VERTE,IFmageA_VERTE,nom_imageA_VERTE,VRAI,numero_de_la_periode_courante_de_la_simulation);
          ACCES_AUX_IMAGES(ImageA_BLEUE,IFmageA_BLEUE,nom_imageA_BLEUE,VRAI,numero_de_la_periode_courante_de_la_simulation);
                                        /* Acces aux images evolutives...                                                            */

          PUSH_ECHANTILLONNAGE;
          SET_ECHANTILLONNAGE(PasX,PasY);

          INITIALISATIONS_RELATIVES_A_CHAQUE_NOUVELLE_IMAGE(numero_de_la_periode_courante);
                                        /* Initialisations necessaires avant le calcul et la generation de chaque nouvelle image.    */

          PULL_ECHANTILLONNAGE;

          begin_image
               Bblock
               Test(IFOU(DIVISIBLE(ADD2(X,translation_de_la_maille_X),dimension_de_la_maille_X)
                        ,DIVISIBLE(ADD2(Y,translation_de_la_maille_Y),dimension_de_la_maille_Y)
                         )
                    )
                                        /* Test introduit le 20111020075526 afin de pouvoir mailler la surface...                    */
                    Bblock
                    Test(EST_VRAI(le_seuillage_est_aleatoire))
                         Bblock
                         INITIALISATION_POINT_2D(point_courant,X,Y);
                         Eblock
                    ATes
                         Bblock
                         Eblock
                    ETes

                    Test(IFOU(IFET(EST_VRAI(le_seuillage_est_aleatoire)
                                  ,IFLE(rdnI2D(ADRESSE(point_courant)
                                              ,graine
                                              ,RDN_GENERE
                                              ,FLOT__ARGUMENT_ABSENT,FLOT__ARGUMENT_ABSENT
                                               )
                                       ,MUL2(facteur_des_niveaux
                                            ,COND(EST_VRAI(les_images_sont_standards)
                                                 ,______NORMALISE_NIVEAU(load_point(ImageA_Z____,X,Y))
                                                 ,loadF_point(IFmageA_Z____,X,Y)
                                                  )
                                             )
                                        )
                                   )
                             ,IFET(EST_FAUX(le_seuillage_est_aleatoire)
                                  ,IFOU(IFET(EST_VRAI(les_images_sont_standards)
                                            ,IFINff(load_point(ImageA_Z____,X,Y)
                                                   ,GENP(seuil_de_masquage_inferieur)
                                                   ,GENP(seuil_de_masquage_superieur)
                                                    )
                                             )
                                       ,IFET(EST_FAUX(les_images_sont_standards)
                                            ,IFINff(loadF_point(IFmageA_Z____,X,Y)
                                                   ,seuil_de_masquage_inferieur
                                                   ,seuil_de_masquage_superieur
                                                    )
                                             )
                                        )
                                   )
                              )
                         )
                         Bblock
                         CALi(memorisation_1_point_02(X,Y));
                                        /* Memorisation du point courant apres toutes les transformations geometriques, et selon     */
                                        /* les coordonnees de visualisation, mais uniquement s'il est dans la plage definie par      */
                                        /* les seuils de masquage...                                                                 */
                         Eblock
                    ATes
                         Bblock
                         Eblock
                    ETes
                    Eblock
               ATes
                    Bblock
                    Eblock
               ETes
               Eblock
          end_image

          PUSH_ECHANTILLONNAGE;
          SET_ECHANTILLONNAGE(PasX,PasY);

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

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

          PULL_ECHANTILLONNAGE;

          GENERATION_D_UNE_IMAGE(numero_de_la_periode_courante);
                                        /* Memorisation de l'image courante.                                                         */
          INCR(numero_de_la_periode_courante,I);
                                        /* Et passage a l'image suivante...                                                          */
          Eblock
     EKom

     RETU_Commande;
     Eblock
ECommande



Copyright © Jean-François COLONNA, 2019-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2019-2024.