/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        A C C U M U L A T I O N   T R I D I M E N S I O N N E L L E   D ' U N   A L B U M   " F L O T T A N T "                    */
/*        A V E C   T E X T U R A G E  :                                                                                             */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Nota important :                                                                                                           */
/*                                                                                                                                   */
/*                    Lorsqu'il n'y a aucune rotation (par rapport                                                                   */
/*                  a aucun axe), cette accumulation equivaut a une                                                                  */
/*                  projection parallele. Cela peut avoir des consequences                                                           */
/*                  inattendues lorsque le 'Z-Buffer' est ensuite utilise,                                                           */
/*                  par exemple, pour un effet de brume.                                                                             */
/*                                                                                                                                   */
/*                    Cela s'est vu aux environs du 20171107153651                                                                   */
/*                  lors du calcul de 'v $xiirf/MENG.G2.3.1', pour laquelle                                                          */
/*                  l'image associee 'v $xiirf/MENG.G2.3.2' etait uniformement                                                       */
/*                  blanche (le 'Z-Buffer' ne contenait alors que deux valeurs                                                       */
/*                  differentes : celle du fond et celle de la face avant de                                                         */
/*                  l'Eponge de Menger). Voir 'v $xiirf/$Fnota MENG_G2_3' a                                                          */
/*                  ce propos...                                                                                                     */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                    Cette commande reconstituent une structure tridimensionnelle                                                   */
/*                  a partir d'une serie de coupes (c'est-a-dire une serie d'images)                                                 */
/*                  avec implicitement un parcours d'arriere en avant (c'est-a-dire                                                  */
/*                  que la premiere image recuperee est mise en arriere-plan et la                                                   */
/*                  derniere au premier-plan), cet ordre pouvant etre inverse...                                                     */
/*                                                                                                                                   */
/*                    Mais, ATTENTION, cette inversion a lieu au moment du                                                           */
/*                  chargement de l'album en memoire, mais elle ne change PAS                                                        */
/*                  l'orientation de l'axe 'OZ'. On aura alors :                                                                     */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                            inverser_l_axe_OZ=FAUX (par defaut) :                                                                  */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                                 Z=0                       ---------------------------------------                                 */
/*                                                          |image 1                                |                                */
/*                                                        . |                                     . |                                */
/*                                                          |                                       |                                */
/*                                                      .   |                                   .   |                                */
/*                                                          |                                       |                                */
/*                                                    .     |                                 .     |                                */
/*                                                          |                                       |                                */
/*                                                  .       |                               .       |                                */
/*                                                          |                                       |                                */
/*                                                 ---------------------------------------          |                                */
/*                                                |image N-2                              |         |                                */
/*                                                |                                       |         |                                */
/*                                                |                                       |         |                                */
/*                                                |                                       |         |                                */
/*                                            ---------------------------------------     |         |                                */
/*                                           |image N-1                              |    |---------                                 */
/*                                           |                                       |    |                                          */
/*                                           |                                       |    |       .                                  */
/*                                           |                                       |    |                                          */
/*                                 Z=1   ---------------------------------------     |    |     .                                    */
/*                                      |image N                                |    |    |                                          */
/*                                      |                                       |    |    |   .                                      */
/*                                      |                                       |    |    |                                          */
/*                                      |                                       |    |    | .                                        */
/*                                      |                                       |    |    |                   Y                      */
/*                                      |                                       |    |----                                           */
/*                                      |                                       |    |                        ^                      */
/*                                      |                                       |----                         |                      */
/*                                      |                                       |                             |                      */
/*                                      |                                       |                             |                      */
/*                                      |                                       |                             |                      */
/*                                      |                                       |                             |                      */
/*                                       ---------------------------------------                              O---------> X          */
/*                                                                                                           /                       */
/*                                                                                                          /                        */
/*                            inverser_l_axe_OZ=VRAI :                                                     /                         */
/*                                                                                                        /                          */
/*                                                                                                                                   */
/*                                 Z=0                       ---------------------------------------    Z                            */
/*                                                          |image N                                |                                */
/*                                                        . |                                     . |                                */
/*                                                          |                                       |                                */
/*                                                      .   |                                   .   |                                */
/*                                                          |                                       |                                */
/*                                                    .     |                                 .     |                                */
/*                                                          |                                       |                                */
/*                                                  .       |                               .       |                                */
/*                                                          |                                       |                                */
/*                                                 ---------------------------------------          |                                */
/*                                                |image 3                                |         |                                */
/*                                                |                                       |         |                                */
/*                                                |                                       |         |                                */
/*                                                |                                       |         |                                */
/*                                            ---------------------------------------     |         |                                */
/*                                           |image 2                                |    |---------                                 */
/*                                           |                                       |    |                                          */
/*                                           |                                       |    |       .                                  */
/*                                           |                                       |    |                                          */
/*                                 Z=1   ---------------------------------------     |    |     .                                    */
/*                                      |image 1                                |    |    |                                          */
/*                                      |                                       |    |    |   .                                      */
/*                                      |                                       |    |    |                                          */
/*                                      |                                       |    |    | .                                        */
/*                                      |                                       |    |    |                                          */
/*                                      |                                       |    |----                                           */
/*                                      |                                       |    |                                               */
/*                                      |                                       |----                                                */
/*                                      |                                       |                                                    */
/*                                      |                                       |                                                    */
/*                                      |                                       |                                                    */
/*                                      |                                       |                                                    */
/*                                       ---------------------------------------                                                     */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition de l'axe 'OZ' :                                                                                                 */
/*                                                                                                                                   */
/*                    Je rappelle que la coordonnee 'Z'                                                                              */
/*                  n'est le numero d'image que s'il n'y                                                                             */
/*                  a pas inversion. Le referentiel {X,Y,Z}                                                                          */
/*                  est DIRECT dans TOUS les cas...                                                                                  */
/*                                                                                                                                   */
/*                    A titre d'exemple, l'experience                                                                                */
/*                  suivante a ete effectuee le 20180507135411 en                                                                    */
/*                  convertissant (via '$xci/conversion_3D$K')                                                                       */
/*                  un champ gaussien dans [0,1], puis en                                                                            */
/*                  accumulant toutes les couches avec :                                                                             */
/*                                                                                                                                   */
/*                                      inverser_ZA=VRAI                                                                             */
/*                                                                                                                                   */
/*                  sans rotation aucune...                                                                                          */
/*                                                                                                                                   */
/*                    La surface ainsi obtenue fut un                                                                                */
/*                  plan (image 1) avec un "trou" (jusqu'a                                                                           */
/*                  image N) vers l'arriere (qui donc s'eloigne                                                                      */
/*                  de l'observateur).                                                                                               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Besoins en ressources :                                                                                                    */
/*                                                                                                                                   */
/*                    Lors de la generation de 'v $xiirv/CARB.D2.21'                                                                 */
/*                  sur sur '$CMAP28' -ex "porte-brancion"-, il fut                                                                  */
/*                  note que pour chacune des composantes chromatiques                                                               */
/*                  de l'image il fallait 16% de la memoire (ce qui                                                                  */
/*                  equivaut a environ 8 Go).                                                                                        */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xci/accumule.42$K' :                                                                                           */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 20100123115431).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        I N T E R F A C E   ' listG '  :                                                                                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        :Debut_listG:                                                                                                              */
/*        :Fin_listG:                                                                                                                */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D I R E C T I V E S   S P E C I F I Q U E S   D E   C O M P I L A T I O N  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        F I C H I E R S   D ' I N C L U D E S  :                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  INCLUDES_BASE
#include  image_image_DI_ALBUM_EXT

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P A R A M E T R E S  :                                                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xci/sequence.01.I"
                                        /* ATTENTION, on definit ainsi le symbole 'DERNIERE_IMAGE' qui ne sert a rien ici, puisque   */
                                        /* c'est en effet 'Zmax' qui joue ce role...                                                 */

#define   EPAISSIR_LES_ALBUMS_ARGUMENTS                                                                                                 \
                    FAUX                                                                                                                \
                                        /* Indique s'il faut epaissir les albums Argument ('VRAI') ou pas ('FAUX'), la valeur par    */ \
                                        /* defaut garantissant la compatibilite anterieure. Ceci a ete introduit le 20210430085517.  */

#define   ACCELERER_L_ACCUMULATION_AUX_DEPENS_DE_LA_QUALITE                                                                             \
                    FAUX                                                                                                                \
                                        /* Indique s'il est possible d'accelerer l'accumulation (aux depens de la qualite) lors de   */ \
                                        /* phase de mise au point d'une image ('v $xiirc/.MANE.41.4.$U _____Accelerer'). Ceci a ete  */ \
                                        /* introduit le 20180124100719...                                                            */

#define   INVERSER_L_AXE_OZ                                                                                                             \
                    FAUX                                                                                                                \
                                        /* Indique s'il faut inverser l'ordre de parcours de l'ensemble des images. On a :           */ \
                                        /*                                                                                           */ \
                                        /*                  FAUX    : l'image d'arriere-plan est la premiere de la liste,            */ \
                                        /*                  VRAI    : l'image d'arriere-plan est la derniere de la liste.            */ \
                                        /*                                                                                           */
#define   INCOMPLET_AXE_OZ                                                                                                              \
                    FAUX                                                                                                                \
                                        /* Indique s'il peut manquer des images (ceci fut introduit le 20120322085620)...            */
#define   INCOMPLET_AXE_OZA_VALEUR_STANDARD                                                                                             \
                    NOIR
#define   INCOMPLET_AXE_OZA_VALEUR_NON_STANDARD                                                                                         \
                    FLOT__NOIR
#define   INCOMPLET_AXE_OZT_VALEUR                                                                                                      \
                    NOIR
                                        /* Donne la valeur des images manquantes (ceci fut introduit le 20120322092116)...           */

#define   FAIRE_UNE_ROTATION_TRIDIMENSIONNELLE                                                                                          \
                    VRAI                                                                                                                \
                                        /* Faut-il faire une rotation tridimensionnelle ('VRAI') ou bien une transformation          */ \
                                        /* arbitraire ('FAUX') ce qui ouvre la porte a des 'IFS' tridimensionnelles...               */

#define   RAPPORT_DE_ZOOM                                                                                                               \
                    ABSENCE_D_EFFET_DE_ZOOM                                                                                             \
                                        /* Rapport de zoom.                                                                          */
#define   ROTATION_OX_IMPLICITE                                                                                                         \
                    FZERO
#define   ROTATION_OY_IMPLICITE                                                                                                         \
                    FZERO
#define   ROTATION_OZ_IMPLICITE                                                                                                         \
                    FZERO
                                        /* Angles de rotation.                                                                       */

#define   MEMORISER_LE_Z_BUFFER                                                                                                         \
                    FAUX                                                                                                                \
                                        /* Indique si le 'Z-Buffer' doit etre fourni comme resultat ('VRAI'), ou bien oublie         */ \
                                        /* apres le calcul ('FAUX'). .                                                               */
#define   VALEUR_INITIALE_DU_Z_BUFFER                                                                                                   \
                    F_MOINS_LE_PETIT_INFINI                                                                                             \
                                        /* Valeur a utiliser pour initialiser le 'Z-Buffer' si cela est necessaire.                  */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M A C R O S   U T I L E S  :                                                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xci/accumule.41.I"
                                        /* Introduit le 20120621092247...                                                            */

#define   imageR                                                                                                                        \
                    ImageR

#define   CHARGEMENT_DE_LA_TEXTURE                                                                                                      \
                    Bblock                                                                                                              \
                    CALi(idAload_album(albumT                                                                                           \
                                      ,nom_albumT                                                                                       \
                                      ,nom_postfixeT                                                                                    \
                                      ,premiere_imageT                                                                                  \
                                      ,pas_des_imagesT                                                                                  \
                                      ,nombre_de_chiffresT                                                                              \
                                      ,FAUX                                                                                             \
                                      ,UNDEF                                                                                            \
                                      ,inverser_l_axe_OZT                                                                               \
                                      ,incomplet_axe_OZT                                                                                \
                                      ,incomplet_axe_OZT_valeur                                                                         \
                                       )                                                                                                \
                         );                                                                                                             \
                                        /* Chargement de l'album d'images Texture...                                                 */ \
                    Eblock                                                                                                              \
                                        /* Introduit le 20210430084457 afin de pouvoir separer nettement le cas "standard" du        */ \
                                        /* cas "non standard"...                                                                     */


#define   EPAISSISSEMENT_EVENTUEL_D_UN_ALBUM(album)                                                                                     \
                    Bblock                                                                                                              \
                    Test(IL_FAUT(epaissir_les_albums_arguments))                                                                        \
                         Bblock                                                                                                         \
                         CALS(Aepaississement(album,album,Zmin_argument,Zmax_argument));                                                \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Introduit le 20210430144410 pour simplifier...                                            */

#define   DEBUT__DE_LA_DEFINITION_DE_L_AXE_OZ__EVENTUELLEMENT_EPAISSI                                                                   \
                    BSaveModifyVariable(Int,Zmin,Zmin_effectif);                                                                        \
                    BSaveModifyVariable(Int,Zmax,Zmax_effectif);
#define   FIN____DE_LA_DEFINITION_DE_L_AXE_OZ__EVENTUELLEMENT_EPAISSI                                                                   \
                    ESaveModifyVariable(Int,Zmax);                                                                                      \
                    ESaveModifyVariable(Int,Zmin);

#define   DEBUT__DE_LA_DEFINITION_DE_L_AXE_OZ__ARGUMENT                                                                                 \
                    BSaveModifyVariable(Int,Zmin,Zmin_argument);                                                                        \
                    BSaveModifyVariable(Int,Zmax,Zmax_argument);
#define   FIN____DE_LA_DEFINITION_DE_L_AXE_OZ__ARGUMENT                                                                                 \
                    ESaveModifyVariable(Int,Zmax);                                                                                      \
                    ESaveModifyVariable(Int,Zmin);

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        A C C U M U L A T I O N   T R I D I M E N S I O N N E L L E   D ' U N   A L B U M   " F L O T T A N T "                    */
/*        A V E C   T E X T U R A G E  :                                                                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE));
     DEFV(CHAR,INIC(POINTERc(nom_albumA),NOM_PIPE));
     DEFV(CHAR,INIC(POINTERc(nom_albumT),NOM_PIPE));

     DEFV(CHAR,INIC(POINTERc(nom_postfixeA),NOM_UNDEF_VIDE));
                                        /* Nom d'un eventuel postfixe a placer derriere <nom_albumA><numero> (par exemple '$ROUGE'). */
     DEFV(Int,INIT(premiere_imageA,PREMIERE_IMAGE));
                                        /* Numero de la premiere image,                                                              */
     DEFV(Int,INIT(pas_des_imagesA,PAS_DES_IMAGES));
                                        /* Pas de passage d'un numero d'image a une autre.                                           */
     DEFV(Int,INIT(nombre_de_chiffresA,NOMBRE_DE_CHIFFRES));
                                        /* Nombre de chiffres codant le numero des images de la serie...                             */

     DEFV(Logical,INIT(epaissir_les_albums_arguments,EPAISSIR_LES_ALBUMS_ARGUMENTS));
                                        /* Indique s'il faut epaissir les albums Argument ('VRAI') ou pas ('FAUX'), la valeur par    */
                                        /* defaut garantissant la compatibilite anterieure. Ceci a ete introduit le 20210430085517.  */

     DEFV(Logical,INIT(accelerer_l_accumulation_aux_depens_de_la_qualite,ACCELERER_L_ACCUMULATION_AUX_DEPENS_DE_LA_QUALITE));
                                        /* Indique s'il est possible d'accelerer l'accumulation (aux depens de la qualite) lors de   */
                                        /* phase de mise au point d'une image ('v $xiirc/.MANE.41.4.$U _____Accelerer'). Ceci a ete  */
                                        /* introduit le 20180124100719...                                                            */

     DEFV(Logical,INIT(inverser_l_axe_OZA,INVERSER_L_AXE_OZ));
                                        /* Indique s'il faut inverser l'ordre de parcours de l'ensemble des images. On a :           */
                                        /*                                                                                           */
                                        /*                  FAUX    : l'image d'arriere-plan est la premiere de la liste,            */
                                        /*                  VRAI    : l'image d'arriere-plan est la derniere de la liste.            */
                                        /*                                                                                           */
     DEFV(Logical,INIT(incomplet_axe_OZA,INCOMPLET_AXE_OZ));
                                        /* Indique s'il peut manquer des images (ceci fut introduit le 20120322085620)...            */
     DEFV(genere_p,INIT(incomplet_axe_OZA_valeur_standard,INCOMPLET_AXE_OZA_VALEUR_STANDARD));
     DEFV(genere_Float,INIT(incomplet_axe_OZA_valeur_non_standard,INCOMPLET_AXE_OZA_VALEUR_NON_STANDARD));
                                        /* Donne la valeur des images manquantes (ceci fut introduit le 20120322092116)...           */

     DEFV(CHAR,INIC(POINTERc(nom_postfixeT),NOM_UNDEF_VIDE));
                                        /* Nom d'un eventuel postfixe a placer derriere <nom_albumT><numero> (par exemple '$ROUGE'). */
     DEFV(Int,INIT(premiere_imageT,PREMIERE_IMAGE));
                                        /* Numero de la premiere image,                                                              */
     DEFV(Int,INIT(pas_des_imagesT,PAS_DES_IMAGES));
                                        /* Pas de passage d'un numero d'image a une autre.                                           */
     DEFV(Int,INIT(nombre_de_chiffresT,NOMBRE_DE_CHIFFRES));
                                        /* Nombre de chiffres codant le numero des images de la serie...                             */
     DEFV(Logical,INIT(inverser_l_axe_OZT,INVERSER_L_AXE_OZ));
                                        /* Indique s'il faut inverser l'ordre de parcours de l'ensemble des images. On a :           */
                                        /*                                                                                           */
                                        /*                  FAUX    : l'image d'arriere-plan est la premiere de la liste,            */
                                        /*                  VRAI    : l'image d'arriere-plan est la derniere de la liste.            */
                                        /*                                                                                           */
     DEFV(Logical,INIT(incomplet_axe_OZT,INCOMPLET_AXE_OZ));
                                        /* Indique s'il peut manquer des images (ceci fut introduit le 20120322085620)...            */
     DEFV(genere_p,INIT(incomplet_axe_OZT_valeur,INCOMPLET_AXE_OZT_VALEUR));
                                        /* Donne la valeur des images manquantes (ceci fut introduit le 20120322092116)...           */

     DEFV(Logical,INIT(faire_une_rotation_tridimensionnelle,FAIRE_UNE_ROTATION_TRIDIMENSIONNELLE));
                                        /* Faut-il faire une rotation tridimensionnelle ('VRAI') ou bien une transformation          */
                                        /* arbitraire ('FAUX') ce qui ouvre la porte a des 'IFS' tridimensionnelles...               */
     DEFV(Float,INIT(rapport_DE_ZOOM,RAPPORT_DE_ZOOM));
                                        /* Rapport de zoom.                                                                          */
     DEFV(Float,INIT(angle_de_ROTATION_OX,ROTATION_OX_IMPLICITE));
     DEFV(Float,INIT(angle_de_ROTATION_OY,ROTATION_OY_IMPLICITE));
     DEFV(Float,INIT(angle_de_ROTATION_OZ,ROTATION_OZ_IMPLICITE));
                                        /* Angles de rotation.                                                                       */

     DEFV(CHAR,INIC(POINTERc(nom_imageZ),NOM_PIPE));
     DEFV(Logical,INIT(memoriser_le_Z_Buffer,MEMORISER_LE_Z_BUFFER));
                                        /* Indique si le 'Z-Buffer' doit etre fourni comme resultat ('VRAI'), ou bien oublie         */
                                        /* apres le calcul ('FAUX'). .                                                               */
     /*..............................................................................................................................*/
     BSaveModifyVariable(Logical,S_ACCELERATEUR__ALOAD_POINT_COORDONNEES_01_____utiliser_l_accelerateur,VRAI);
                                        /* Introduit le 20120620092224...                                                            */

     EGAL(valider_les_axes_OX_OY_OZ,VRAI);
     EGAL(coefficient_de_forme_de_l_espace_tridimensionnel,COEFFICIENT_DE_FORME_DE_L_ESPACE_TRIDIMENSIONNEL);
                                        /* Introduit le 20140103184234 lors de la mise au point de 'v $xiirv/PIPO.F1.21' a cause     */
                                        /* du probleme 'v $xiii/di_album$FON 20120321113814' qui se manifeste, par exemple, si       */
                                        /* l'axe 'OZ' est beaucoup plus "court" que les axes 'OX' et/ou 'OY'. Ceci fut complete      */
                                        /* le 20140103185926...                                                                      */

     EGAL(Z_Buffer_____valeur_initiale,VALEUR_INITIALE_DU_Z_BUFFER);
                                        /* A priori.                                                                                 */

#define   Iaccumulation_tri_dimensionnelle_non_standard_texturee_____demi_dimension_gradient_X                                          \
                    Iaccumulation_tri_dimensionnelle_non_standard_texturee_____demi_dimension_de_calcul_du_gradient_X
#define   Iaccumulation_tri_dimensionnelle_non_standard_texturee_____demi_dimension_gradient_Y                                          \
                    Iaccumulation_tri_dimensionnelle_non_standard_texturee_____demi_dimension_de_calcul_du_gradient_Y
#define   Iaccumulation_tri_dimensionnelle_non_standard_texturee_____demi_dimension_gradient_Z                                          \
                    Iaccumulation_tri_dimensionnelle_non_standard_texturee_____demi_dimension_de_calcul_du_gradient_Z
#define   Iaccumulation_tri_dimensionnelle_standard_texturee_____renvoyer_niveau_maximal_albumA                                         \
                    Iaccumulation_tri_dimensionnelle_standard_texturee_____renvoyer_le_niveau_maximal_de_albumA
#define   Iaccumulation_tri_dimensionnelle_non_standard_texturee_____renvoyer_niveau_maximal_albumA                                     \
                    Iaccumulation_tri_dimensionnelle_non_standard_texturee_____renvoyer_le_niveau_maximal_de_albumA
#define   Iaccumulation_tri_dimensionnelle_standard_texturee_____renvoyer_niveau_maximal_albumT                                         \
                    Iaccumulation_tri_dimensionnelle_standard_texturee_____renvoyer_le_niveau_maximal_de_albumT
#define   Iaccumulation_tri_dimensionnelle_non_standard_texturee_____renvoyer_niveau_maximal_albumT                                     \
                    Iaccumulation_tri_dimensionnelle_non_standard_texturee_____renvoyer_le_niveau_maximal_de_albumT
                                        /* Afin de reduire la longueur des lignes qui suivent...                                     */

#define   Iaccumulation_tri_dimensionnelle_standard_texturee_____ne_visualiser_que_gradients_nuls                                       \
                    Iaccumulation_tri_dimensionnelle_standard_texturee_____ne_visualiser_que_les_gradients_nuls
#define   Iaccumulation_tri_dimensionnelle_non_standard_texturee_____ne_visualiser_que_gradients_nuls                                   \
                    Iaccumulation_tri_dimensionnelle_non_standard_texturee_____ne_visualiser_que_les_gradients_nuls
                                        /* Afin de reduire la longueur des lignes qui suivent...                                     */

     GET_ARGUMENTSv(nombre_d_arguments
                   ,BLOC(GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20091211=""compatibilite_20091211="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____compatibilite_20091211
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____compatibilite_20091211
                                          );
                         GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20100120=""compatibilite_20100120="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____compatibilite_20100120
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____compatibilite_20100120
                                          );
                         GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20100625=""compatibilite_20100625="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____compatibilite_20100625
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____compatibilite_20100625
                                          );
                         GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20101008=""compatibilite_20101008="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____compatibilite_20101008
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____compatibilite_20101008
                                          );
                                        /* Argument introduit le 20101008115337...                                                   */
                         GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20101121=""compatibilite_20101121="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____compatibilite_20101121
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____compatibilite_20101121
                                          );
                                        /* Argument introduit le 20101121112524...                                                   */
                         GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20101125=""compatibilite_20101125="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____compatibilite_20101125
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____compatibilite_20101125
                                          );
                                        /* Argument introduit le 20101125125546...                                                   */
                         GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20101127=""compatibilite_20101127="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____compatibilite_20101127
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____compatibilite_20101127
                                          );
                                        /* Argument introduit le 20101127092939...                                                   */
                         GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20101128=""compatibilite_20101128="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____compatibilite_20101128
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____compatibilite_20101128
                                          );
                                        /* Argument introduit le 20101128145935...                                                   */
                         GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20141004=""compatibilite_20141004="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____compatibilite_20141004
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____compatibilite_20141004
                                          );
                                        /* Argument introduit le 20141004184055...                                                   */
                         GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20141005=""compatibilite_20141005="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____compatibilite_20141005
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____compatibilite_20141005
                                          );
                                        /* Argument introduit le 20141005111657...                                                   */
                         GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20160125=""compatibilite_20160125="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____compatibilite_20160125
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____compatibilite_20160125
                                          );
                                        /* Argument introduit le 20160125104641...                                                   */

                         GET_ARGUMENT_C("albumA=""A=",nom_albumA);
                         GET_ARGUMENT_C("postfixeA=",nom_postfixeA);
                         GET_ARGUMENT_I("premiereA=",premiere_imageA);
                         GET_ARGUMENTS2_I("pasA=",pas_des_imagesA,pasZ);
                                        /* L'argument 'pasZ' fut introduit le 20110119140805...                                      */
                         GET_ARGUMENT_I("chiffresA=",nombre_de_chiffresA);

                         GET_ARGUMENT_L("epaissir_album=""epaissir_albums=""epaissir=",epaissir_les_albums_arguments);
                                        /* Argument introduit le 20210430085517 et le singulier a ete ajoute le 20210501093523       */
                                        /* pour la compatibilite avec 'v $xci/accumule.41$K epaissir_album='...                      */

                         GET_ARGUMENT_L("accelerer=",accelerer_l_accumulation_aux_depens_de_la_qualite);
                         GET_ARGUMENT_N("qualite=",accelerer_l_accumulation_aux_depens_de_la_qualite);
                                        /* Argument introduit le 20180124100719...                                                   */

                         GET_ARGUMENT_L("inverser_ZA=""inv_ZA=",inverser_l_axe_OZA);
                         GET_ARGUMENT_L("incomplet_ZA=""inc_ZA=",incomplet_axe_OZA);
                                        /* Argument introduit le 20120322085620...                                                   */
                         GET_ARGUMENT_P("valeur_standard_incomplet_ZA=""vsinc_ZA=",incomplet_axe_OZA_valeur_standard);
                         GET_ARGUMENT_F("valeur_non_standard_incomplet_ZA=""vnsinc_ZA=",incomplet_axe_OZA_valeur_non_standard);
                                        /* Argument introduit le 20120322092116...                                                   */

                         GET_ARGUMENTS2_L("optimiser="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____optimisation_1
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____optimisation_1
                                          );
                                        /* Introduit le 20170829155720...                                                            */

                         GET_ARGUMENTS2_L("texturer="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____texturer
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____texturer
                                          );
                                        /* Introduit le 20101125223030 pour faciliter les tests...                                   */
                         GET_ARGUMENT_C("albumT=""T=",nom_albumT);
                         GET_ARGUMENT_C("postfixeT=",nom_postfixeT);
                         GET_ARGUMENT_I("premiereT=",premiere_imageT);
                         GET_ARGUMENT_I("pasT=",pas_des_imagesT);
                         GET_ARGUMENT_I("chiffresT=",nombre_de_chiffresT);
                         GET_ARGUMENT_L("inverser_ZT=""inv_ZT=",inverser_l_axe_OZT);
                                        /* Argument introduit le 20100624083255...                                                   */
                         GET_ARGUMENT_L("incomplet_ZT=""inc_ZT=",incomplet_axe_OZT);
                                        /* Argument introduit le 20120322085620...                                                   */
                         GET_ARGUMENT_P("valeur_standard_incomplet_ZT=""vsinc_ZT=",incomplet_axe_OZT_valeur);
                                        /* Argument introduit le 20120322092116...                                                   */

                         GET_ARGUMENT_C("imageR=""R=",nom_imageR);

                         GET_ARGUMENT_L("standard=",les_images_sont_standards);

                         GET_ARGUMENTS2_L("avertir_coordonnees_hors_espace=""ache="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____avertir_coordonnees_hors_espace
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____avertir_coordonnees_hors_espace
                                          );
                                        /* Arguments introduits le 20101206153658...                                                 */

                         GET_ARGUMENT_L("rotation=",faire_une_rotation_tridimensionnelle);
                         GET_ARGUMENT_N("transformation_quelconque=""tq=",faire_une_rotation_tridimensionnelle);

                         GET_ARGUMENT_F("ZOOM=",rapport_DE_ZOOM);

                         PROCESS_ARGUMENT_F("ROTATION_OX=",angle_de_ROTATION_OX
                                           ,BLOC(VIDE;)
                                           ,BLOC(EGAL(vecteurs_____ordre_de_la_ROTATION_0X,nombre_d_arguments_recuperes);
                                                 )
                                            );
                         PROCESS_ARGUMENT_F("ROTATION_OY=",angle_de_ROTATION_OY
                                           ,BLOC(VIDE;)
                                           ,BLOC(EGAL(vecteurs_____ordre_de_la_ROTATION_0Y,nombre_d_arguments_recuperes);
                                                 )
                                            );
                         PROCESS_ARGUMENT_F("ROTATION_OZ=",angle_de_ROTATION_OZ
                                           ,BLOC(VIDE;)
                                           ,BLOC(EGAL(vecteurs_____ordre_de_la_ROTATION_0Z,nombre_d_arguments_recuperes);
                                                 )
                                            );

                         GET_ARGUMENT_F("a11=",ASD2(vecteurs_____matrix_3D,cx,cx));
                         GET_ARGUMENT_F("a12=",ASD2(vecteurs_____matrix_3D,cx,cy));
                         GET_ARGUMENT_F("a13=",ASD2(vecteurs_____matrix_3D,cx,cz));

                         GET_ARGUMENT_F("a21=",ASD2(vecteurs_____matrix_3D,cy,cx));
                         GET_ARGUMENT_F("a22=",ASD2(vecteurs_____matrix_3D,cy,cy));
                         GET_ARGUMENT_F("a23=",ASD2(vecteurs_____matrix_3D,cy,cz));

                         GET_ARGUMENT_F("a31=",ASD2(vecteurs_____matrix_3D,cz,cx));
                         GET_ARGUMENT_F("a32=",ASD2(vecteurs_____matrix_3D,cz,cy));
                         GET_ARGUMENT_F("a33=",ASD2(vecteurs_____matrix_3D,cz,cz));

                         GET_ARGUMENTS2_F("tX=""TRANSLATION_OX="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____translation_OX
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____translation_OX
                                          );
                         GET_ARGUMENTS2_F("tY=""TRANSLATION_OY="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____translation_OY
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____translation_OY
                                          );
                         GET_ARGUMENTS2_F("tZ=""TRANSLATION_OZ="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____translation_OZ
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____translation_OZ
                                          );

                         GET_ARGUMENTS__Aload_point_coordonnees_01;
                                        /* Introduit sous cette forme le 20120621092247...                                           */

                         GET_ARGUMENTS2_L("periodiser_X=""per_X="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____periodiser_X
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____periodiser_X
                                          );
                         GET_ARGUMENTS2_L("symetriser_X=""sym_X="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____symetriser_X
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____symetriser_X
                                          );
                         GET_ARGUMENTS2_L("prolonger_X=""pro_X="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____prolonger_X
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____prolonger_X
                                          );
                         GET_ARGUMENTS2_L("periodiser_Y=""per_Y="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____periodiser_Y
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____periodiser_Y
                                          );
                         GET_ARGUMENTS2_L("symetriser_Y=""sym_Y="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____symetriser_Y
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____symetriser_Y
                                          );
                         GET_ARGUMENTS2_L("prolonger_Y=""pro_Y="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____prolonger_Y
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____prolonger_Y
                                          );
                         GET_ARGUMENTS2_L("periodiser_Z=""per_Z="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____periodiser_Z
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____periodiser_Z
                                          );
                         GET_ARGUMENTS2_L("symetriser_Z=""sym_Z="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____symetriser_Z
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____symetriser_Z
                                          );
                         GET_ARGUMENTS2_L("prolonger_Z=""pro_Z="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____prolonger_Z
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____prolonger_Z
                                          );
                         GET_ARGUMENTS2_F("niveau_hors_album=""nha=""niveau_hors_image=""nhi="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____niveau_flottant_hors_image
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____niveau_flottant_hors_image
                                          );

                         GET_ARGUMENTS2_F("niveau_vide=""vide="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____niveau_du_vide_dans_l_album
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____niveau_du_vide_dans_l_album
                                          );
                                        /* Argument introduit le 20101008113146...                                                   */

                         GET_ARGUMENTS2_L("accepter_points_isoles=""api="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____accepter_les_points_isoles
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____accepter_les_points_isoles
                                          );
                                        /* Argument introduit le 20190208152052...                                                   */

                         GET_ARGUMENTS2_L("Aniveau_maximal=""Amaximum="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____renvoyer_niveau_maximal_albumA
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____renvoyer_niveau_maximal_albumA
                                          );
                         GET_ARGUMENTS2_L("Tniveau_maximal=""Tmaximum="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____renvoyer_niveau_maximal_albumT
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____renvoyer_niveau_maximal_albumT
                                          );
                                        /* Argument introduit le 20100703102211...                                                   */
                                        /*                                                                                           */
                                        /* Le 20101128092931 '"Tniveau_maximal=""Tmaximum="' a ete modifie dans la mesure ou a       */
                                        /* compter de cette date 'albumA' et 'albumT' sont geres de la meme facon, c'est-a-dire a    */
                                        /* l'aide de fonctions d'acces entierement compatibles...                                    */
                                        /*                                                                                           */
                                        /* Le 20101129121357 fut finalement introduite une distinction entre 'albumA' et 'albumT'... */

                         GET_ARGUMENTS2_L("Tperiodiser_X=""Tper_X="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____texture_periodiser_X
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____texture_periodiser_X
                                          );
                         GET_ARGUMENTS2_L("Tsymetriser_X=""Tsym_X="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____texture_symetriser_X
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____texture_symetriser_X
                                          );
                         GET_ARGUMENTS2_L("Tprolonger_X=""Tpro_X="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____texture_prolonger_X
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____texture_prolonger_X
                                          );
                         GET_ARGUMENTS2_L("Tperiodiser_Y=""Tper_Y="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____texture_periodiser_Y
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____texture_periodiser_Y
                                          );
                         GET_ARGUMENTS2_L("Tsymetriser_Y=""Tsym_Y="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____texture_symetriser_Y
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____texture_symetriser_Y
                                          );
                         GET_ARGUMENTS2_L("Tprolonger_Y=""Tpro_Y="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____texture_prolonger_Y
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____texture_prolonger_Y
                                          );
                         GET_ARGUMENTS2_L("Tperiodiser_Z=""Tper_Z="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____texture_periodiser_Z
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____texture_periodiser_Z
                                          );
                         GET_ARGUMENTS2_L("Tsymetriser_Z=""Tsym_Z="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____texture_symetriser_Z
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____texture_symetriser_Z
                                          );
                         GET_ARGUMENTS2_L("Tprolonger_Z=""Tpro_Z="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____texture_prolonger_Z
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____texture_prolonger_Z
                                          );
                         GET_ARGUMENTS2_P("Tniveau_hors_image=""Tnhi="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____texture_niveau_hors_image
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____texture_niveau_hors_image
                                          );
                                        /* Arguments introduits le 20100625092256.                                                   */

                         GET_ARGUMENTS2_F("minimum_X=""mX="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____minimum_de_coordonnee_X
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____minimum_de_coordonnee_X
                                          );
                         GET_ARGUMENTS2_F("maximum_X=""MX="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____maximum_de_coordonnee_X
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____maximum_de_coordonnee_X
                                          );
                         GET_ARGUMENTS2_F("minimum_Y=""mY="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____minimum_de_coordonnee_Y
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____minimum_de_coordonnee_Y
                                          );
                         GET_ARGUMENTS2_F("maximum_Y=""MY="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____maximum_de_coordonnee_Y
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____maximum_de_coordonnee_Y
                                          );
                         GET_ARGUMENTS2_F("minimum_Z=""mZ="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____minimum_de_coordonnee_Z
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____minimum_de_coordonnee_Z
                                          );
                         GET_ARGUMENTS2_F("maximum_Z=""MZ="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____maximum_de_coordonnee_Z
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____maximum_de_coordonnee_Z
                                          );
                                        /* Arguments introduits le 20160125104641...                                                 */

                         GET_ARGUMENTS2_F("exposant_niveau=""en="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____exposant_du_niveau
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____exposant_du_niveau
                                          );

                         GET_ARGUMENTS2_L("ponderer_directions_niveaux=""pdn=""centre_de_gravite=""cdg="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____calculer_le_centre_de_gravite
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____calculer_le_centre_de_gravite
                                          );
                         GET_ARGUMENTS2_L("maximum_differences=""md="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____utiliser_le_maximum_des_differences
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____utiliser_le_maximum_des_differences
                                          );
                         GET_ARGUMENTS2_N("somme_differences=""sd="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____utiliser_le_maximum_des_differences
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____utiliser_le_maximum_des_differences
                                          );

                         GET_ARGUMENTS2_F("seuil="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____seuil_du_niveau_courant
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____seuil_du_niveau_courant
                                          );

                         GET_ARGUMENTS2_L("cumuler_niveau=""cn="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____cumuler_le_niveau_courant
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____cumuler_le_niveau_courant
                                          );

                         GET_ARGUMENTS2_L("cumuler_niveau_lumineux=""cnl="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____cumuler_le_niveau_lumineux
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____cumuler_le_niveau_lumineux
                                          );

                         GET_ARGUMENTS2_L("cumuler_coordonnees_XYZ=""ccXYZ="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____cumuler_les_coordonnees_XYZ
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____cumuler_les_coordonnees_XYZ
                                          );
                         GET_ARGUMENTS2_F("ponderation_X=""pX="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____ponderation_de_la_coordonnees_X
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____ponderation_de_la_coordonnees_X
                                          );
                         GET_ARGUMENTS2_F("ponderation_Y=""pY="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____ponderation_de_la_coordonnees_Y
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____ponderation_de_la_coordonnees_Y
                                          );
                         GET_ARGUMENTS2_F("ponderation_Z=""pZ="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____ponderation_de_la_coordonnees_Z
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____ponderation_de_la_coordonnees_Z
                                          );

                         GET_ARGUMENTS2_L("cumuler_coordonnees_RPT=""ccRPT="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____cumuler_les_coordonnees_RPT
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____cumuler_les_coordonnees_RPT
                                          );
                         GET_ARGUMENTS2_F("ponderation_R=""pR="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____ponderation_de_la_coordonnees_R
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____ponderation_de_la_coordonnees_R
                                          );
                         GET_ARGUMENTS2_F("ponderation_P=""pP="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____ponderation_de_la_coordonnees_P
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____ponderation_de_la_coordonnees_P
                                          );
                         GET_ARGUMENTS2_F("ponderation_T=""pT="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____ponderation_de_la_coordonnees_T
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____ponderation_de_la_coordonnees_T
                                          );
                                        /* Arguments introduits le 20200224132939...                                                 */

                         GET_ARGUMENTS2_F("exposant_X=""eX="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____exposant_de_la_coordonnees_X
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____exposant_de_la_coordonnees_X
                                          );
                         GET_ARGUMENTS2_F("exposant_Y=""eY="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____exposant_de_la_coordonnees_Y
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____exposant_de_la_coordonnees_Y
                                          );
                         GET_ARGUMENTS2_F("exposant_Z=""eZ=""depth_cueing=""depth-cueing="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____exposant_de_la_coordonnees_Z
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____exposant_de_la_coordonnees_Z
                                          );
                                        /* Arguments completes le 20100202152514.                                                    */
                                        /*                                                                                           */
                                        /* Parametrage du "depth-cueing" :                                                           */
                                        /*                                                                                           */
                                        /*                  exposant_de_la_coordonnees_Z=0          pas de "depth-cueing",           */
                                        /*                  exposant_de_la_coordonnees_Z=1          "depth-cueing" maximal...        */
                                        /*                                                                                           */

                         GET_ARGUMENTS2_L("source_lumineuse=""sl="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____eclairer_par_une_source_lumineuse
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____eclairer_par_une_source_lumineuse
                                          );
                         GET_ARGUMENTS2_F("source_lumineuse_X=""slX=""slx="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____source_lumineuse_X
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____source_lumineuse_X
                                          );
                         GET_ARGUMENTS2_F("source_lumineuse_Y=""slY=""sly="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____source_lumineuse_Y
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____source_lumineuse_Y
                                          );
                         GET_ARGUMENTS2_F("source_lumineuse_Z=""slZ=""slz="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____source_lumineuse_Z
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____source_lumineuse_Z
                                          );
                         GET_ARGUMENTS2_F("source_lumineuse_intensite_speculaire=""slis=""is=""speculaire="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____source_lumineuse_specularite
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____source_lumineuse_specularite
                                          );

                         GET_ARGUMENTS2_I("demi_dimension_gradient_X=""ddgX=""ddgx=""dx=""dX="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____demi_dimension_de_calcul_du_gradient_X
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____demi_dimension_gradient_X
                                          );
                         GET_ARGUMENTS2_I("demi_dimension_gradient_Y=""ddgY=""ddgy=""dy=""dY="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____demi_dimension_de_calcul_du_gradient_Y
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____demi_dimension_gradient_Y
                                          );
                         GET_ARGUMENTS2_I("demi_dimension_gradient_Z=""ddgZ=""ddgz=""dz=""dZ="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____demi_dimension_de_calcul_du_gradient_Z
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____demi_dimension_gradient_Z
                                          );

                         GET_ARGUMENTS2_L("visualiser_que_gradients_nuls=""vqgn="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____ne_visualiser_que_gradients_nuls
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____ne_visualiser_que_gradients_nuls
                                          );
                                        /* Argument introduit le 20141005083648...                                                   */
                         GET_ARGUMENTS2_L("visualiser_gradients_nuls=""vgn="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____visualiser_les_gradients_nuls
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____visualiser_les_gradients_nuls
                                          );
                                        /* Argument introduit le 20141005111657...                                                   */

                         GET_ARGUMENT_F("Z0=",Z_Buffer_____valeur_initiale);
                         GET_ARGUMENT_L("zbuffer=""zBuffer=""Zbuffer=""ZBuffer=""Z-Buffer=",memoriser_le_Z_Buffer);
                         GET_ARGUMENT_C("imageZ=""Z=",nom_imageZ);

                         GET_ARGUMENTS2_P("niveau_fond=""fond=""nf="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____niveau_du_fond
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____niveau_du_fond
                                          );

                         GET_ARGUMENTS2_L("editer_gradient=""eg="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____editer_gradient
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____editer_gradient
                                          );
                                        /* Arguments introduits le 20210424175949...                                                 */
                                        /*                                                                                           */
                                        /* Le 20210424185509, je note qu'utiliser simultanement :                                    */
                                        /*                                                                                           */
                                        /*                  Alleger=VRAI                                                             */
                                        /*                                                                                           */
                                        /* est plus que recommande ('v $xci/accumule.42$K 20210425102320' a ce propos...).           */

                         GET_ARGUMENTS2_L("editer_extrema_niveau_resultant=""eenr="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____editer_extrema_niveau_resultant
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____editer_extrema_niveau_resultant
                                          );
                                        /* Arguments introduits le 20111121120435...                                                 */
                         GET_ARGUMENTS2_L("renormaliser_niveau_resultant=""rnr="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____renormaliser_niveau_resultant
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____renormaliser_niveau_resultant
                                          );
                                        /* Arguments introduits le 20111119115303...                                                 */
                         GET_ARGUMENTS2_F("minimum_niveau_resultant=""minnr="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____minimum_force_du_niveau_resultant
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____minimum_force_du_niveau_resultant
                                          );
                         GET_ARGUMENTS2_F("maximum_niveau_resultant=""maxnr="
                                         ,Iaccumulation_tri_dimensionnelle_standard_texturee_____maximum_force_du_niveau_resultant
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____maximum_force_du_niveau_resultant
                                          );
                                        /* Arguments introduits le 20111121114716...                                                 */
                         )
                    );

     Test(IFOU(IL_FAUT(Iaccumulation_tri_dimensionnelle_standard_texturee_____editer_gradient)
              ,IL_FAUT(Iaccumulation_tri_dimensionnelle_non_standard_texturee_____editer_gradient)
               )
          )
          Bblock
          EGAL(gPRINT_DEFAUT_____n_editer_que_le_message_principal,VRAI);
                                        /* Forcage introduit le 20210425102320...                                                    */
          Eblock
     ATes
          Bblock
          Eblock
     ETes

     Test(EST_VRAI(les_images_sont_standards))
          Bblock
          Test(IL_NE_FAUT_PAS(FAload_point_coordonnees_01_____interpoler_bilineairement_ou_bicubiquement))
               Bblock
               EGAL(Iaccumulation_tri_dimensionnelle_standard_texturee_____optimisation_1,VRAI);
                                        /* Lorsqu'il ne faut pas interpoler, on force l'optimisation (introduit le 20170830085130).  */
               Eblock
          ATes
               Bblock
               Eblock
          ETes
          Eblock
     ATes
          Bblock
          Test(IL_NE_FAUT_PAS(FFAload_point_coordonnees_01_____interpoler_bilineairement_ou_bicubiquement))
               Bblock
               EGAL(Iaccumulation_tri_dimensionnelle_non_standard_texturee_____optimisation_1,VRAI);
                                        /* Lorsqu'il ne faut pas interpoler, on force l'optimisation (introduit le 20170830085130).  */
               Eblock
          ATes
               Bblock
               Eblock
          ETes
          Eblock
     ETes

     Test(IL_FAUT(accelerer_l_accumulation_aux_depens_de_la_qualite))
                                        /* Test introduit le 20180124100719...                                                       */
          Bblock
          Test(IFEQ(DEMI_DIMENSION_XYZ_MATRIX_CALCUL_GRADIENT,UN))
               Bblock
               PRINT_ATTENTION("cette option est sans d'interet car les valeurs par defaut sont les plus petites possibles");
                                        /* Message introduit le 20180124110434...                                                    */
               Eblock
          ATes
               Bblock
               Test(EST_VRAI(les_images_sont_standards))
                    Bblock
                    EGAL(Iaccumulation_tri_dimensionnelle_standard_texturee_____demi_dimension_de_calcul_du_gradient_X,UN);
                    EGAL(Iaccumulation_tri_dimensionnelle_standard_texturee_____demi_dimension_de_calcul_du_gradient_Y,UN);
                    EGAL(Iaccumulation_tri_dimensionnelle_standard_texturee_____demi_dimension_de_calcul_du_gradient_Z,UN);
                                        /* On notera le 20180124103752 que j'ai essaye un 'CLIR(...)' mais que cela ne fonctionne    */
                                        /* pas correctement : l'image resultante est NOIR. Du coup cet option d'acceleration n'a     */
                                        /* d'interet que si 'DEMI_DIMENSION_XYZ_MATRIX_CALCUL_GRADIENT' (valeur par defaut de ces    */
                                        /* demi-dimensions) est superieure a 1...                                                    */
                    Eblock
               ATes
                    Bblock
                    EGAL(Iaccumulation_tri_dimensionnelle_non_standard_texturee_____demi_dimension_de_calcul_du_gradient_X,UN);
                    EGAL(Iaccumulation_tri_dimensionnelle_non_standard_texturee_____demi_dimension_de_calcul_du_gradient_Y,UN);
                    EGAL(Iaccumulation_tri_dimensionnelle_non_standard_texturee_____demi_dimension_de_calcul_du_gradient_Z,UN);
                                        /* On notera le 20180124103752 que j'ai essaye un 'CLIR(...)' mais que cela ne fonctionne    */
                                        /* pas correctement : l'image resultante est NOIR. Du coup cet option d'acceleration n'a     */
                                        /* d'interet que si 'DEMI_DIMENSION_XYZ_MATRIX_CALCUL_GRADIENT' (valeur par defaut de ces    */
                                        /* demi-dimensions) est superieure a 1...                                                    */
                    Eblock
               ETes
               Eblock
          ETes
          Eblock
     ATes
          Bblock
          Eblock
     ETes

#undef    Iaccumulation_tri_dimensionnelle_non_standard_texturee_____ne_visualiser_que_gradients_nuls
#undef    Iaccumulation_tri_dimensionnelle_standard_texturee_____ne_visualiser_que_gradients_nuls

#undef    Iaccumulation_tri_dimensionnelle_non_standard_texturee_____demi_dimension_gradient_Z
#undef    Iaccumulation_tri_dimensionnelle_non_standard_texturee_____demi_dimension_gradient_Y
#undef    Iaccumulation_tri_dimensionnelle_non_standard_texturee_____demi_dimension_gradient_X

     Test(IL_FAUT(faire_une_rotation_tridimensionnelle))
          Bblock
          T_ZOOM(rapport_DE_ZOOM);
                                        /* Mise en place du zoom.                                                                    */
          GENERATION_DE_LA_MATRICE_DE_ROTATION(vecteurs_____ordre_de_la_ROTATION_0X
                                              ,T_ROTATION_X(angle_de_ROTATION_OX);
                                              ,vecteurs_____ordre_de_la_ROTATION_0Y
                                              ,T_ROTATION_Y(angle_de_ROTATION_OY);
                                              ,vecteurs_____ordre_de_la_ROTATION_0Z
                                              ,T_ROTATION_Z(angle_de_ROTATION_OZ);
                                               );
                                        /* Mise en place du produit des trois rotations relatives aux trois axes.                    */
          Eblock
     ATes
          Bblock
                                        /* Dans le cas ou la transformation est arbitraire, les coefficients de la matrice sont      */
                                        /* supposes corrects apres leur entree (totale ou partielle...).                             */
          Eblock
     ETes

     CALi(Inoir(imageR));
                                        /* Au passage, le 20091212092049 j'ai essaye de charger un fond, mais cela n'a aucun         */
                                        /* interet parce que les fonctions 'Iaccumulation_tri_dimensionnelle_...(...)' positionnent  */
                                        /* tous les points de 'imageR', meme ceux qui appartiennent au fond...                       */

     Test(EST_VRAI(les_images_sont_standards))
          Bblock
          DEFV(Int,INIT(Zmin_argument,Zmin));
          DEFV(Int,INIT(Zmax_argument,Zmax));
                                        /* Definition de l'axe 'Z' argument...                                                       */
          DEFV(Int,INIT(Zmin_effectif,UNDEF));
          DEFV(Int,INIT(Zmax_effectif,UNDEF));
                                        /* Definition de l'axe 'Z' effectivement utilise...                                          */

          Test(IL_FAUT(epaissir_les_albums_arguments))
                                        /* Test introduit le 20210430100209...                                                       */
               Bblock
               EGAL(Zmin_effectif,Zmin_argument);
               EGAL(Zmax_effectif,ADD2(Zmin_effectif,LONGUEUR(DOUB(dimZ))));
                                        /* L'epaississement des albums consiste a doubler la dimension de l'axe 'Z'...               */
               Eblock
          ATes
               Bblock
               EGAL(Zmin_effectif,Zmin_argument);
               EGAL(Zmax_effectif,Zmax_argument);
                                        /* Dans ce cas, l'axe 'Z' ne change pas evidemment...                                        */
               Eblock
          ETes

          begin_nouveau_block
               Bblock
               DEBUT__DE_LA_DEFINITION_DE_L_AXE_OZ__EVENTUELLEMENT_EPAISSI;
                                        /* Definition de l'axe des 'Z' eventuellement epaissis...                                    */

               BDEFV(album,albumA);
                                        /* Definition de l'album d'images Argument avec l'axe des 'Z' eventuellement epaissis...     */
               BDEFV(album,albumT);
                                        /* Definition de l'album d'images Texture avec l'axe des 'Z' eventuellement epaissis...      */

               begin_nouveau_block
                    Bblock
                    DEBUT__DE_LA_DEFINITION_DE_L_AXE_OZ__ARGUMENT;
                                        /* Definition de l'axe des 'Z' argument...                                                   */

                    CHARGEMENT_DE_LA_TEXTURE;
                                        /* Chargement de l'album d'images Texture mis sous cette forme le 20210430084457...          */

                    FIN____DE_LA_DEFINITION_DE_L_AXE_OZ__ARGUMENT;
                    Eblock
               end_nouveau_block

               EPAISSISSEMENT_EVENTUEL_D_UN_ALBUM(albumT);
                                        /* Epaississement eventuel de l'album Texture...                                             */

               begin_nouveau_block
                    Bblock
                    DEBUT__DE_LA_DEFINITION_DE_L_AXE_OZ__ARGUMENT;
                                        /* Definition de l'axe des 'Z' argument...                                                   */

                    CALi(idAload_album(albumA
                                      ,nom_albumA
                                      ,nom_postfixeA
                                      ,premiere_imageA
                                      ,pas_des_imagesA
                                      ,nombre_de_chiffresA
                                      ,FAUX
                                      ,UNDEF
                                      ,inverser_l_axe_OZA
                                      ,incomplet_axe_OZA
                                      ,incomplet_axe_OZA_valeur_standard
                                       )
                         );
                                        /* Chargement de l'album Argument...                                                         */

                    FIN____DE_LA_DEFINITION_DE_L_AXE_OZ__ARGUMENT;
                    Eblock
               end_nouveau_block

               EPAISSISSEMENT_EVENTUEL_D_UN_ALBUM(albumA);
                                        /* Epaississement eventuel de l'album Argument...                                            */

               Test(PAS_D_ERREUR(CODE_ERREUR))
                                        /* A priori, c'est bien 'CODE_ERREUR' de 'idAload_album(...)' que l'on teste ici...          */
                    Bblock
                    CALS(Iaccumulation_tri_dimensionnelle_standard_texturee(imageR,albumA,albumT));
                    Eblock
               ATes
                    Bblock
                    Eblock
               ETes

               EDEFV(album,albumT);
               EDEFV(album,albumA);

               FIN____DE_LA_DEFINITION_DE_L_AXE_OZ__EVENTUELLEMENT_EPAISSI;
               Eblock
          end_nouveau_block
          Eblock
     ATes
          Bblock
          BDEFV(albumF,albumA);
                                        /* Definition de l'album d'images Argument...                                                */
          BDEFV(album,albumT);
                                        /* Definition de l'album d'images Texture...                                                 */

          CHARGEMENT_DE_LA_TEXTURE;
                                        /* Chargement de l'album d'images Texture mis sous cette forme le 20210430084457...          */


          CALi(idAloadF_album(albumA
                             ,nom_albumA
                             ,nom_postfixeA
                             ,premiere_imageA
                             ,pas_des_imagesA
                             ,nombre_de_chiffresA
                             ,FAUX
                             ,UNDEF
                             ,inverser_l_axe_OZA
                             ,incomplet_axe_OZA
                             ,incomplet_axe_OZA_valeur_non_standard
                              )
               );
                                        /* Chargement de l'album Argument...                                                         */

          Test(PAS_D_ERREUR(CODE_ERREUR))
               Bblock
               CALS(Iaccumulation_tri_dimensionnelle_non_standard_texturee(imageR,albumA,albumT));
               Eblock
          ATes
               Bblock
               Eblock
          ETes

          EDEFV(album,albumT);
                                        /* Definition de l'album d'images Texture...                                                 */
          EDEFV(albumF,albumA);
                                        /* Definition de l'album d'images Argument...                                                */
          Eblock
     ETes

     Test(PAS_D_ERREUR(CODE_ERREUR))
          Bblock
          CALi(Iupdate_image(nom_imageR,imageR));
          Eblock
     ATes
          Bblock
          Eblock
     ETes

     Test(IL_FAUT(memoriser_le_Z_Buffer))
          Bblock
          CALi(IupdateF_image(nom_imageZ,Z_Buffer));
                                        /* Introduit le 20091212082256...                                                            */
          Eblock
     ATes
          Bblock
          Eblock
     ETes

     ESaveModifyVariable(Logical,S_ACCELERATEUR__ALOAD_POINT_COORDONNEES_01_____utiliser_l_accelerateur);

     RETU_Commande;
     Eblock
ECommande



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