/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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 "  :                 */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        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, soit :                                                */
/*                                                                                                                                   */
/*                            inverser_l_axe_OZ=FAUX (par defaut) :                                                                  */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                                                           ---------------------------------------                                 */
/*                                                          |image 1                                |                                */
/*                                                        . |                                     . |                                */
/*                                                          |                                       |                                */
/*                                                      .   |                                   .   |                                */
/*                                                          |                                       |                                */
/*                                                    .     |                                 .     |                                */
/*                                                          |                                       |                                */
/*                                                  .       |                               .       |                                */
/*                                                          |                                       |                                */
/*                                                 ---------------------------------------          |                                */
/*                                                |image N-2                              |         |                                */
/*                                                |                                       |         |                                */
/*                                                |                                       |         |                                */
/*                                                |                                       |         |                                */
/*                                            ---------------------------------------     |         |                                */
/*                                           |image N-1                              |    |---------                                 */
/*                                           |                                       |    |                                          */
/*                                           |                                       |    |       .                                  */
/*                                           |                                       |    |                                          */
/*                                       ---------------------------------------     |    |     .                                    */
/*                                      |image N                                |    |    |                                          */
/*                                      |                                       |    |    |   .                                      */
/*                                      |                                       |    |    |                                          */
/*                                      |                                       |    |    | .                                        */
/*                                      |                                       |    |    |                                          */
/*                                      |                                       |    |----                                           */
/*                                      |                                       |    |                                               */
/*                                      |                                       |----                                                */
/*                                      |                                       |                                                    */
/*                                      |                                       |                                                    */
/*                                      |                                       |                                                    */
/*                                      |                                       |                                                    */
/*                                       ---------------------------------------                                                     */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                            inverser_l_axe_OZ=VRAI :                                                                               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                                                           ---------------------------------------                                 */
/*                                                          |image N                                |                                */
/*                                                        . |                                     . |                                */
/*                                                          |                                       |                                */
/*                                                      .   |                                   .   |                                */
/*                                                          |                                       |                                */
/*                                                    .     |                                 .     |                                */
/*                                                          |                                       |                                */
/*                                                  .       |                               .       |                                */
/*                                                          |                                       |                                */
/*                                                 ---------------------------------------          |                                */
/*                                                |image 3                                |         |                                */
/*                                                |                                       |         |                                */
/*                                                |                                       |         |                                */
/*                                                |                                       |         |                                */
/*                                            ---------------------------------------     |         |                                */
/*                                           |image 2                                |    |---------                                 */
/*                                           |                                       |    |                                          */
/*                                           |                                       |    |       .                                  */
/*                                           |                                       |    |                                          */
/*                                       ---------------------------------------     |    |     .                                    */
/*                                      |image 1                                |    |    |                                          */
/*                                      |                                       |    |    |   .                                      */
/*                                      |                                       |    |    |                                          */
/*                                      |                                       |    |    | .                                        */
/*                                      |                                       |    |    |                                          */
/*                                      |                                       |    |----                                           */
/*                                      |                                       |    |                                               */
/*                                      |                                       |----                                                */
/*                                      |                                       |                                                    */
/*                                      |                                       |                                                    */
/*                                      |                                       |                                                    */
/*                                      |                                       |                                                    */
/*                                       ---------------------------------------                                                     */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xci/accumule.41$K' :                                                                                           */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 20091120185152).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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_L_ALBUM_ARGUMENT                                                                                                     \
                    FAUX                                                                                                                \
                                        /* Indique s'il faut epaissir l'album Argument ('VRAI') ou pas ('FAUX'), la valeur par       */ \
                                        /* defaut garantissant la compatibilite anterieure. Ceci a ete introduit le 20210430114236.  */

#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.            */ \
                                        /*                                                                                           */ \
                                        /* Ceci fut introduit le 20091125131047...                                                   */
#define   INCOMPLET_AXE_OZ                                                                                                              \
                    FAUX                                                                                                                \
                                        /* Indique s'il peut manquer des images (ceci fut introduit le 20120322085610)...            */
#define   INCOMPLET_AXE_OZ_VALEUR_STANDARD                                                                                              \
                    NOIR
#define   INCOMPLET_AXE_OZ_VALEUR_NON_STANDARD                                                                                          \
                    FLOT__NOIR
                                        /* Donne la valeur des images manquantes (ceci fut introduit le 20120322092059)...           */

#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 (introduit le 20060603095115).                                            */
#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'). Ceci fut introduit le 20091212082256...                         */
#define   VALEUR_INITIALE_DU_Z_BUFFER                                                                                                   \
                    F_MOINS_LE_PETIT_INFINI                                                                                             \
                                        /* Valeur a utiliser pour initialiser le 'Z-Buffer' si cela est necessaire (introduit le     */ \
                                        /* 20091212082256).                                                                          */

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

#define   imageR                                                                                                                        \
                    ImageR

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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 "  :                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
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_postfixe),NOM_UNDEF_VIDE));
                                        /* Nom d'un eventuel postfixe a placer derriere <nom_albumA><numero> (par exemple '$ROUGE'). */
     DEFV(Int,INIT(premiere_image,PREMIERE_IMAGE));
                                        /* Numero de la premiere image,                                                              */
     DEFV(Int,INIT(pas_des_images,PAS_DES_IMAGES));
                                        /* Pas de passage d'un numero d'image a une autre.                                           */
     DEFV(Int,INIT(nombre_de_chiffres,NOMBRE_DE_CHIFFRES));
                                        /* Nombre de chiffres codant le numero des images de la serie...                             */

     DEFV(Logical,INIT(epaissir_l_album_argument,EPAISSIR_L_ALBUM_ARGUMENT));
                                        /* Indique s'il faut epaissir l'album Argument ('VRAI') ou pas ('FAUX'), la valeur par       */
                                        /* defaut garantissant la compatibilite anterieure. Ceci a ete introduit le 20210430114236.  */

     DEFV(Logical,INIT(inverser_l_axe_OZ,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.            */
                                        /*                                                                                           */
                                        /* Ceci fut introduit le 20091125131047...                                                   */
     DEFV(Logical,INIT(incomplet_axe_OZ,INCOMPLET_AXE_OZ));
                                        /* Indique s'il peut manquer des images (ceci fut introduit le 20120322085610)...            */
     DEFV(genere_p,INIT(incomplet_axe_OZ_valeur_standard,INCOMPLET_AXE_OZ_VALEUR_STANDARD));
     DEFV(genere_Float,INIT(incomplet_axe_OZ_valeur_non_standard,INCOMPLET_AXE_OZ_VALEUR_NON_STANDARD));
                                        /* Donne la valeur des images manquantes (ceci fut introduit le 20120322092059)...           */

     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 (introduit le 20060603095115).                                            */
     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'). Ceci fut introduit le 20091212082256...                         */
     /*..............................................................................................................................*/
     BSaveModifyVariable(Logical,S_ACCELERATEUR__ALOAD_POINT_COORDONNEES_01_____utiliser_l_accelerateur,VRAI);
                                        /* Introduit le 20120620092431...                                                            */

     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 20140103184105 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 (introduit le 20091212082256)...                                                 */

     GET_ARGUMENTSv(nombre_d_arguments
                   ,BLOC(GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20091211=""compatibilite_20091211="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____compatibilite_20091211
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____compatibilite_20091211
                                          );
                                        /* Arguments introduits le 20091211121220...                                                 */
                         GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20100120=""compatibilite_20100120="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____compatibilite_20100120
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____compatibilite_20100120
                                          );
                                        /* Arguments introduits le 20100120140309...                                                 */
                         GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20101008=""compatibilite_20101008="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____compatibilite_20101008
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____compatibilite_20101008
                                          );
                                        /* Arguments introduits le 20101008115242...                                                 */
                         GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20101121=""compatibilite_20101121="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____compatibilite_20101121
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____compatibilite_20101121
                                          );
                                        /* Arguments introduits le 20101121112528...                                                 */
                         GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20101125=""compatibilite_20101125="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____compatibilite_20101125
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____compatibilite_20101125
                                          );
                                        /* Arguments introduits le 20101125125614...                                                 */
                         GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20101127=""compatibilite_20101127="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____compatibilite_20101127
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____compatibilite_20101127
                                          );
                                        /* Arguments introduits le 20101127092950...                                                 */
                         GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20101128=""compatibilite_20101128="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____compatibilite_20101128
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____compatibilite_20101128
                                          );
                                        /* Arguments introduits le 20101128145921...                                                 */
                         GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20141004=""compatibilite_20141004="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____compatibilite_20141004
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____compatibilite_20141004
                                          );
                                        /* Arguments introduits le 20141004184105...                                                 */
                         GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20141005=""compatibilite_20141005="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____compatibilite_20141005
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____compatibilite_20141005
                                          );
                                        /* Arguments introduits le 20141005111649...                                                 */
                         GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20160125=""compatibilite_20160125="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____compatibilite_20160125
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____compatibilite_20160125
                                          );
                                        /* Arguments introduits le 20160125104633...                                                 */

                         GET_ARGUMENT_C("albumA=""A=",nom_albumA);
                         GET_ARGUMENT_C("imageR=""R=",nom_imageR);
                         GET_ARGUMENT_C("postfixe=",nom_postfixe);
                         GET_ARGUMENT_I("premiere=",premiere_image);
                         GET_ARGUMENTS2_I("pas=",pas_des_images,pasZ);
                                        /* L'argument 'pasZ' fut introduit le 20110119140601...                                      */
                         GET_ARGUMENT_I("chiffres=",nombre_de_chiffres);

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

                         GET_ARGUMENT_L("epaissir_album=""epaissir=",epaissir_l_album_argument);
                                        /* Argument introduit le 20210430114236...                                                   */

                         GET_ARGUMENT_L("inverser_Z=""inv_Z=",inverser_l_axe_OZ);
                         GET_ARGUMENT_L("incomplet_Z=""inc_Z=",incomplet_axe_OZ);
                                        /* Argument introduit le 20120322085610...                                                   */
                         GET_ARGUMENT_P("valeur_standard_incomplet_Z=""vsinc_Z=",incomplet_axe_OZ_valeur_standard);
                         GET_ARGUMENT_F("valeur_non_standard_incomplet_Z=""vnsinc_Z=",incomplet_axe_OZ_valeur_non_standard);
                                        /* Argument introduit le 20120322092059...                                                   */

                         GET_ARGUMENT_L("standard=",les_images_sont_standards);

                         GET_ARGUMENTS2_L("avertir_coordonnees_hors_espace=""ache="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____avertir_coordonnees_hors_espace
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____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);
                                        /* Ces transformations geometriques ont ete introduites le 20091121091253...                 */

                         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_____translation_OX
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____translation_OX
                                          );
                         GET_ARGUMENTS2_F("tY=""TRANSLATION_OY="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____translation_OY
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____translation_OY
                                          );
                         GET_ARGUMENTS2_F("tZ=""TRANSLATION_OZ="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____translation_OZ
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____translation_OZ
                                          );

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

                         GET_ARGUMENTS2_L("periodiser_X=""per_X="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____periodiser_X
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____periodiser_X
                                          );
                         GET_ARGUMENTS2_L("symetriser_X=""sym_X="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____symetriser_X
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____symetriser_X
                                          );
                         GET_ARGUMENTS2_L("prolonger_X=""pro_X="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____prolonger_X
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____prolonger_X
                                          );
                         GET_ARGUMENTS2_L("periodiser_Y=""per_Y="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____periodiser_Y
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____periodiser_Y
                                          );
                         GET_ARGUMENTS2_L("symetriser_Y=""sym_Y="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____symetriser_Y
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____symetriser_Y
                                          );
                         GET_ARGUMENTS2_L("prolonger_Y=""pro_Y="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____prolonger_Y
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____prolonger_Y
                                          );
                         GET_ARGUMENTS2_L("periodiser_Z=""per_Z="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____periodiser_Z
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____periodiser_Z
                                          );
                         GET_ARGUMENTS2_L("symetriser_Z=""sym_Z="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____symetriser_Z
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____symetriser_Z
                                          );
                         GET_ARGUMENTS2_L("prolonger_Z=""pro_Z="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____prolonger_Z
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____prolonger_Z
                                          );
                         GET_ARGUMENTS2_F("niveau_hors_album=""nha=""niveau_hors_image=""nhi="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____niveau_flottant_hors_image
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____niveau_flottant_hors_image
                                          );

                         GET_ARGUMENTS2_F("niveau_vide=""vide="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____niveau_du_vide_dans_l_album
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____niveau_du_vide_dans_l_album
                                          );
                                        /* Argument introduit le 20101008112957...                                                   */

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

                         GET_ARGUMENTS2_L("Aniveau_maximal=""Amaximum="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____renvoyer_le_niveau_maximal_de_albumA
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____renvoyer_le_niveau_maximal_de_albumA
                                          );
                                        /* Argument introduit le 20101129121403...                                                   */

                         GET_ARGUMENTS2_F("minimum_X=""mX="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____minimum_de_coordonnee_X
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____minimum_de_coordonnee_X
                                          );
                         GET_ARGUMENTS2_F("maximum_X=""MX="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____maximum_de_coordonnee_X
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____maximum_de_coordonnee_X
                                          );
                         GET_ARGUMENTS2_F("minimum_Y=""mY="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____minimum_de_coordonnee_Y
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____minimum_de_coordonnee_Y
                                          );
                         GET_ARGUMENTS2_F("maximum_Y=""MY="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____maximum_de_coordonnee_Y
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____maximum_de_coordonnee_Y
                                          );
                         GET_ARGUMENTS2_F("minimum_Z=""mZ="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____minimum_de_coordonnee_Z
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____minimum_de_coordonnee_Z
                                          );
                         GET_ARGUMENTS2_F("maximum_Z=""MZ="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____maximum_de_coordonnee_Z
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____maximum_de_coordonnee_Z
                                          );
                                        /* Arguments introduits le 20160125104633...                                                 */

                         GET_ARGUMENTS2_F("exposant_niveau=""en="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____exposant_du_niveau
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____exposant_du_niveau
                                          );

                         GET_ARGUMENTS2_L("ponderer_directions_niveaux=""pdn=""centre_de_gravite=""cdg="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____calculer_le_centre_de_gravite
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____calculer_le_centre_de_gravite
                                          );
                         GET_ARGUMENTS2_L("maximum_differences=""md="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____utiliser_le_maximum_des_differences
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____utiliser_le_maximum_des_differences
                                          );
                         GET_ARGUMENTS2_N("somme_differences=""sd="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____utiliser_le_maximum_des_differences
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____utiliser_le_maximum_des_differences
                                          );
                                        /* Arguments introduits le 20091204134434...                                                 */

                         GET_ARGUMENTS2_F("seuil="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____seuil_du_niveau_courant
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____seuil_du_niveau_courant
                                          );
                                        /* Argument introduit le 20091206115304...                                                   */

                         GET_ARGUMENTS2_L("cumuler_niveau=""cn="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____cumuler_le_niveau_courant
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____cumuler_le_niveau_courant
                                          );

                         GET_ARGUMENTS2_L("cumuler_niveau_lumineux=""cnl="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____cumuler_le_niveau_lumineux
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____cumuler_le_niveau_lumineux
                                          );
                                        /* Argument introduit le 20091123143623...                                                   */

                         GET_ARGUMENTS2_L("cumuler_coordonnees_XYZ=""ccXYZ="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____cumuler_les_coordonnees_XYZ
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____cumuler_les_coordonnees_XYZ
                                          );
                                        /* Argument introduit le 20091206115304...                                                   */
                         GET_ARGUMENTS2_F("ponderation_X=""pX="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____ponderation_de_la_coordonnees_X
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____ponderation_de_la_coordonnees_X
                                          );
                         GET_ARGUMENTS2_F("ponderation_Y=""pY="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____ponderation_de_la_coordonnees_Y
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____ponderation_de_la_coordonnees_Y
                                          );
                         GET_ARGUMENTS2_F("ponderation_Z=""pZ="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____ponderation_de_la_coordonnees_Z
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____ponderation_de_la_coordonnees_Z
                                          );

                         GET_ARGUMENTS2_L("cumuler_coordonnees_RPT=""ccRPT="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____cumuler_les_coordonnees_RPT
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____cumuler_les_coordonnees_RPT
                                          );
                         GET_ARGUMENTS2_F("ponderation_R=""pR="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____ponderation_de_la_coordonnees_R
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____ponderation_de_la_coordonnees_R
                                          );
                         GET_ARGUMENTS2_F("ponderation_P=""pP="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____ponderation_de_la_coordonnees_P
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____ponderation_de_la_coordonnees_P
                                          );
                         GET_ARGUMENTS2_F("ponderation_T=""pT="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____ponderation_de_la_coordonnees_T
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____ponderation_de_la_coordonnees_T
                                          );
                                        /* Arguments introduits le 20200224132943...                                                 */

                         GET_ARGUMENTS2_F("exposant_X=""eX="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____exposant_de_la_coordonnees_X
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____exposant_de_la_coordonnees_X
                                          );
                         GET_ARGUMENTS2_F("exposant_Y=""eY="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____exposant_de_la_coordonnees_Y
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____exposant_de_la_coordonnees_Y
                                          );
                         GET_ARGUMENTS2_F("exposant_Z=""eZ=""depth_cueing=""depth-cueing="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____exposant_de_la_coordonnees_Z
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____exposant_de_la_coordonnees_Z
                                          );
                                        /* Arguments introduits le 20091211213350 et completes le 20100202152504.                    */
                                        /*                                                                                           */
                                        /* 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_____eclairer_par_une_source_lumineuse
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____eclairer_par_une_source_lumineuse
                                          );
                         GET_ARGUMENTS2_F("source_lumineuse_X=""slX=""slx="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____source_lumineuse_X
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____source_lumineuse_X
                                          );
                         GET_ARGUMENTS2_F("source_lumineuse_Y=""slY=""sly="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____source_lumineuse_Y
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____source_lumineuse_Y
                                          );
                         GET_ARGUMENTS2_F("source_lumineuse_Z=""slZ=""slz="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____source_lumineuse_Z
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____source_lumineuse_Z
                                          );
                         GET_ARGUMENTS2_F("source_lumineuse_intensite_speculaire=""slis=""is=""speculaire="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____source_lumineuse_specularite
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____source_lumineuse_specularite
                                          );
                                        /* Les arguments relatifs a la source lumineuse ont ete introduits le 20091123143623 et      */
                                        /* completes le 20091126135941 en ce qui concerne la specularite, elle meme completee le     */
                                        /* 20091203130549...                                                                         */

                         GET_ARGUMENTS2_I("demi_dimension_gradient_X=""ddgX=""ddgx=""dx=""dX="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____demi_dimension_de_calcul_du_gradient_X
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____demi_dimension_de_calcul_du_gradient_X
                                          );
                         GET_ARGUMENTS2_I("demi_dimension_gradient_Y=""ddgY=""ddgy=""dy=""dY="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____demi_dimension_de_calcul_du_gradient_Y
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____demi_dimension_de_calcul_du_gradient_Y
                                          );
                         GET_ARGUMENTS2_I("demi_dimension_gradient_Z=""ddgZ=""ddgz=""dz=""dZ="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____demi_dimension_de_calcul_du_gradient_Z
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____demi_dimension_de_calcul_du_gradient_Z
                                          );
                                        /* Les arguments relatifs au calcul du gradient ont ete introduits le 20091123143623...      */
                                        /*                                                                                           */
                                        /* Les arguments {"dx=","dX=","dy=","dY=","dz=","dZ="} ont ete introduits le 20100117102306  */
                                        /* par symetrie avec 'v $xci/densite_3D.11$K dx='...                                         */
                         GET_ARGUMENTS2_L("visualiser_que_gradients_nuls=""vqgn="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____ne_visualiser_que_les_gradients_nuls
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____ne_visualiser_que_les_gradients_nuls
                                          );
                                        /* Arguments introduits le 20141005083635...                                                 */
                         GET_ARGUMENTS2_L("visualiser_gradients_nuls=""vgn="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____visualiser_les_gradients_nuls
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____visualiser_les_gradients_nuls
                                          );
                                        /* Arguments introduits le 20141005111649...                                                 */

                         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);
                                        /* Les arguments relatifs au 'Z-Buffer' ont ete introduits le 20091123143623...              */

                         GET_ARGUMENTS2_P("niveau_fond=""fond=""nf="
                                         ,Iaccumulation_tri_dimensionnelle_standard_____niveau_du_fond
                                         ,Iaccumulation_tri_dimensionnelle_non_standard_____niveau_du_fond
                                          );
                                        /* Les arguments relatifs au calcul du gradient ont ete introduits le 20091123143623...      */
                         )
                    );

     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 20170830141235).  */
               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 20170830141235).  */
               Eblock
          ATes
               Bblock
               Eblock
          ETes
          Eblock
     ETes

     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_l_album_argument))
                                        /* 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
               BSaveModifyVariable(Int,Zmin,Zmin_effectif);
               BSaveModifyVariable(Int,Zmax,Zmax_effectif);
                                        /* 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...     */

               begin_nouveau_block
                    Bblock
                    BSaveModifyVariable(Int,Zmin,Zmin_argument);
                    BSaveModifyVariable(Int,Zmax,Zmax_argument);
                                        /* Definition de l'axe des 'Z' Argument...                                                   */

                    CALi(idAload_album(albumA
                                      ,nom_albumA
                                      ,nom_postfixe
                                      ,premiere_image
                                      ,pas_des_images
                                      ,nombre_de_chiffres
                                      ,FAUX
                                      ,UNDEF
                                      ,inverser_l_axe_OZ
                                      ,incomplet_axe_OZ
                                      ,incomplet_axe_OZ_valeur_standard
                                       )
                         );
                                        /* Chargement de l'album Argument...                                                         */

                    ESaveModifyVariable(Int,Zmax);
                    ESaveModifyVariable(Int,Zmin);
                    Eblock
               end_nouveau_block

               Test(IL_FAUT(epaissir_l_album_argument))
                    Bblock
                    CALS(Aepaississement(albumA,albumA,Zmin_argument,Zmax_argument));
                                        /* Epaississement eventuel de l'album Argument...                                            */
                    Eblock
               ATes
                    Bblock
                    Eblock
               ETes

               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(imageR,albumA));
                    Eblock
               ATes
                    Bblock
                    Eblock
               ETes

               EDEFV(album,albumA);

               ESaveModifyVariable(Int,Zmax);
               ESaveModifyVariable(Int,Zmin);
               Eblock
          end_nouveau_block
          Eblock
     ATes
          Bblock
          BDEFV(albumF,albumA);
                                        /* Definition de l'album d'images Argument...                                                */

          CALi(idAloadF_album(albumA
                             ,nom_albumA
                             ,nom_postfixe
                             ,premiere_image
                             ,pas_des_images
                             ,nombre_de_chiffres
                             ,FAUX
                             ,UNDEF
                             ,inverser_l_axe_OZ
                             ,incomplet_axe_OZ
                             ,incomplet_axe_OZ_valeur_non_standard
                              )
               );
                                        /* Chargement de l'album Argument...                                                         */

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

          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.