/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        F O N C T I O N S   D E   B A S E   A   D E U X   A L B U M S  :                                                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                    Ce fichier contient toutes les fonctions                                                                       */
/*                  de base de gestion et de manipulation de                                                                         */
/*                  deux albums raster, quelle que soit la definition.                                                               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xiii/di_album$DEF' :                                                                                           */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 19930000000000).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E P L A C E M E N T   D ' U N   A L B U M  :                                                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   AMOVE(albumR,albumA)                                                                                                          \
                    Bblock                                                                                                              \
                    begin_album                                                                                                         \
                         Bblock                                                                                                         \
                         Astore_point(Aload_point(albumA,X,Y,Z),albumR,X,Y,Z);                                                          \
                         Eblock                                                                                                         \
                    end_album                                                                                                           \
                    Eblock                                                                                                              \
                                        /* Introduit le 20160815082213 a cause des references a 'Amove(...)' qui sont faites         */ \
                                        /* dans plusieurs blocs different de 'v $xiii/di_album$FON AMOVE'...                         */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        N O R M A L I S A T I O N   D ' U N   A L B U M   N O N   S T A N D A R D  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   EPSILON_DE_SEUILLAGE_INFERIEUR_PAR_RAPPORT_AU_NIVEAU_ORIGINE_POUR_AFnormalisation                                             \
                    EPSILON_DE_SEUILLAGE_INFERIEUR_PAR_RAPPORT_AU_NIVEAU_ORIGINE_POUR_IFnormalisation                                   \
                                        /* Pour eviter des "underflows" dans 'AFnormalisation(...)' (intrdouit le 20100504153106).   */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E S   P E R M U T A T I O N S   D E S   D I M E N S I O N S   D ' U N   A L B U M  :               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   PERMUTATION_XYZ_DES_DIMENSIONS_D_UN_ALBUM                                                                                     \
                    "XYZ"                                                                                                               \
                                        /* Nom de la permutation {X,Y,Z}.                                                            */
#define   PERMUTATION_XZY_DES_DIMENSIONS_D_UN_ALBUM                                                                                     \
                    "XZY"                                                                                                               \
                                        /* Nom de la permutation (X,Z,Y).                                                            */
#define   PERMUTATION_YZX_DES_DIMENSIONS_D_UN_ALBUM                                                                                     \
                    "YZX"                                                                                                               \
                                        /* Nom de la permutation (Y,Z,X).                                                            */
#define   PERMUTATION_YXZ_DES_DIMENSIONS_D_UN_ALBUM                                                                                     \
                    "YXZ"                                                                                                               \
                                        /* Nom de la permutation (Y,X,Z).                                                            */
#define   PERMUTATION_ZXY_DES_DIMENSIONS_D_UN_ALBUM                                                                                     \
                    "ZXY"                                                                                                               \
                                        /* Nom de la permutation (Z,X,Y).                                                            */
#define   PERMUTATION_ZYX_DES_DIMENSIONS_D_UN_ALBUM                                                                                     \
                    "ZYX"                                                                                                               \
                                        /* Nom de la permutation (Z,Y,X).                                                            */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O U P E   R E L A T I V E M E N T   Q U E L C O N Q U E   D ' U N   A L B U M                                            */
/*        A   L ' A I D E   D ' U N   P O L Y N O M E   E N   { X , Y , Z }   D U   T R O I S I E M E   D E G R E  :                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HORNER_3_03__COUPE_QUELCONQUE_ALBUM(x,y,z)                                                                                    \
                    HORNER_3_03(x,y,z                                                                                                   \
                               ,Acoupe_quelconque_____a333                                                                              \
                               ,Acoupe_quelconque_____a332                                                                              \
                               ,Acoupe_quelconque_____a331                                                                              \
                               ,Acoupe_quelconque_____a330                                                                              \
                               ,Acoupe_quelconque_____a323                                                                              \
                               ,Acoupe_quelconque_____a322                                                                              \
                               ,Acoupe_quelconque_____a321                                                                              \
                               ,Acoupe_quelconque_____a320                                                                              \
                               ,Acoupe_quelconque_____a313                                                                              \
                               ,Acoupe_quelconque_____a312                                                                              \
                               ,Acoupe_quelconque_____a311                                                                              \
                               ,Acoupe_quelconque_____a310                                                                              \
                               ,Acoupe_quelconque_____a303                                                                              \
                               ,Acoupe_quelconque_____a302                                                                              \
                               ,Acoupe_quelconque_____a301                                                                              \
                               ,Acoupe_quelconque_____a300                                                                              \
                               ,Acoupe_quelconque_____a233                                                                              \
                               ,Acoupe_quelconque_____a232                                                                              \
                               ,Acoupe_quelconque_____a231                                                                              \
                               ,Acoupe_quelconque_____a230                                                                              \
                               ,Acoupe_quelconque_____a223                                                                              \
                               ,Acoupe_quelconque_____a222                                                                              \
                               ,Acoupe_quelconque_____a221                                                                              \
                               ,Acoupe_quelconque_____a220                                                                              \
                               ,Acoupe_quelconque_____a213                                                                              \
                               ,Acoupe_quelconque_____a212                                                                              \
                               ,Acoupe_quelconque_____a211                                                                              \
                               ,Acoupe_quelconque_____a210                                                                              \
                               ,Acoupe_quelconque_____a203                                                                              \
                               ,Acoupe_quelconque_____a202                                                                              \
                               ,Acoupe_quelconque_____a201                                                                              \
                               ,Acoupe_quelconque_____a200                                                                              \
                               ,Acoupe_quelconque_____a133                                                                              \
                               ,Acoupe_quelconque_____a132                                                                              \
                               ,Acoupe_quelconque_____a131                                                                              \
                               ,Acoupe_quelconque_____a130                                                                              \
                               ,Acoupe_quelconque_____a123                                                                              \
                               ,Acoupe_quelconque_____a122                                                                              \
                               ,Acoupe_quelconque_____a121                                                                              \
                               ,Acoupe_quelconque_____a120                                                                              \
                               ,Acoupe_quelconque_____a113                                                                              \
                               ,Acoupe_quelconque_____a112                                                                              \
                               ,Acoupe_quelconque_____a111                                                                              \
                               ,Acoupe_quelconque_____a110                                                                              \
                               ,Acoupe_quelconque_____a103                                                                              \
                               ,Acoupe_quelconque_____a102                                                                              \
                               ,Acoupe_quelconque_____a101                                                                              \
                               ,Acoupe_quelconque_____a100                                                                              \
                               ,Acoupe_quelconque_____a033                                                                              \
                               ,Acoupe_quelconque_____a032                                                                              \
                               ,Acoupe_quelconque_____a031                                                                              \
                               ,Acoupe_quelconque_____a030                                                                              \
                               ,Acoupe_quelconque_____a023                                                                              \
                               ,Acoupe_quelconque_____a022                                                                              \
                               ,Acoupe_quelconque_____a021                                                                              \
                               ,Acoupe_quelconque_____a020                                                                              \
                               ,Acoupe_quelconque_____a013                                                                              \
                               ,Acoupe_quelconque_____a012                                                                              \
                               ,Acoupe_quelconque_____a011                                                                              \
                               ,Acoupe_quelconque_____a010                                                                              \
                               ,Acoupe_quelconque_____a003                                                                              \
                               ,Acoupe_quelconque_____a002                                                                              \
                               ,Acoupe_quelconque_____a001                                                                              \
                               ,Acoupe_quelconque_____a000                                                                              \
                                )                                                                                                       \
                                        /* Introduit le 20171117133418 pour 'v $xrf/EpongeDeMenger.01$I HORNER_3_03__...' et ce      */ \
                                        /* afin de pouvoir reutiliser tous les 'Acoupe_quelconque_____a???' tels quels sans avoir    */ \
                                        /* a redefinir de tels parametres dans 'v $xrf/EpongeDeMenger.01$K Acoupe_quelconque_____a'. */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M O Y E N N A G E   D ' U N   A L B U M   " N O N    S T A N D A R D "                                                     */
/*        A   L ' I N T E R I E U R   D E   P A V E S   R E C T A N G U L A I R E S  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   AFmoyennage_dans_des_paves_rectangulaires(albumR,imageA)                                                                      \
                    Bblock                                                                                                              \
                    begin_fuite                                                                                                         \
                         Bblock                                                                                                         \
                         DEFV(Float(parametre_d_interpolation,INIT(DIVI(FLOT(COZR(Z)),FLOT(COZR(Zmax))))));                             \
                                        /* Parametre d'interpolation pour calculer les tailles du pave, soit 'taille_du_pave_X' et   */ \
                                        /* 'taille_du_pave_Y' dans 'v $xiii/di_image$FON IFmoyennage_dans_des_paves_rectangulaires'. */ \
                                                                                                                                        \
                         CALS(IFmoyennage_dans_des_paves_rectangulaires(PAGE(albumR,Z)                                                  \
                                                                       ,imageA                                                          \
                                                                       ,INTERPOLATION_LINEAIRE(PasX,dimX,parametre_d_interpolation)     \
                                                                       ,INTERPOLATION_LINEAIRE(PasY,dimY,parametre_d_interpolation)     \
                                                                        )                                                               \
                              );                                                                                                        \
                         Eblock                                                                                                         \
                    end_fuite                                                                                                           \
                    Eblock                                                                                                              \
                                        /* Generation d'un album donnant le moyennage de 'imageA' pour differentes tailles de paves  */ \
                                        /* (interpolees entre 'PasX.PasY' et 'dimX.dimY'). Ceci fut introduit le 20080218144604.     */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        J E U   D E   L A   V I E   S T A N D A R D  :                                                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   NOMBRE_MINIMAL_DE_VOISINS_DE_Ajeu_de_la_vie                                                                                   \
                    ZERO
#define   NOMBRE_MAXIMAL_DE_VOISINS_DE_Ajeu_de_la_vie                                                                                   \
                    INTE(SOUS(PUIX(TROIS,TRI_DIMENSIONNEL),UN))
                                        /* Nombre maximal de voisins (introduit le 20120229152056).                                  */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M O D E L E   D E   I S I N G   T R I D I M E N S I O N N E L   A   T E M P E R A T U R E   L O C A L E  :                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Amodele_d_Ising_3D_a_temperature_locale_VERSION_01                                                                            \
                                        /* La temperature dite "locale" est en fait identique a la temperature "globale" car, dans   */ \
                                        /* cas contraire, cela demanderait l'implementation de :                                     */ \
                                        /*                                                                                           */ \
                                        /*                  DEFV(albumF,temperature_locale)                                          */ \
                                        /*                                                                                           */ \
                                        /* qui, sauf pour de petits axes 'Z', ne pourrait tenir en machine...                        */
#nodefine Amodele_d_Ising_3D_a_temperature_locale_VERSION_02                                                                            \
                                        /* La temperature dite "locale" est vraiment locale car elle est fonction du point           */ \
                                        /* courant {X,Y,Z}.                                                                          */

#define   PONDERATION_D_UN_POINT_DANS_Amodele_d_Ising_3D                                                                                \
                    FU                                                                                                                  \
                                        /* Definition du facteur par defaut des points du voisinage du point courant {X,Y,Z}.        */

#define   DEMI_DIMENSION_MINIMALE_DU_NOYAU_DANS_Amodele_d_Ising_3D                                                                      \
                    DEMI_DIMENSION_MINIMALE_DU_NOYAU_DANS_Imodele_d_Ising_2D
#define   DEMI_DIMENSION_STANDARD_DU_NOYAU_DANS_Amodele_d_Ising_3D                                                                      \
                    DEMI_DIMENSION_STANDARD_DU_NOYAU_DANS_Imodele_d_Ising_2D
#define   DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_Amodele_d_Ising_3D                                                                      \
                    DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_Imodele_d_Ising_2D
                                        /* Demi-dimensions (arbitraire) du noyau de 'Amodele_d_Ising_3D(...)'. Elles sont choisies   */
                                        /* identiques a celles de 'Imodele_d_Ising_2D(...)' afin de simplifier certaines choses (et  */
                                        /* par exemple 'v _____xivPdf_10_2/.ISIN.H.11.$U FoRmAtN').                                  */
#define   DimNo_Amodele_d_Ising_3D                                                                                                      \
                    DOUP(DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_Amodele_d_Ising_3D)                                                      \
                                        /* Dimension (arbitraire) du noyau de 'Amodele_d_Ising_3D(...)'.                             */ \
                                        /*                                                                                           */ \
                                        /* ATTENTION : le nom 'DIMENSION_DU_NOYAU_DANS_Amodele_d_Ising_3D' ne peut etre              */ \
                                        /* utilise (d'ou 'DimNo_Amodele_d_Ising_3D') a cause de la procedure '$xcg/gen.ext$Z'        */ \
                                        /* ('v $xiii/di_album$FON DimNo_Amodele_d_Ising_3D').                                        */

#define   Amodele_d_Ising_3D_____XYZmin                                                                                                 \
                    NEGA(DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_Amodele_d_Ising_3D)
#define   Amodele_d_Ising_3D_____XYZmax                                                                                                 \
                    NEUT(DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_Amodele_d_Ising_3D)
                                        /* Dimension des axes {X,Y,Z} necessaires a la lecture de fichiers contenant un noyau        */
                                        /* ('v $xci/Ising_3D.11$K Amodele_d_Ising_3D_____noyau').                                    */
#define   Amodele_d_Ising_3D_____XYZmin_effectif                                                                                        \
                    NEGA(Amodele_d_Ising_3D_____demi_dimension_effective_du_noyau)
#define   Amodele_d_Ising_3D_____XYZmax_effectif                                                                                        \
                    NEUT(Amodele_d_Ising_3D_____demi_dimension_effective_du_noyau)
                                        /* Extremites effectives des axes {X,Y,Z}.                                                   */

#define   ACCES_NOYAU_DANS_Amodele_d_Ising_3D(x,y,z)                                                                                    \
                    ITb3(Amodele_d_Ising_3D_____noyau                                                                                   \
                        ,INDX(z,NEGA(DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_Amodele_d_Ising_3D))                                         \
                        ,INDX(y,NEGA(DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_Amodele_d_Ising_3D))                                         \
                        ,INDX(x,NEGA(DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_Amodele_d_Ising_3D))                                         \
                         )                                                                                                              \
                                        /* Acces a l'element {x,y,z} du noyau de 'Amodele_d_Ising_3D(...)'. ATTENTION a l'odre       */ \
                                        /* des trois coordonnees identique a celui de 'v $xiii/Images$DEF ALBUM.album.x.y.z.'.       */
#define   INITIALISATION_ELEMENT_NOYAU_DANS_Amodele_d_Ising_3D(x,y,z,valeur)                                                            \
                    Bblock                                                                                                              \
                    EGAL(ACCES_NOYAU_DANS_Amodele_d_Ising_3D(x,y,z)                                                                     \
                        ,valeur                                                                                                         \
                         );                                                                                                             \
                    Eblock                                                                                                              \
                                        /* Initialisation de l'element {x,y,z}.                                                      */
#define   INITIALISATION_EVENTUELLE_DU_NOYAU_DANS_Amodele_d_Ising_3D                                                                    \
                    Bblock                                                                                                              \
                    Test(IL_FAUT(Amodele_d_Ising_3D_____utiliser_un_noyau))                                                             \
                         Bblock                                                                                                         \
                         Test(IFINff(Amodele_d_Ising_3D_____demi_dimension_effective_du_noyau                                           \
                                    ,DEMI_DIMENSION_MINIMALE_DU_NOYAU_DANS_Amodele_d_Ising_3D                                           \
                                    ,DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_Amodele_d_Ising_3D                                           \
                                     )                                                                                                  \
                              )                                                                                                         \
                              Bblock                                                                                                    \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              PRINT_ERREUR("les dimensions du noyau du modele d'Ising tridimensionnel sont incorrectes");               \
                              CAL1(Prer1("%d est demande\n",Amodele_d_Ising_3D_____demi_dimension_effective_du_noyau));                 \
                              CAL1(Prer2("alors que seul [%d,%d] est possible\n"                                                        \
                                        ,DEMI_DIMENSION_MINIMALE_DU_NOYAU_DANS_Amodele_d_Ising_3D                                       \
                                        ,DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_Amodele_d_Ising_3D                                       \
                                         )                                                                                              \
                                   );                                                                                                   \
                                                                                                                                        \
                              EGAL(Amodele_d_Ising_3D_____demi_dimension_effective_du_noyau                                             \
                                  ,DEMI_DIMENSION_STANDARD_DU_NOYAU_DANS_Amodele_d_Ising_3D                                             \
                                   );                                                                                                   \
                                                                                                                                        \
                              CAL1(Prer1("%d est donc force\n",Amodele_d_Ising_3D_____demi_dimension_effective_du_noyau));              \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                                                                                                                                        \
                         Test(IL_FAUT(Amodele_d_Ising_3D_____initialiser_le_noyau))                                                     \
                              Bblock                                                                                                    \
                              begin_albumQ(DoIn,Amodele_d_Ising_3D_____XYZmin_effectif,Amodele_d_Ising_3D_____XYZmax_effectif,PasZ      \
                                          ,DoIn,Amodele_d_Ising_3D_____XYZmin_effectif,Amodele_d_Ising_3D_____XYZmax_effectif,PasY      \
                                          ,DoIn,Amodele_d_Ising_3D_____XYZmin_effectif,Amodele_d_Ising_3D_____XYZmax_effectif,PasX      \
                                           )                                                                                            \
                                   Bblock                                                                                               \
                                   INITIALISATION_ELEMENT_NOYAU_DANS_Amodele_d_Ising_3D(X,Y,Z                                           \
                                                                                       ,PONDERATION_D_UN_POINT_DANS_Amodele_d_Ising_3D  \
                                                                                        );                                              \
                                        /* Initialisation de l'element courant {X,Y,Z}.                                              */ \
                                   Eblock                                                                                               \
                              end_albumQ(EDoI,EDoI,EDoI)                                                                                \
                                                                                                                                        \
                              EGAL(Amodele_d_Ising_3D_____initialiser_le_noyau,FAUX);                                                   \
                                        /* Et l'initialisation n'est plus a faire (jusqu'a la prochaine fois...).                    */ \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Initialisation eventuelle du noyau de 'Amodele_d_Ising_3D(...)'.                          */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O N V O L U T I O N   F L O T T A N T E   S I M P L I F I E E   D ' U N   A L B U M   F L O T T A N T  :                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   PONDERATION_D_UN_POINT_DANS_AFFconvolution                                                                                    \
                    FU                                                                                                                  \
                                        /* Definition du facteur par defaut des points du voisinage du point courant {X,Y,Z}.        */

#define   DEMI_DIMENSION_MINIMALE_DU_NOYAU_DANS_AFFconvolution                                                                          \
                    UN
#define   DEMI_DIMENSION_STANDARD_DU_NOYAU_DANS_AFFconvolution                                                                          \
                    TROIS
#define   DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_AFFconvolution                                                                          \
                    SOIXANTE_QUATRE
                                        /* Demi-dimensions (arbitraire) du noyau de 'AFFconvolution(...)'.                           */
#define   DimNo_AFFconvolution                                                                                                          \
                    DOUP(DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_AFFconvolution)                                                          \
                                        /* Dimension (arbitraire) du noyau de 'AFFconvolution(...)'.                                 */ \
                                        /*                                                                                           */ \
                                        /* ATTENTION : le nom 'DIMENSION_DU_NOYAU_DANS_AFFconvolution' ne peut etre                  */ \
                                        /* utilise (d'ou 'DimNo_AFFconvolution') a cause de la procedure '$xcg/gen.ext$Z'            */ \
                                        /* ('v $xiii/di_album$FON DimNo_AFFconvolution').                                            */

#define   AFFconvolution_____XYZmin                                                                                                     \
                    NEGA(DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_AFFconvolution)
#define   AFFconvolution_____XYZmax                                                                                                     \
                    NEUT(DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_AFFconvolution)
                                        /* Dimension des axes {X,Y,Z} necessaires a la lecture de fichiers contenant un noyau        */
                                        /* ('v $xci/Ising_3D.11$K AFFconvolution_____noyau').                                        */
#define   AFFconvolution_____XYZmin_effectif                                                                                            \
                    NEGA(AFFconvolution_____demi_dimension_effective_du_noyau)
#define   AFFconvolution_____XYZmax_effectif                                                                                            \
                    NEUT(AFFconvolution_____demi_dimension_effective_du_noyau)
                                        /* Extremites effectives des axes {X,Y,Z}.                                                   */

#define   ACCES_NOYAU_DANS_AFFconvolution(x,y,z)                                                                                        \
                    ITb3(AFFconvolution_____noyau                                                                                       \
                        ,INDX(z,NEGA(DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_AFFconvolution))                                             \
                        ,INDX(y,NEGA(DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_AFFconvolution))                                             \
                        ,INDX(x,NEGA(DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_AFFconvolution))                                             \
                         )                                                                                                              \
                                        /* Acces a l'element {x,y,z} du noyau de 'AFFconvolution(...)'. ATTENTION a l'odre           */ \
                                        /* des trois coordonnees identique a celui de 'v $xiii/Images$DEF ALBUM.album.x.y.z.'.       */
#define   INITIALISATION_ELEMENT_NOYAU_DANS_AFFconvolution(x,y,z,valeur)                                                                \
                    Bblock                                                                                                              \
                    EGAL(ACCES_NOYAU_DANS_AFFconvolution(x,y,z)                                                                         \
                        ,valeur                                                                                                         \
                         );                                                                                                             \
                    Eblock                                                                                                              \
                                        /* Initialisation de l'element {x,y,z}.                                                      */
#define   INITIALISATION_EVENTUELLE_DU_NOYAU_DANS_AFFconvolution                                                                        \
                    Bblock                                                                                                              \
                    Test(IFINff(AFFconvolution_____demi_dimension_effective_du_noyau                                                    \
                               ,DEMI_DIMENSION_MINIMALE_DU_NOYAU_DANS_AFFconvolution                                                    \
                               ,DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_AFFconvolution                                                    \
                                )                                                                                                       \
                         )                                                                                                              \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         PRINT_ERREUR("les dimensions du noyau de convolution d'un album tridimensionnel sont incorrectes");            \
                         CAL1(Prer1("%d est demande\n",AFFconvolution_____demi_dimension_effective_du_noyau));                          \
                         CAL1(Prer3("alors que seul [%d,%d,%d] est possible\n"                                                          \
                                   ,DEMI_DIMENSION_MINIMALE_DU_NOYAU_DANS_AFFconvolution                                                \
                                   ,DEMI_DIMENSION_MINIMALE_DU_NOYAU_DANS_AFFconvolution                                                \
                                   ,DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_AFFconvolution                                                \
                                    )                                                                                                   \
                              );                                                                                                        \
                                                                                                                                        \
                         EGAL(AFFconvolution_____demi_dimension_effective_du_noyau                                                      \
                             ,DEMI_DIMENSION_STANDARD_DU_NOYAU_DANS_AFFconvolution                                                      \
                              );                                                                                                        \
                                                                                                                                        \
                         CAL1(Prer1("%d est donc force\n",AFFconvolution_____demi_dimension_effective_du_noyau));                       \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                                                                                                                                        \
                    Test(IL_FAUT(AFFconvolution_____initialiser_le_noyau))                                                              \
                         Bblock                                                                                                         \
                         begin_albumQ(DoIn,AFFconvolution_____XYZmin_effectif,AFFconvolution_____XYZmax_effectif,PasZ                   \
                                     ,DoIn,AFFconvolution_____XYZmin_effectif,AFFconvolution_____XYZmax_effectif,PasY                   \
                                     ,DoIn,AFFconvolution_____XYZmin_effectif,AFFconvolution_____XYZmax_effectif,PasX                   \
                                      )                                                                                                 \
                              Bblock                                                                                                    \
                              INITIALISATION_ELEMENT_NOYAU_DANS_AFFconvolution(X,Y,Z                                                    \
                                                                              ,PONDERATION_D_UN_POINT_DANS_AFFconvolution               \
                                                                               );                                                       \
                                        /* Initialisation de l'element courant {X,Y,Z}.                                              */ \
                              Eblock                                                                                                    \
                         end_albumQ(EDoI,EDoI,EDoI)                                                                                     \
                                                                                                                                        \
                         EGAL(AFFconvolution_____initialiser_le_noyau,FAUX);                                                            \
                                        /* Et l'initialisation n'est plus a faire (jusqu'a la prochaine fois...).                    */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Initialisation eventuelle du noyau de 'AFFconvolution(...)'.                              */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        O M B R A G E   " G E N E R A L "   D ' U N   A L B U M  :                                                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

#define   POINT_EN_REALITE_A_L_OMBRE                                                                                                    \
                    NOIR
#define   POINT_A_PRIORI_AU_SOLEIL                                                                                                      \
                    BLANC
                                        /* Optimisation introduite le 20170517101721 et deplacee ici le 20180124092646 depuis        */
                                        /* 'v $xiii/di_album$FON 20180124092708'...                                                  */

#define   DEMI_DIMENSION_XYZ_MATRIX_CALCUL_GRADIENT                                                                                     \
                    UN                                                                                                                  \
                                        /* Introduit ici le 20180124104544 depuis 'v $xiii/di_album$FON 20180124104526'...           */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D I F F U S I O N   T R I D I M E N S I O N N E L L E   A   T E M P E R A T U R E   L O C A L E  :                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Adiffusion_3D_a_temperatures_locales_____NIVEAU_DE_LA___MER                                                                   \
                    GRIS_0
#define   Adiffusion_3D_a_temperatures_locales_____NIVEAU_DE_LA___MER_NOUVELLE_NEE                                                      \
                    GRIS_1
#define   Adiffusion_3D_a_temperatures_locales_____NIVEAU_DE_LA_TERRE_NOUVELLE_NEE                                                      \
                    GRIS_7
#define   Adiffusion_3D_a_temperatures_locales_____NIVEAU_DE_LA_TERRE                                                                   \
                    GRIS_8
                                        /* Niveaux "speciaux" (introduits le 20070213091108).                                        */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M O D E L E   D E   C O T E S   T R I D I M E N S I O N N E L   A V E C   E R O S I O N  :                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Aerode__CoastLines_3D_a_taux_facteur_locaux_VERSION_01                                                                        \
                                        /* Les arguments :                                                                           */ \
                                        /*                                                                                           */ \
                                        /*                  taux_d_affaiblissement_de_la_durete_de_la_terre_local                    */ \
                                        /*                  facteur_d_anti_corrosite_de_la_mer_local                                 */ \
                                        /*                                                                                           */ \
                                        /* sont globaux car, en effet, sauf pour de petits axes 'Z', cela demanderait une memoire    */ \
                                        /* considerable...                                                                           */
#nodefine Aerode__CoastLines_3D_a_taux_facteur_locaux_VERSION_02                                                                        \
                                        /* Les arguments :                                                                           */ \
                                        /*                                                                                           */ \
                                        /*                  taux_d_affaiblissement_de_la_durete_de_la_terre_local                    */ \
                                        /*                  facteur_d_anti_corrosite_de_la_mer_local                                 */ \
                                        /*                                                                                           */ \
                                        /* sont reellement locaux, c'est-a-dire fonction du point courant {X,Y,Z}.                   */

#nodefine SURFACE_DE_LA_COTE_D_ERODE______COTES_3D_VERSION_01                                                                           \
                                        /* Cette facon de mesurer la longueur utilise 'AFFconvolution(...)'. Elle presente un        */ \
                                        /* gros defaut : en effet, le niveau convolue obtenu ne donne pas, comme je le croyais       */ \
                                        /* naivement initialement, la frontiere entre la "terre" et la "mer" car cela n'est vrai     */ \
                                        /* que si la repartition "terre"/"mer" et de 50%/50% dans le domaine de convolution (ce      */ \
                                        /* qui n'est qu'exceptionnellemnt vrai). Une nouvelle version ('VERSION_02') a donc ete      */ \
                                        /* introduite afin de travailler sur les extrema, en les seuillant de plus...                */
#define   SURFACE_DE_LA_COTE_D_ERODE______COTES_3D_VERSION_02                                                                           \
                                        /* Cette facon de mesurer la longueur utilise 'AFFconvolution_de_seuillage(...)' ; elle      */ \
                                        /* a ete introduite le 20011214102608.                                                       */

#nodefine CONVOLUTION_DE_albumA_D_ERODE______COTES_3D_VERSION_01                                                                        \
                                        /* Cette facon de convoluer 'albumA' n'utilise que 'albumA_convolue_courant'.                */
#define   CONVOLUTION_DE_albumA_D_ERODE______COTES_3D_VERSION_02                                                                        \
                                        /* Cette facon de convoluer 'albumA' utilise simultanement 'albumA_convolue_courant' et      */ \
                                        /* 'Aerode__CoastLines_3D_____albumA_convolue_initial' (introduite le 20011218092742).       */

#define   NIVEAU_DE_LA___MER_DANS_Aerode__CoastLines_3D                                                                                 \
                    NIVEAU_DE_LA___MER_DANS_Ierode__CoastLines_2D
#define   NIVEAU_DE_LA_TERRE_DANS_Aerode__CoastLines_3D                                                                                 \
                    NIVEAU_DE_LA_TERRE_DANS_Ierode__CoastLines_2D
                                        /* Niveaux respectifs de la "mer" et de la "terre" a priori...                               */

#define   DEMI_DIMENSION_MINIMALE_DU_NOYAU_DANS_Aerode__CoastLines_3D                                                                   \
                    DEMI_DIMENSION_MINIMALE_DU_NOYAU_DANS_Ierode__CoastLines_2D
#define   DEMI_DIMENSION_STANDARD_DU_NOYAU_DANS_Aerode__CoastLines_3D                                                                   \
                    DEMI_DIMENSION_STANDARD_DU_NOYAU_DANS_Ierode__CoastLines_2D
#define   DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_Aerode__CoastLines_3D                                                                   \
                    DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_Ierode__CoastLines_2D
                                        /* Demi-dimensions (arbitraire) du noyau de 'Aerode__CoastLines_3D(...)'.                    */
#define   DN_Aerode__CoastLines_3D                                                                                                      \
                    DOUP(DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_Aerode__CoastLines_3D)                                                   \
                                        /* Dimension (arbitraire) du noyau "quelconque" de 'Aerode__CoastLines_3D(...)'.             */ \
                                        /*                                                                                           */ \
                                        /* ATTENTION : le nom 'DIMENSION_DU_NOYAU_DANS_Aerode__CoastLines_3D' ne peut etre           */ \
                                        /* utilise (d'ou 'DN_Aerode__CoastLines_3D') a cause de la procedure '$xcg/gen.ext$Z'        */ \
                                        /* ('v $xiii/di_album$FON DN_Aerode__CoastLines_3D').                                        */

#define   PONDERATION_D_UN_POINT_DANS_Aerode__CoastLines_3D                                                                             \
                    FU                                                                                                                  \
                                        /* Definition du facteur par defaut des points du voisinage du point courant {X,Y}.          */

#define   Aerode__CoastLines_3D_____XYZmin                                                                                              \
                    NEGA(DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_Aerode__CoastLines_3D)
#define   Aerode__CoastLines_3D_____XYZmax                                                                                              \
                    NEUT(DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_Aerode__CoastLines_3D)
                                        /* Dimension des axes {X,Y,Z} necessaires a la lecture de fichiers contenant un noyau        */
                                        /* ('v $xci/CoastL_3D.11$K Aerode__CoastLines_3D_____noyau').                                */
#define   Aerode__CoastLines_3D_____XYZmin_effectif                                                                                     \
                    NEGA(Aerode__CoastLines_3D_____demi_dimension_effective_du_noyau)
#define   Aerode__CoastLines_3D_____XYZmax_effectif                                                                                     \
                    NEUT(Aerode__CoastLines_3D_____demi_dimension_effective_du_noyau)
                                        /* Extremites effectives des axes {X,Y,Z}.                                                   */

#define   ACCES_NOYAU_DANS_Aerode__CoastLines_3D(x,y,z)                                                                                 \
                    ITb3(Aerode__CoastLines_3D_____noyau                                                                                \
                        ,INDX(z,NEGA(DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_Aerode__CoastLines_3D))                                      \
                        ,INDX(y,NEGA(DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_Aerode__CoastLines_3D))                                      \
                        ,INDX(x,NEGA(DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_Aerode__CoastLines_3D))                                      \
                         )                                                                                                              \
                                        /* Acces a l'element {x,y,z} du noyau de 'Aerode__CoastLines_3D(...)'. ATTENTION a l'odre    */ \
                                        /* des deux coordonnees identique a celui de 'v $xiii/Images$DEF IMAGE.album.x.y.z.'.        */
#define   INITIALISATION_ELEMENT_NOYAU_DANS_Aerode__CoastLines_3D(x,y,z,valeur)                                                         \
                    Bblock                                                                                                              \
                    EGAL(ACCES_NOYAU_DANS_Aerode__CoastLines_3D(x,y,z)                                                                  \
                        ,valeur                                                                                                         \
                         );                                                                                                             \
                    Eblock                                                                                                              \
                                        /* Initialisation de l'element {x,y,z}.                                                      */
#define   INITIALISATION_EVENTUELLE_DU_NOYAU_DANS_Aerode__CoastLines_3D                                                                 \
                    Bblock                                                                                                              \
                    Test(IL_FAUT(Aerode__CoastLines_3D_____utiliser_un_noyau))                                                          \
                         Bblock                                                                                                         \
                         Test(IFINff(Aerode__CoastLines_3D_____demi_dimension_effective_du_noyau                                        \
                                    ,DEMI_DIMENSION_MINIMALE_DU_NOYAU_DANS_Aerode__CoastLines_3D                                        \
                                    ,DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_Aerode__CoastLines_3D                                        \
                                     )                                                                                                  \
                              )                                                                                                         \
                              Bblock                                                                                                    \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              PRINT_ERREUR("les dimensions du noyau du modele de cotes bidimensionnel sont incorrectes");               \
                              CAL1(Prer1("%d est demande\n",Aerode__CoastLines_3D_____demi_dimension_effective_du_noyau));              \
                              CAL1(Prer3("alors que seul [%d,%d,%d] est possible\n"                                                     \
                                        ,DEMI_DIMENSION_MINIMALE_DU_NOYAU_DANS_Aerode__CoastLines_3D                                    \
                                        ,DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_Aerode__CoastLines_3D                                    \
                                        ,DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_Aerode__CoastLines_3D                                    \
                                         )                                                                                              \
                                   );                                                                                                   \
                                                                                                                                        \
                              EGAL(Aerode__CoastLines_3D_____demi_dimension_effective_du_noyau                                          \
                                  ,DEMI_DIMENSION_STANDARD_DU_NOYAU_DANS_Aerode__CoastLines_3D                                          \
                                   );                                                                                                   \
                                                                                                                                        \
                              CAL1(Prer1("%d est donc force\n",Aerode__CoastLines_3D_____demi_dimension_effective_du_noyau));           \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                                                                                                                                        \
                         Test(IL_FAUT(Aerode__CoastLines_3D_____initialiser_le_noyau))                                                  \
                              Bblock                                                                                                    \
                              begin_albumQ(DoIn                                                                                         \
                                          ,Aerode__CoastLines_3D_____XYZmin_effectif,Aerode__CoastLines_3D_____XYZmax_effectif,PasZ     \
                                          ,DoIn                                                                                         \
                                          ,Aerode__CoastLines_3D_____XYZmin_effectif,Aerode__CoastLines_3D_____XYZmax_effectif,PasY     \
                                          ,DoIn                                                                                         \
                                          ,Aerode__CoastLines_3D_____XYZmin_effectif,Aerode__CoastLines_3D_____XYZmax_effectif,PasX     \
                                           )                                                                                            \
                                   Bblock                                                                                               \
                                   INITIALISATION_ELEMENT_NOYAU_DANS_Aerode__CoastLines_3D                                              \
                                       (X,Y,Z                                                                                           \
                                       ,PONDERATION_D_UN_POINT_DANS_Aerode__CoastLines_3D                                               \
                                        );                                                                                              \
                                        /* Initialisation de l'element courant {X,Y,Z}.                                              */ \
                                   Eblock                                                                                               \
                              end_albumQ(EDoI,EDoI,EDoI)                                                                                \
                                                                                                                                        \
                              EGAL(Aerode__CoastLines_3D_____initialiser_le_noyau,FAUX);                                                \
                                        /* Et l'initialisation n'est plus a faire (jusqu'a la prochaine fois...).                    */ \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Initialisation eventuelle du noyau de 'Aerode__CoastLines_3D(...)'.                       */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M O D E L E   D E   C O T E S   T R I D I M E N S I O N N E L   A V E C   " E T C H I N G "  :                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Aetche__CoastLines_3D_a_temperatures_locales_VERSION_01                                                                       \
                                        /* Les arguments :                                                                           */ \
                                        /*                                                                                           */ \
                                        /*                  temperature_locale                                                       */ \
                                        /*                                                                                           */ \
                                        /* est global car, en effet, sauf pour de petits axes 'Z', cela demanderait une memoire      */ \
                                        /* considerable...                                                                           */
#nodefine Aetche__CoastLines_3D_a_temperatures_locales_VERSION_02                                                                       \
                                        /* L'argument :                                                                              */ \
                                        /*                                                                                           */ \
                                        /*                  temperature_locale                                                       */ \
                                        /*                                                                                           */ \
                                        /* est reellement local, c'est-a-dire fonction du point courant {X,Y,Z}.                     */

#define   NIVEAU_DE_LA___MER_DANS_Aetche__CoastLines_3D                                                                                 \
                    NIVEAU_DE_LA___MER_DANS_Ietche__CoastLines_2D
#define   NIVEAU_DE_LA_TERRE_DANS_Aetche__CoastLines_3D                                                                                 \
                    NIVEAU_DE_LA_TERRE_DANS_Ietche__CoastLines_2D
                                        /* Niveaux respectifs de la "mer" et de la "terre" a priori...                               */

#define   DEMI_DIMENSION_MINIMALE_DU_NOYAU_DANS_Aetche__CoastLines_3D                                                                   \
                    DEMI_DIMENSION_MINIMALE_DU_NOYAU_DANS_Ietche__CoastLines_2D
#define   DEMI_DIMENSION_STANDARD_DU_NOYAU_DANS_Aetche__CoastLines_3D                                                                   \
                    DEMI_DIMENSION_STANDARD_DU_NOYAU_DANS_Ietche__CoastLines_2D
#define   DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_Aetche__CoastLines_3D                                                                   \
                    DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_Ietche__CoastLines_2D
                                        /* Demi-dimensions (arbitraire) du noyau de 'Aetche__CoastLines_3D(...)'.                    */
#define   DN_Aetche__CoastLines_3D                                                                                                      \
                    DOUP(DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_Aetche__CoastLines_3D)                                                   \
                                        /* Dimension (arbitraire) du noyau "quelconque" de 'Aetche__CoastLines_3D(...)'.             */ \
                                        /*                                                                                           */ \
                                        /* ATTENTION : le nom 'DIMENSION_DU_NOYAU_DANS_Aetche__CoastLines_3D' ne peut etre           */ \
                                        /* utilise (d'ou 'DN_Aetche__CoastLines_3D') a cause de la procedure '$xcg/gen.ext$Z'        */ \
                                        /* ('v $xiii/di_album$FON DN_Aetche__CoastLines_3D').                                        */

#define   PONDERATION_D_UN_POINT_DANS_Aetche__CoastLines_3D                                                                             \
                    FU                                                                                                                  \
                                        /* Definition du facteur par defaut des points du voisinage du point courant {X,Y}.          */

#define   Aetche__CoastLines_3D_____XYZmin                                                                                              \
                    NEGA(DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_Aetche__CoastLines_3D)
#define   Aetche__CoastLines_3D_____XYZmax                                                                                              \
                    NEUT(DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_Aetche__CoastLines_3D)
                                        /* Dimension des axes {X,Y,Z} necessaires a la lecture de fichiers contenant un noyau        */
                                        /* ('v $xci/CoastL_3D.11$K Aetche__CoastLines_3D_____noyau').                                */
#define   Aetche__CoastLines_3D_____XYZmin_effectif                                                                                     \
                    NEGA(Aetche__CoastLines_3D_____demi_dimension_effective_du_noyau)
#define   Aetche__CoastLines_3D_____XYZmax_effectif                                                                                     \
                    NEUT(Aetche__CoastLines_3D_____demi_dimension_effective_du_noyau)
                                        /* Extremites effectives des axes {X,Y,Z}.                                                   */

#define   ACCES_NOYAU_DANS_Aetche__CoastLines_3D(x,y,z)                                                                                 \
                    ITb3(Aetche__CoastLines_3D_____noyau                                                                                \
                        ,INDX(z,NEGA(DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_Aetche__CoastLines_3D))                                      \
                        ,INDX(y,NEGA(DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_Aetche__CoastLines_3D))                                      \
                        ,INDX(x,NEGA(DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_Aetche__CoastLines_3D))                                      \
                         )                                                                                                              \
                                        /* Acces a l'element {x,y,z} du noyau de 'Aetche__CoastLines_3D(...)'. ATTENTION a l'odre    */ \
                                        /* des deux coordonnees identique a celui de 'v $xiii/Images$DEF IMAGE.album.x.y.z.'.        */
#define   INITIALISATION_ELEMENT_NOYAU_DANS_Aetche__CoastLines_3D(x,y,z,valeur)                                                         \
                    Bblock                                                                                                              \
                    EGAL(ACCES_NOYAU_DANS_Aetche__CoastLines_3D(x,y,z)                                                                  \
                        ,valeur                                                                                                         \
                         );                                                                                                             \
                    Eblock                                                                                                              \
                                        /* Initialisation de l'element {x,y,z}.                                                      */
#define   INITIALISATION_EVENTUELLE_DU_NOYAU_DANS_Aetche__CoastLines_3D                                                                 \
                    Bblock                                                                                                              \
                    Test(IL_FAUT(Aetche__CoastLines_3D_____utiliser_un_noyau))                                                          \
                         Bblock                                                                                                         \
                         Test(IFINff(Aetche__CoastLines_3D_____demi_dimension_effective_du_noyau                                        \
                                    ,DEMI_DIMENSION_MINIMALE_DU_NOYAU_DANS_Aetche__CoastLines_3D                                        \
                                    ,DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_Aetche__CoastLines_3D                                        \
                                     )                                                                                                  \
                              )                                                                                                         \
                              Bblock                                                                                                    \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              PRINT_ERREUR("les dimensions du noyau du modele de cotes bidimensionnel sont incorrectes");               \
                              CAL1(Prer1("%d est demande\n",Aetche__CoastLines_3D_____demi_dimension_effective_du_noyau));              \
                              CAL1(Prer3("alors que seul [%d,%d,%d] est possible\n"                                                     \
                                        ,DEMI_DIMENSION_MINIMALE_DU_NOYAU_DANS_Aetche__CoastLines_3D                                    \
                                        ,DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_Aetche__CoastLines_3D                                    \
                                        ,DEMI_DIMENSION_MAXIMALE_DU_NOYAU_DANS_Aetche__CoastLines_3D                                    \
                                         )                                                                                              \
                                   );                                                                                                   \
                                                                                                                                        \
                              EGAL(Aetche__CoastLines_3D_____demi_dimension_effective_du_noyau                                          \
                                  ,DEMI_DIMENSION_STANDARD_DU_NOYAU_DANS_Aetche__CoastLines_3D                                          \
                                   );                                                                                                   \
                                                                                                                                        \
                              CAL1(Prer1("%d est donc force\n",Aetche__CoastLines_3D_____demi_dimension_effective_du_noyau));           \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                                                                                                                                        \
                         Test(IL_FAUT(Aetche__CoastLines_3D_____initialiser_le_noyau))                                                  \
                              Bblock                                                                                                    \
                              begin_albumQ(DoIn                                                                                         \
                                          ,Aetche__CoastLines_3D_____XYZmin_effectif,Aetche__CoastLines_3D_____XYZmax_effectif,PasZ     \
                                          ,DoIn                                                                                         \
                                          ,Aetche__CoastLines_3D_____XYZmin_effectif,Aetche__CoastLines_3D_____XYZmax_effectif,PasY     \
                                          ,DoIn                                                                                         \
                                          ,Aetche__CoastLines_3D_____XYZmin_effectif,Aetche__CoastLines_3D_____XYZmax_effectif,PasX     \
                                           )                                                                                            \
                                   Bblock                                                                                               \
                                   INITIALISATION_ELEMENT_NOYAU_DANS_Aetche__CoastLines_3D                                              \
                                       (X,Y,Z                                                                                           \
                                       ,PONDERATION_D_UN_POINT_DANS_Aetche__CoastLines_3D                                               \
                                        );                                                                                              \
                                        /* Initialisation de l'element courant {X,Y,Z}.                                              */ \
                                   Eblock                                                                                               \
                              end_albumQ(EDoI,EDoI,EDoI)                                                                                \
                                                                                                                                        \
                              EGAL(Aetche__CoastLines_3D_____initialiser_le_noyau,FAUX);                                                \
                                        /* Et l'initialisation n'est plus a faire (jusqu'a la prochaine fois...).                    */ \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Initialisation eventuelle du noyau de 'Aetche__CoastLines_3D(...)'.                       */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M P L E M E N T A T I O N   D ' U N   A L B U M  :                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   dAcomplementation(album_d_imagesR,album_d_imagesA)                                                                            \
                    Bblock                                                                                                              \
                    begin_fuite                                                                                                         \
                         Bblock                                                                                                         \
                         CALi(Icomplementation(PAGE(album_d_imagesR,Z),PAGE(album_d_imagesA,Z)));                                       \
                                        /* Complementation de l'album.                                                               */ \
                         Eblock                                                                                                         \
                    end_fuite                                                                                                           \
                    Eblock                                                                                                              \
                                        /* Complementation independante des differentes pages (introduite le 20140819113725).        */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M P L E M E N T A T I O N   D ' U N   A L B U M   F L O T T A N T  :                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   dAFcomplementation(album_d_imagesR,album_d_imagesA,forcer_les_extrema,niveau_minimum,niveau_maximum)                          \
                    Bblock                                                                                                              \
                    BSaveModifyVariable(Logical,IFcomplementation_____forcer_les_extrema,forcer_les_extrema);                           \
                    BSaveModifyVariable(genere_Float,IFcomplementation_____niveau_minimum,niveau_minimum);                              \
                    BSaveModifyVariable(genere_Float,IFcomplementation_____niveau_maximum,niveau_maximum);                              \
                                                                                                                                        \
                    begin_fuite                                                                                                         \
                         Bblock                                                                                                         \
                         CALi(IFcomplementation(PAGE(album_d_imagesR,Z),PAGE(album_d_imagesA,Z)));                                      \
                                        /* Complementation de l'album.                                                               */ \
                         Eblock                                                                                                         \
                    end_fuite                                                                                                           \
                                                                                                                                        \
                    ESaveModifyVariable(genere_Float,IFcomplementation_____niveau_maximum);                                             \
                    ESaveModifyVariable(genere_Float,IFcomplementation_____niveau_minimum);                                             \
                    ESaveModifyVariable(Logical,IFcomplementation_____forcer_les_extrema);                                              \
                    Eblock                                                                                                              \
                                        /* Complementation independante des differentes pages (introduite le 20140819113725).        */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        N O R M A L I S A T I O N   D ' U N   A L B U M   F L O T T A N T                                                          */
/*        A V E C   C A L C U L   A U T O M A T I Q U E   D E S   E X T R E M A  :                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   dAFnormalisation_automatique(album_d_imagesR,album_d_imagesA)                                                                 \
                    Bblock                                                                                                              \
                    begin_fuite                                                                                                         \
                         Bblock                                                                                                         \
                         CALi(IFnormalisation_automatique(PAGE(album_d_imagesR,Z),PAGE(album_d_imagesA,Z)));                            \
                                        /* Renormalisation de l'album.                                                               */ \
                         Eblock                                                                                                         \
                    end_fuite                                                                                                           \
                    Eblock                                                                                                              \
                                        /* Renormalisation independante des differentes pages (introduite le 20100831212721).        */



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.