/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        G E N E R A T I O N   D E   V A L E U R S   C O R R E S P O N D A N T   A U X                                              */
/*        C O O R D O N N E E S   " M A T R I C I E L L E S "   D A N S   U N   A L B U M  :                                         */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                    Cette commande donne comme resultat une                                                                        */
/*                  liste de combinaisons lineaires des abscisses,                                                                   */
/*                  des ordonnees {X,Y} et de la profondeur 'Z'                                                                      */
/*                  des points d'un album.                                                                                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*             *     * * * * * *   * * * * * *   * * * * * *   *         *   * * * * * *   *   * * * * * *   *         *             */
/*                        *             *        *             **        *        *        *   *         *   **        *             */
/*            * *         *             *        *             * *       *        *        *   *         *   * *       *             */
/*                        *             *        *             *  *      *        *        *   *         *   *  *      *             */
/*           *   *        *             *        *             *   *     *        *        *   *         *   *   *     *             */
/*                        *             *        * * *         *    *    *        *        *   *         *   *    *    *             */
/*          * * * *       *             *        *             *     *   *        *        *   *         *   *     *   *             */
/*                        *             *        *             *      *  *        *        *   *         *   *      *  *             */
/*         *       *      *             *        *             *       * *        *        *   *         *   *       * *             */
/*                        *             *        *             *        **        *        *   *         *   *        **             */
/*        *         *     *             *        * * * * * *   *         *        *        *   * * * * * *   *         *             */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        ATTENTION :                                                                                                                */
/*                                                                                                                                   */
/*                    Je note le 20180618163700 que les coordonnees                                                                  */
/*                  normalisees (lorsqu'elles sont demandees...) sont                                                                */
/*                  dans [0,1[ et non pas dans [0,1]... On verra a ce                                                                */
/*                  propos 'v $xiirv/.PUZZ.11.1.$U 20180618161323' si                                                                */
/*                  necessaire...                                                                                                    */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xci/valeurs_albu$K' :                                                                                          */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 19990701175021).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

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

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P A R A M E T R E S  :                                                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xci/substitue.01.I"
                                        /* Introduit le 20150609075311...                                                            */
#include  xci/sequence.01.I"
#include  xci/coordonne.01.I"

#define   GENERER_UN_MAILLAGE                                                                                                           \
                    FAUX                                                                                                                \
                                        /* Faut-il generer des points isoles ('FAUX') ou bien un maillage ('VRAI') ? La valeur       */ \
                                        /* par defaut garantit la compatibilite anterieure (introduit le 20150525090526)...          */
#define   LE_MAILLAGE_EST_COMPLET                                                                                                       \
                    VRAI
#define   SEUIL_DU_MAILLAGE_COMPLET                                                                                                     \
                    FDU                                                                                                                 \
                                        /* Faut-il generer un maillage complet ('VRAI') ou incomplet ('FAUX'), c'est-a-dire qu'il    */
                                        /* est alors leatoire ? La valeur par defaut garantit la compatibilite anterieure            */
                                        /* (introduit le 20171109125251)...                                                          */
#define   MAILLE_X                                                                                                                      \
                    UN
#define   MAILLE_Y                                                                                                                      \
                    UN
#define   MAILLE_Z                                                                                                                      \
                    UN
                                        /* Definition du maillage (introduite le 20150525093331)...                                  */

#define   LE_MAILLAGE_EST_TRIANGULAIRE                                                                                                  \
                    FAUX                                                                                                                \
                                        /* Le maillage (si 'IL_FAUT(generer_un_maillage)') doit-il est triangulaire ('VRAI')         */ \
                                        /* ou rectangulaire ('FAUX') ? Ceci a ete introduit le 20150525092218, mais non implemente   */ \
                                        /* a cette date et enfin mis en place le 20150608163910...                                   */
#define   LE_MAILLAGE_TRIANGULAIRE_EST_ALEATOIRE                                                                                        \
                    FAUX
#define   SEUIL_DU_MAILLAGE_TRIANGULAIRE_ALEATOIRE                                                                                      \
                    FDU
#define   UTILISER_UN_ESPACE_DE_PARAMETRAGE_TRIDIMENSIONNEL                                                                             \
                    VRAI
#define   GRAINE                                                                                                                        \
                    PARE(1789)
                                        /* Le maillage (si 'IL_FAUT(generer_un_maillage)') doit-il etre aleatoire ('VRAI')           */
                                        /* ou pas ('FAUX') ? Ceci a ete introduit le 20150609075311...                               */
#define   LE_MAILLAGE_TRIANGULAIRE_EST_MONTANT___                                                                                       \
                    VRAI
#define   LE_MAILLAGE_TRIANGULAIRE_EST_DESCENDANT                                                                                       \
                    FAUX
                                        /* Si 'EST_VRAI(le_maillage_est_triangulaire)' est-il "montant" (bas-gauche --> haut-droite) */
                                        /* et/ou "descendant" (haut-gauche --> bas-droite) ? Ceci a ete introduit le 20150609075311. */
                                        /* On notera que lorsque le maillage est a la fois  "montant"et "descendant", il n'est plus  */
                                        /* plan car, en effet, les aretes montantes et descendantes se croisent alors...             */
                                        /*                                                                                           */
                                        /* La notation vient de 'v $xci/valeurs_imag$K LE_MAILLAGE_TRIANGULAIRE_EST_MONTANT___' en   */
                                        /* notant qu'ici, il n'est pas approprie...                                                  */

#define   TRACER_LE_SEGMENT_000_100                                                                                                     \
                    VRAI
#define   TRACER_LE_SEGMENT_100_110                                                                                                     \
                    VRAI
#define   TRACER_LE_SEGMENT_110_010                                                                                                     \
                    VRAI
#define   TRACER_LE_SEGMENT_010_000                                                                                                     \
                    VRAI
#define   TRACER_LE_SEGMENT_001_101                                                                                                     \
                    VRAI
#define   TRACER_LE_SEGMENT_101_111                                                                                                     \
                    VRAI
#define   TRACER_LE_SEGMENT_111_011                                                                                                     \
                    VRAI
#define   TRACER_LE_SEGMENT_011_001                                                                                                     \
                    VRAI
#define   TRACER_LE_SEGMENT_000_001                                                                                                     \
                    VRAI
#define   TRACER_LE_SEGMENT_100_101                                                                                                     \
                    VRAI
#define   TRACER_LE_SEGMENT_110_111                                                                                                     \
                    VRAI
#define   TRACER_LE_SEGMENT_010_011                                                                                                     \
                    VRAI
#define   TRACER_LE_SEGMENT_000_110                                                                                                     \
                    VRAI
#define   TRACER_LE_SEGMENT_000_011                                                                                                     \
                    VRAI
#define   TRACER_LE_SEGMENT_000_101                                                                                                     \
                    VRAI
#define   TRACER_LE_SEGMENT_110_011                                                                                                     \
                    VRAI
#define   TRACER_LE_SEGMENT_011_101                                                                                                     \
                    VRAI
#define   TRACER_LE_SEGMENT_101_110                                                                                                     \
                    VRAI
#define   TRACER_LE_SEGMENT_001_100                                                                                                     \
                    VRAI
#define   TRACER_LE_SEGMENT_001_010                                                                                                     \
                    VRAI
#define   TRACER_LE_SEGMENT_001_111                                                                                                     \
                    VRAI
#define   TRACER_LE_SEGMENT_100_010                                                                                                     \
                    VRAI
#define   TRACER_LE_SEGMENT_010_111                                                                                                     \
                    VRAI
#define   TRACER_LE_SEGMENT_111_100                                                                                                     \
                    VRAI
                                        /* Definition des segments a tracer (introduit le 20150610091851).                           */

#define   METTRE_ORIGINE_ET_EXTREMITE_SUR_UNE_MEME_LIGNE                                                                                \
                    VRAI                                                                                                                \
                                        /* Faut-il mettre l'origine 'A' et l'extremite 'B' d'un segment sur une meme ligne ('VRAI')  */ \
                                        /* ou sur deux lignes separees ('FAUX') ? Ceci fut introduit le 20150526140355. On notera    */ \
                                        /* que les mettre sur une meme ligne facilite les optimisations supprimant les segments      */ \
                                        /* redondants, cela se faisant via '$SOR -u' en manipulant ensuite des lignes regenerees     */ \
                                        /* du type {XA,XB,YA,YB} qui doivent donc etre uniques...                                    */

#define   EDITER_DES_COORDONNEES_NORMALISEES                                                                                            \
                    VRAI                                                                                                                \
                                        /* Faut-il normaliser les coordonnees ('VRAI') ou pas ('FAUX') ? La valeur par defaut        */ \
                                        /* garantit la compatibilite anterieure (introduit le 20121110103938)...                     */

#define   PONDERATION_DE_X                                                                                                              \
                    FU
#define   PONDERATION_DE_Y                                                                                                              \
                    FZERO
#define   PONDERATION_DE_Z                                                                                                              \
                    FZERO
                                        /* Ponderations respectives de 'X', 'Y' et 'Z'.                                              */

#define   FACTEUR_DE_X                                                                                                                  \
                    FU
#define   FACTEUR_DE_Y                                                                                                                  \
                    FU
#define   FACTEUR_DE_Z                                                                                                                  \
                    FU
                                        /* Homotheties respectives de 'X', 'Y' et 'Z'.                                               */

#define   LARGEUR_DE_LA_BORDURE_A_EXCLURE                                                                                               \
                    FZERO                                                                                                               \
                                        /* Largeur de la bordure a exclure autour de l'album.                                        */

#include  xci/valeurs.01.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M A C R O S   U T I L E S  :                                                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xci/substitue.02.I"
                                        /* Introduit le 20150609075311...                                                            */
#include  xci/valeurs.02.I"

#include  xci/valeurs_imag.01.I"
                                        /* Introduit le 20150609081602...                                                            */

#define   _____X                                                                                                                        \
                    GRO0(maille_X)
#define   MOVE_X                                                                                                                        \
                    GRO1(maille_X)
#define   _____Y                                                                                                                        \
                    GRO0(maille_Y)
#define   MOVE_Y                                                                                                                        \
                    GRO1(maille_Y)
#define   _____Z                                                                                                                        \
                    GRO0(maille_Z)
#define   MOVE_Z                                                                                                                        \
                    GRO1(maille_Z)
                                        /* Definitions des deplacement elementaires (introduites le 20150525205101).                 */

#define   EDITION_D_UN_POINT(coordonnee_X,coordonnee_Y,coordonnee_Z,tabulation)                                                         \
                    Bblock                                                                                                              \
                    CAL2(Prin3(Cara(chain_Aconcaten5(INTRODUCTION_FORMAT,valeurs_signees,".*",format_d_edition,"%s"))                   \
                              ,NOMBRE_DE_DECIMALES_EFFECTIF(nombre_de_decimales)                                                        \
                              ,MULTIPLE_DE(ENTIER_FLOTTANT(LIZ3(ponderation_de_X,coordonnee_X                                           \
                                                               ,ponderation_de_Y,coordonnee_Y                                           \
                                                               ,ponderation_de_Z,coordonnee_Z                                           \
                                                                )                                                                       \
                                                           )                                                                            \
                                           )                                                                                            \
                              ,tabulation                                                                                               \
                               )                                                                                                        \
                         );                                                                                                             \
                    Eblock                                                                                                              \
                                        /* Edition d'un point introduite le 20150525092218...                                        */
#define   EDITION_D_UN_SEGMENT(coordonnee_X,coordonnee_Y,coordonnee_Z,trans_OX,trans_OY,trans_OZ,trans_EX,trans_EY,trans_EZ,tracer)     \
                                        /* Le point de reference est {coordonnee_X,coordonnee_Y,coordonnee_Z} et les translations    */ \
                                        /* permettent de definir l'Origine et l'Extremite du segment...                              */ \
                    Bblock                                                                                                              \
                    DEFV(Logical,INIT(tracer_effectivement_le_segment,tracer));                                                         \
                                                                                                                                        \
                    Test(EST_VRAI(le_maillage_est_complet))                                                                             \
                                        /* Test introduit le 20171109125245...                                                       */ \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         DEFV(Float,INIT(valeur_aleatoire_de_maillage_incomplet,FLOT__UNDEF));                                          \
                                                                                                                                        \
                         GENERATION_DE_LA_VALEUR_ALEATOIRE_COURANTE(valeur_aleatoire_de_maillage_incomplet);                            \
                                                                                                                                        \
                         Test(IFLE(valeur_aleatoire_de_maillage_incomplet,seuil_du_maillage_complet))                                   \
                              Bblock                                                                                                    \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              EGAL(tracer_effectivement_le_segment,FAUX);                                                               \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                                                                                                                                        \
                    Test(IL_FAUT(tracer_effectivement_le_segment))                                                                      \
                                        /* Test introduit le 20150608130019...                                                       */ \
                         Bblock                                                                                                         \
                         EDITION_D_UN_POINT(ADD2(coordonnee_X                                                                           \
                                                ,COND(IL_FAUT(editer_des_coordonnees_normalisees)                                       \
                                                     ,SUPER_lNORMALISE_OX(trans_OX)                                                     \
                                                     ,trans_OX                                                                          \
                                                      )                                                                                 \
                                                 )                                                                                      \
                                           ,ADD2(coordonnee_Y                                                                           \
                                                ,COND(IL_FAUT(editer_des_coordonnees_normalisees)                                       \
                                                     ,SUPER_lNORMALISE_OY(trans_OY)                                                     \
                                                     ,trans_OY                                                                          \
                                                      )                                                                                 \
                                                 )                                                                                      \
                                           ,ADD2(coordonnee_Z                                                                           \
                                                ,COND(IL_FAUT(editer_des_coordonnees_normalisees)                                       \
                                                     ,_____lNORMALISE_OZ(trans_OZ)                                                      \
                                                     ,trans_OZ                                                                          \
                                                      )                                                                                 \
                                                 )                                                                                      \
                                           ,COND(IL_FAUT(mettre_origine_et_extremite_sur_une_meme_ligne),C_BLANC,C_LF)                  \
                                            );                                                                                          \
                                        /* Edition de l'Origine du segment.                                                          */ \
                         EDITION_D_UN_POINT(ADD2(coordonnee_X                                                                           \
                                                ,COND(IL_FAUT(editer_des_coordonnees_normalisees)                                       \
                                                     ,SUPER_lNORMALISE_OX(trans_EX)                                                     \
                                                     ,trans_EX                                                                          \
                                                      )                                                                                 \
                                                 )                                                                                      \
                                           ,ADD2(coordonnee_Y                                                                           \
                                                ,COND(IL_FAUT(editer_des_coordonnees_normalisees)                                       \
                                                     ,SUPER_lNORMALISE_OY(trans_EY)                                                     \
                                                     ,trans_EY                                                                          \
                                                      )                                                                                 \
                                                 )                                                                                      \
                                           ,ADD2(coordonnee_Z                                                                           \
                                                ,COND(IL_FAUT(editer_des_coordonnees_normalisees)                                       \
                                                     ,_____lNORMALISE_OZ(trans_EZ)                                                      \
                                                     ,trans_EZ                                                                          \
                                                      )                                                                                 \
                                                 )                                                                                      \
                                           ,C_LF                                                                                        \
                                            );                                                                                          \
                                        /* Edition de l'Extremite du segment.                                                        */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Edition d'un segment introduite le 20150525094329...                                      */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        G E N E R A T I O N   D E   V A L E U R S   C O R R E S P O N D A N T   A U X                                              */
/*        C O O R D O N N E E S   " M A T R I C I E L L E S "   D A N S   U N   A L B U M  :                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
#include  xci/coordonne.02.I"

     DEFV(Logical,INIT(generer_un_maillage,GENERER_UN_MAILLAGE));
                                        /* Faut-il generer des points isoles ('FAUX') ou bien un maillage ('VRAI') ? La valeur       */
                                        /* par defaut garantit la compatibilite anterieure (introduit le 20150525090526)...          */
     DEFV(Logical,INIT(le_maillage_est_complet,LE_MAILLAGE_EST_COMPLET));
     DEFV(Float,INIT(seuil_du_maillage_complet,SEUIL_DU_MAILLAGE_COMPLET));
                                        /* Faut-il generer un maillage complet ('VRAI') ou incomplet ('FAUX'), c'est-a-dire qu'il    */
                                        /* est alors leatoire ? La valeur par defaut garantit la compatibilite anterieure            */
                                        /* (introduit le 20171109125251)...                                                          */
     DEFV(Int,INIT(maille_X,MAILLE_X));
     DEFV(Int,INIT(maille_Y,MAILLE_Y));
     DEFV(Int,INIT(maille_Z,MAILLE_Z));
                                        /* Definition du maillage (introduite le 20150525092218)...                                  */

     DEFV(Logical,INIT(le_maillage_est_triangulaire,LE_MAILLAGE_EST_TRIANGULAIRE));
                                        /* Le maillage (si 'IL_FAUT(generer_un_maillage)') doit-il est triangulaire ('VRAI')         */
                                        /* ou rectangulaire ('FAUX') ? Ceci a ete introduit le 20150525092218, mais non implemente   */
                                        /* a cette date et enfin mis en place le 20150608163910...                                   */
     DEFV(Logical,INIT(le_maillage_triangulaire_est_aleatoire,LE_MAILLAGE_TRIANGULAIRE_EST_ALEATOIRE));
     DEFV(Float,INIT(seuil_du_maillage_triangulaire_aleatoire,SEUIL_DU_MAILLAGE_TRIANGULAIRE_ALEATOIRE));
     DEFV(Logical,INIT(utiliser_un_espace_de_parametrage_tridimensionnel,UTILISER_UN_ESPACE_DE_PARAMETRAGE_TRIDIMENSIONNEL));
     DEFV(Int,INIT(graine,GRAINE));
     DEFV(Float,INIT(valeur_aleatoire,FLOT__UNDEF));
                                        /* Le maillage (si 'IL_FAUT(generer_un_maillage)') doit-il etre aleatoire ('VRAI')           */
                                        /* ou pas ('FAUX') ? Ceci a ete introduit le 20150609075311...                               */
     DEFV(Logical,INIT(le_maillage_triangulaire_est_montant___,LE_MAILLAGE_TRIANGULAIRE_EST_MONTANT___));
     DEFV(Logical,INIT(le_maillage_triangulaire_est_descendant,LE_MAILLAGE_TRIANGULAIRE_EST_DESCENDANT));
                                        /* Si 'EST_VRAI(le_maillage_est_triangulaire)' est-il "montant" (bas-gauche --> haut-droite) */
                                        /* et/ou "descendant" (haut-gauche --> bas-droite) ? Ceci a ete introduit le 20150609075311. */
                                        /* On notera que lorsque le maillage est a la fois  "montant"et "descendant", il n'est plus  */
                                        /* plan car, en effet, les aretes montantes et descendantes se croisent alors...             */
                                        /*                                                                                           */
                                        /* La notation vient de 'v $xci/valeurs_imag$K LE_MAILLAGE_TRIANGULAIRE_EST_MONTANT___' en   */
                                        /* notant qu'ici, il n'est pas approprie...                                                  */

     DEFV(Logical,INIT(tracer_le_segment_000_100,TRACER_LE_SEGMENT_000_100));
     DEFV(Logical,INIT(tracer_le_segment_100_110,TRACER_LE_SEGMENT_100_110));
     DEFV(Logical,INIT(tracer_le_segment_110_010,TRACER_LE_SEGMENT_110_010));
     DEFV(Logical,INIT(tracer_le_segment_010_000,TRACER_LE_SEGMENT_010_000));
     DEFV(Logical,INIT(tracer_le_segment_001_101,TRACER_LE_SEGMENT_001_101));
     DEFV(Logical,INIT(tracer_le_segment_101_111,TRACER_LE_SEGMENT_101_111));
     DEFV(Logical,INIT(tracer_le_segment_111_011,TRACER_LE_SEGMENT_111_011));
     DEFV(Logical,INIT(tracer_le_segment_011_001,TRACER_LE_SEGMENT_011_001));
     DEFV(Logical,INIT(tracer_le_segment_000_001,TRACER_LE_SEGMENT_000_001));
     DEFV(Logical,INIT(tracer_le_segment_100_101,TRACER_LE_SEGMENT_100_101));
     DEFV(Logical,INIT(tracer_le_segment_110_111,TRACER_LE_SEGMENT_110_111));
     DEFV(Logical,INIT(tracer_le_segment_010_011,TRACER_LE_SEGMENT_010_011));
     DEFV(Logical,INIT(tracer_le_segment_000_110,TRACER_LE_SEGMENT_000_110));
     DEFV(Logical,INIT(tracer_le_segment_000_011,TRACER_LE_SEGMENT_000_011));
     DEFV(Logical,INIT(tracer_le_segment_000_101,TRACER_LE_SEGMENT_000_101));
     DEFV(Logical,INIT(tracer_le_segment_110_011,TRACER_LE_SEGMENT_110_011));
     DEFV(Logical,INIT(tracer_le_segment_011_101,TRACER_LE_SEGMENT_011_101));
     DEFV(Logical,INIT(tracer_le_segment_101_110,TRACER_LE_SEGMENT_101_110));
     DEFV(Logical,INIT(tracer_le_segment_001_100,TRACER_LE_SEGMENT_001_100));
     DEFV(Logical,INIT(tracer_le_segment_001_010,TRACER_LE_SEGMENT_001_010));
     DEFV(Logical,INIT(tracer_le_segment_001_111,TRACER_LE_SEGMENT_001_111));
     DEFV(Logical,INIT(tracer_le_segment_100_010,TRACER_LE_SEGMENT_100_010));
     DEFV(Logical,INIT(tracer_le_segment_010_111,TRACER_LE_SEGMENT_010_111));
     DEFV(Logical,INIT(tracer_le_segment_111_100,TRACER_LE_SEGMENT_111_100));
                                        /* Definition des segments a tracer (introduit le 20150610091851).                           */

     DEFV(Logical,INIT(mettre_origine_et_extremite_sur_une_meme_ligne,METTRE_ORIGINE_ET_EXTREMITE_SUR_UNE_MEME_LIGNE));
                                        /* Faut-il mettre l'origine 'A' et l'extremite 'B' d'un segment sur une meme ligne ('VRAI')  */
                                        /* ou sur deux lignes separees ('FAUX') ? Ceci fut introduit le 20150526140355. On notera    */
                                        /* que les mettre sur une meme ligne facilite les optimisations supprimant les segments      */
                                        /* redondants, cela se faisant via '$SOR -u' en manipulant ensuite des lignes regenerees     */
                                        /* du type {XA,XB,YA,YB} qui doivent donc etre uniques...                                    */

     DEFV(Logical,INIT(editer_des_coordonnees_normalisees,EDITER_DES_COORDONNEES_NORMALISEES));
                                        /* Faut-il normaliser les coordonnees ('VRAI') ou pas ('FAUX') ? La valeur par defaut        */
                                        /* garantit la compatibilite anterieure (introduit le 20121110103938)...                     */

     DEFV(pointI_2D,point_courant_de_l_espace_de_parametrage_2D);
     DEFV(pointI_3D,point_courant_de_l_espace_de_parametrage_3D);
                                        /* Point courant d'un espace abstrait servant a parametrer le generateur d'evenements.       */

     DEFV(Float,INIT(ponderation_de_X,PONDERATION_DE_X));
     DEFV(Float,INIT(ponderation_de_Y,PONDERATION_DE_Y));
     DEFV(Float,INIT(ponderation_de_Z,PONDERATION_DE_Z));
                                        /* Ponderations respectives de 'X', 'Y' et 'Z'.                                              */
     DEFV(Float,INIT(facteur_de_X,FACTEUR_DE_X));
     DEFV(Float,INIT(facteur_de_Y,FACTEUR_DE_Y));
     DEFV(Float,INIT(facteur_de_Z,FACTEUR_DE_Z));
                                        /* Homotheties respectives de 'X', 'Y' et 'Z'.                                               */
     DEFV(Float,INIT(largeur_de_la_bordure_a_exclure,LARGEUR_DE_LA_BORDURE_A_EXCLURE));

                                        /* Largeur de la bordure a exclure autour de l'album.                                        */

#include  xci/substitue.03.I"
                                        /* Introduit le 20150609075311...                                                            */
#include  xci/valeurs.03.I"
     /*..............................................................................................................................*/

#include  xci/coordonne.04.I"
                                        /* Ceci a ete introduit le 20051218183003...                                                 */

     GET_ARGUMENTSi(nombre_d_arguments
                   ,BLOC(GET_ARGUMENT_L("maillage=""m=",generer_un_maillage);
                         GET_ARGUMENT_N("points=""pts=",generer_un_maillage);
                         GET_ARGUMENT_L("maillage_complet=""complet=",le_maillage_est_complet);
                         GET_ARGUMENT_N("maillage_aleatoire=""aleatoire=",le_maillage_est_complet);
                         GET_ARGUMENT_F("seuil_maillage_complet=""smc=",seuil_du_maillage_complet);
                                        /* Aguments introduits le 20171109125245...                                                  */
                         GET_ARGUMENT_I("maille_X=""mX=""mx=",maille_X);
                         GET_ARGUMENT_I("maille_Y=""mY=""my=",maille_Y);
                         GET_ARGUMENT_I("maille_Z=""mZ=""mz=",maille_Z);

                         GET_ARGUMENT_L("maillage_triangulaire=""mt=",le_maillage_est_triangulaire);
                         GET_ARGUMENT_N("maillage_rectangulaire=""mr=",le_maillage_est_triangulaire);
                                        /* Aguments introduits le 20150525090526...                                                  */
                         GET_ARGUMENT_L("maillage_triangulaire_aleatoire=""mta=",le_maillage_triangulaire_est_aleatoire);
                         GET_ARGUMENT_F("seuil_maillage_triangulaire_aleatoire=""smta=""seuil="
                                       ,seuil_du_maillage_triangulaire_aleatoire
                                        );
                         GET_ARGUMENT_I("methode=",gen_ft_____methode_standard);
                                        /* Les parametres {"inferieur=","superieur="} furent introduits le 20090221161945...         */
                         GET_ARGUMENT_L("tridimensionnel=""3D=",utiliser_un_espace_de_parametrage_tridimensionnel);
                         GET_ARGUMENT_N("bidimensionnel=""2D=",utiliser_un_espace_de_parametrage_tridimensionnel);
                         GET_ARGUMENT_I("graine=""g=",graine);
                         GET_ARGUMENT_L("affiner_rdn=",rdnIFnD_____affiner_la_generation);
                         GET_ARGUMENT_L("iterer_rdn=",rdnIFnD_____iterer_la_generation);
                         GET_ARGUMENT_F("PrdnI2D_NEUT=",rdnI2D_____ponderation_NEUT);
                         GET_ARGUMENT_F("PrdnI2D_GAUS=",rdnI2D_____ponderation_GAUS);
                         GET_ARGUMENT_F("PrdnI2D_GAUS_esperance=",rdnI2D_____ponderation_GAUS_esperance_);
                         GET_ARGUMENT_F("PrdnI2D_GAUS_ecart_type=",rdnI2D_____ponderation_GAUS_ecart_type);
                         GET_ARGUMENT_F("PrdnI3D_NEUT=",rdnI3D_____ponderation_NEUT);
                         GET_ARGUMENT_F("PrdnI3D_GAUS=",rdnI3D_____ponderation_GAUS);
                         GET_ARGUMENT_F("PrdnI3D_GAUS_esperance=",rdnI3D_____ponderation_GAUS_esperance_);
                         GET_ARGUMENT_F("PrdnI3D_GAUS_ecart_type=",rdnI3D_____ponderation_GAUS_ecart_type);
                         CONTROLE_DE_L_ADAPTATION_A_UNE_LOI_DE_DISTRIBUTION_QUELCONQUE;
                                        /* Aguments introduits le 20150609075311...                                                  */
                         GET_ARGUMENT_L("maillage_triangulaire_montant=""mtm=""triangle1=""tr1="
                                       ,le_maillage_triangulaire_est_montant___
                                        );
                         GET_ARGUMENT_L("maillage_triangulaire_descendant=""mtd=""triangle2=""tr2="
                                       ,le_maillage_triangulaire_est_descendant
                                        );
                                        /* Aguments introduits le 20150609075311...                                                  */

                         GET_ARGUMENT_L("segment_000_100=""000_100=""AB=",tracer_le_segment_000_100);
                         GET_ARGUMENT_L("segment_100_110=""100_110=""BC=",tracer_le_segment_100_110);
                         GET_ARGUMENT_L("segment_110_010=""110_010=""CD=",tracer_le_segment_110_010);
                         GET_ARGUMENT_L("segment_010_000=""010_000=""DA=",tracer_le_segment_010_000);
                         GET_ARGUMENT_L("segment_001_101=""001_101=""EF=",tracer_le_segment_001_101);
                         GET_ARGUMENT_L("segment_101_111=""101_111=""FG=",tracer_le_segment_101_111);
                         GET_ARGUMENT_L("segment_111_011=""111_011=""GH=",tracer_le_segment_111_011);
                         GET_ARGUMENT_L("segment_011_001=""011_001=""HE=",tracer_le_segment_011_001);
                         GET_ARGUMENT_L("segment_000_001=""000_001=""AE=",tracer_le_segment_000_001);
                         GET_ARGUMENT_L("segment_100_101=""100_101=""BF=",tracer_le_segment_100_101);
                         GET_ARGUMENT_L("segment_110_111=""110_111=""CG=",tracer_le_segment_110_111);
                         GET_ARGUMENT_L("segment_010_011=""010_011=""DH=",tracer_le_segment_010_011);
                         GET_ARGUMENT_L("segment_000_110=""000_110=""AC=",tracer_le_segment_000_110);
                         GET_ARGUMENT_L("segment_000_011=""000_011=""AH=",tracer_le_segment_000_011);
                         GET_ARGUMENT_L("segment_000_101=""000_101=""AF=",tracer_le_segment_000_101);
                         GET_ARGUMENT_L("segment_110_011=""110_011=""CH=",tracer_le_segment_110_011);
                         GET_ARGUMENT_L("segment_011_101=""011_101=""HF=",tracer_le_segment_011_101);
                         GET_ARGUMENT_L("segment_101_110=""101_110=""FC=",tracer_le_segment_101_110);
                         GET_ARGUMENT_L("segment_001_100=""001_100=""EB=",tracer_le_segment_001_100);
                         GET_ARGUMENT_L("segment_001_010=""001_010=""ED=",tracer_le_segment_001_010);
                         GET_ARGUMENT_L("segment_001_111=""001_111=""EG=",tracer_le_segment_001_111);
                         GET_ARGUMENT_L("segment_100_010=""100_010=""BD=",tracer_le_segment_100_010);
                         GET_ARGUMENT_L("segment_010_111=""010_111=""DG=",tracer_le_segment_010_111);
                         GET_ARGUMENT_L("segment_111_100=""111_100=""GB=",tracer_le_segment_111_100);
                                        /* Aguments introduits le 20150610091851...                                                  */

                         GET_ARGUMENT_L("origine_extremite_meme_ligne=""meme_ligne=""ml="
                                       ,mettre_origine_et_extremite_sur_une_meme_ligne
                                        );
                                        /* Aguments introduits le 20150526140355...                                                  */

                         GET_ARGUMENT_L("normalisees=""norm=",editer_des_coordonnees_normalisees);
                         GET_ARGUMENT_N("denormalisees=""denorm=",editer_des_coordonnees_normalisees);
                                        /* Aguments introduits le 20121110103938...                                                  */

                         GET_ARGUMENT_L("centrer=",centrer_les_coordonnees_normalisees);

                         GET_ARGUMENT_F("Px=""PX=",ponderation_de_X);
                         GET_ARGUMENT_F("Py=""PY=",ponderation_de_Y);
                         GET_ARGUMENT_F("Pz=""PZ=",ponderation_de_Z);

                         GET_ARGUMENT_F("ax=""aX=""Ax=""AX=",facteur_de_X);
                         GET_ARGUMENT_F("ay=""aY=""Ay=""AY=",facteur_de_Y);
                         GET_ARGUMENT_F("az=""aZ=""Az=""AZ=",facteur_de_Z);

                         GET_ARGUMENT_L("normaliser=",les_translations_sont_a_normaliser);

                         GET_ARGUMENT_F("bx=""bX=""Bx=""BX=",translation_des_X_normalisees);
                         GET_ARGUMENT_F("by=""bY=""By=""BY=",translation_des_Y_normalisees);
                         GET_ARGUMENT_F("bz=""bZ=""Bz=""BZ=",translation_des_Z_normalisees);

                         PROCESS_ARGUMENTS_DE_PARAMETRAGE_DE_LA_GENERATION_DE_SUITE_DE_VALEURS_1;
                                        /* Cette procedure fut introduite le 20061226185532...                                       */

                         GET_ARGUMENT_F("exclure=""bordure=",largeur_de_la_bordure_a_exclure);
                         )
                    );

     SPIRALE_DEFINITION_GENERALE(SPIRALE_DELTA_HORIZONTAL_GLOBAL,SPIRALE_DELTA_VERTICAL_GLOBAL)
                                        /* Donnees de generation d'une spirale de parcours d'un espace abstrait bidimensionnel       */
                                        /* de parametrage de la generation des evenements.                                           */

#include  xci/coordonne.03.I"

     Test(IFOU(EST_VRAI(le_maillage_triangulaire_est_aleatoire)
              ,EST_FAUX(le_maillage_est_complet)
               )
          )
                                        /* Test introduit le 20150609075311 et complete le 20171109135545...                         */
          Bblock
          SPIRALE_VALIDATION;
                                        /* Validation des pas de parcours (pasX,pasY) de l'espace abstrait de parametrage du         */
                                        /* generateur d'evenements.                                                                  */
          INITIALISATION_POINT_2D(point_courant_de_l_espace_de_parametrage_2D,Xmin,Ymin);
          INITIALISATION_POINT_3D(point_courant_de_l_espace_de_parametrage_3D,Xmin,Ymin,Zmin);
                                        /* Initialisation de l'espace de parametrage independante du format de l'image, puisque le   */
                                        /* point 'min' n'en depend pas...                                                            */
          Eblock
     ATes
          Bblock
          Eblock
     ETes

     begin_album
          Bblock
          DEFV(Float,INIT(Xf
                         ,COND(IL_FAUT(editer_des_coordonnees_normalisees)
                              ,AXPB(facteur_de_X
                                   ,SUPER_cNORMALISE_OX(X)
                                   ,NORMALISER_LES_TRANSLATIONS(translation_des_X_normalisees
                                                               ,SUPER_cNORMALISE_OX
                                                                )
                                    )
                              ,FLOT(X)
                               )
                          )
               );
          DEFV(Float,INIT(Yf
                         ,COND(IL_FAUT(editer_des_coordonnees_normalisees)
                              ,AXPB(facteur_de_Y
                                   ,SUPER_cNORMALISE_OY(Y)
                                   ,NORMALISER_LES_TRANSLATIONS(translation_des_Y_normalisees
                                                               ,SUPER_cNORMALISE_OY
                                                                )
                                    )
                              ,FLOT(Y)
                               )
                          )
               );
          DEFV(Float,INIT(Zf
                         ,COND(IL_FAUT(editer_des_coordonnees_normalisees)
                              ,AXPB(facteur_de_Z
                                   ,_____cNORMALISE_OZ(Z)
                                   ,NORMALISER_LES_TRANSLATIONS(translation_des_Z_normalisees
                                                               ,_____lNORMALISE_OZ
                                                                )
                                    )
                              ,FLOT(Z)
                               )
                          )
               );

          Test(IFOU(IL_NE_FAUT_PAS(editer_des_coordonnees_normalisees)
                   ,IFET(IL_FAUT(editer_des_coordonnees_normalisees)
                        ,I3ET(IFINff(Xf
                                    ,ADD2(SUPER_cNORMALISE_OX(Xmin),largeur_de_la_bordure_a_exclure)
                                    ,SOUS(SUPER_cNORMALISE_OX(Xmax),largeur_de_la_bordure_a_exclure)
                                     )
                             ,IFINff(Yf
                                    ,ADD2(SUPER_cNORMALISE_OY(Ymin),largeur_de_la_bordure_a_exclure)
                                    ,SOUS(SUPER_cNORMALISE_OY(Ymax),largeur_de_la_bordure_a_exclure)
                                     )
                             ,IFINff(Zf
                                    ,ADD2(_____cNORMALISE_OZ(Zmin),largeur_de_la_bordure_a_exclure)
                                    ,SOUS(_____cNORMALISE_OZ(Zmax),largeur_de_la_bordure_a_exclure)
                                     )
                              )
                         )
                    )
               )
               Bblock
               Test(IL_FAUT(generer_un_maillage))
                                        /* Test introduit le 20150525094329...                                                       */
                    Bblock
                    EDITION_D_UN_SEGMENT(Xf,Yf,Zf
                                        ,_____X,_____Y,_____Z
                                        ,MOVE_X,_____Y,_____Z
                                        ,IL_FAUT(tracer_le_segment_000_100)
                                         );
                    EDITION_D_UN_SEGMENT(Xf,Yf,Zf
                                        ,MOVE_X,_____Y,_____Z
                                        ,MOVE_X,MOVE_Y,_____Z
                                        ,IL_FAUT(tracer_le_segment_100_110)
                                         );
                    EDITION_D_UN_SEGMENT(Xf,Yf,Zf
                                        ,_____X,MOVE_Y,_____Z
                                        ,MOVE_X,MOVE_Y,_____Z
                                        ,IL_FAUT(tracer_le_segment_110_010)
                                         );
                    EDITION_D_UN_SEGMENT(Xf,Yf,Zf
                                        ,_____X,_____Y,_____Z
                                        ,_____X,MOVE_Y,_____Z
                                        ,IL_FAUT(tracer_le_segment_010_000)
                                         );
                                        /* Face {000,100,110,010}.                                                                   */

                    EDITION_D_UN_SEGMENT(Xf,Yf,Zf
                                        ,_____X,_____Y,MOVE_Z
                                        ,MOVE_X,_____Y,MOVE_Z
                                        ,IL_FAUT(tracer_le_segment_001_101)
                                         );
                    EDITION_D_UN_SEGMENT(Xf,Yf,Zf
                                        ,MOVE_X,_____Y,MOVE_Z
                                        ,MOVE_X,MOVE_Y,MOVE_Z
                                        ,IL_FAUT(tracer_le_segment_101_111)
                                         );
                    EDITION_D_UN_SEGMENT(Xf,Yf,Zf
                                        ,_____X,MOVE_Y,MOVE_Z
                                        ,MOVE_X,MOVE_Y,MOVE_Z
                                        ,IL_FAUT(tracer_le_segment_111_011)
                                         );
                    EDITION_D_UN_SEGMENT(Xf,Yf,Zf
                                        ,_____X,_____Y,MOVE_Z
                                        ,_____X,MOVE_Y,MOVE_Z
                                        ,IL_FAUT(tracer_le_segment_011_001)
                                         );
                                        /* Face {001,101,111,011}.                                                                   */

                    EDITION_D_UN_SEGMENT(Xf,Yf,Zf
                                        ,_____X,_____Y,_____Z
                                        ,_____X,_____Y,MOVE_Z
                                        ,IL_FAUT(tracer_le_segment_000_001)
                                         );
                                        /* Cote {000,001}.                                                                           */
                    EDITION_D_UN_SEGMENT(Xf,Yf,Zf
                                        ,MOVE_X,_____Y,_____Z
                                        ,MOVE_X,_____Y,MOVE_Z
                                        ,IL_FAUT(tracer_le_segment_100_101)
                                         );
                                        /* Cote {100,101}.                                                                           */
                    EDITION_D_UN_SEGMENT(Xf,Yf,Zf
                                        ,MOVE_X,MOVE_Y,_____Z
                                        ,MOVE_X,MOVE_Y,MOVE_Z
                                        ,IL_FAUT(tracer_le_segment_110_111)
                                         );
                                        /* Cote {110,111}.                                                                           */
                    EDITION_D_UN_SEGMENT(Xf,Yf,Zf
                                        ,_____X,MOVE_Y,_____Z
                                        ,_____X,MOVE_Y,MOVE_Z
                                        ,IL_FAUT(tracer_le_segment_010_011)
                                         );
                                        /* Cote {010,011}.                                                                           */
                                        /*                                                                                           */
                                        /* La generation de la maille carree a ete introduite le 20150525100223...                   */
                                        /*                                                                                           */
                                        /* Notations :                                                                               */
                                        /*                                                                                           */
                                        /*                                                                                           */
                                        /*                     H=010               G=110                                             */
                                        /*                       .-------------------.                                               */
                                        /*                      /.                  /|                                               */
                                        /*                     / .                 / |                                               */
                                        /*                    /  .                /  |                                               */
                                        /*                   /   .               /   |                                               */
                                        /*                   -------------------/    |                                               */
                                        /*                D=011  .            C=111  |                                               */
                                        /*                  |    .              |    |                                               */
                                        /*                  |    .              |    |                                               */
                                        /*                  |    .              |    |                                               */
                                        /*                  |  E=000            |  F=100                                             */
                                        /*                  |    ...............|....|                                               */
                                        /*                  |   .               |   /                                                */
                                        /*                  |  .                |  /                                                 */
                                        /*                  | .                 | /                                                  */
                                        /*                  |.                  |/                                                   */
                                        /*                  .-------------------.                                                    */
                                        /*                                                                                           */
                                        /*                A=001               B=101                                                  */
                                        /*                                                                                           */
                                        /*                                                                                           */
                                        /* en rappelant que le referentiel 'XYZ' est direct et qu'ainsi l'axe 'OZ' est dirige        */
                                        /* vers l'observateur...                                                                     */
                                        /*                                                                                           */
                                        /* Le 20150526150815, les translations ont ete reordonnees afin que les segments             */
                                        /* horizontaux et verticaux...) soient edites de facon a ce que les coordonnees X            */
                                        /* et Y soient croissantes (cela est rendu necessaire par les tests de redondance            */
                                        /* ('v $xiirv/.MAIL.11.1.$U redondants' par exemple...).                                     */

                    Test(EST_VRAI(le_maillage_est_triangulaire))
                         Bblock
                                        /* Un petit probleme est que les diagonales tracees ci-apres, lorsqu'elles appartiennent     */
                                        /* a deux faces paralleles opposees, sont orthogonales et alors, lors de la juxtaposition    */
                                        /* de deux cubes, leur face commune semble alors contenir une croix (deux diagonales         */
                                        /* orthogonales...).                                                                         */
                         Test(EST_VRAI(le_maillage_triangulaire_est_aleatoire))
                                        /* Possibilite introduite le 20150609075311...                                               */
                              Bblock
                              GENERATION_DE_LA_VALEUR_ALEATOIRE_COURANTE(valeur_aleatoire);

                              Test(IFLE(valeur_aleatoire,seuil_du_maillage_triangulaire_aleatoire))
                                   Bblock
                                   EGAL(le_maillage_triangulaire_est_montant___,VRAI);
                                   EGAL(le_maillage_triangulaire_est_descendant,FAUX);
                                   Eblock
                              ATes
                                   Bblock
                                   EGAL(le_maillage_triangulaire_est_montant___,FAUX);
                                   EGAL(le_maillage_triangulaire_est_descendant,VRAI);
                                   Eblock
                              ETes
                              Eblock
                         ATes
                              Bblock
                              Eblock
                         ETes

                         EDITION_D_UN_SEGMENT(Xf,Yf,Zf
                                             ,_____X,_____Y,_____Z
                                             ,MOVE_X,MOVE_Y,_____Z
                                             ,IFET(EST_VRAI(le_maillage_triangulaire_est_montant___)
                                                  ,IL_FAUT(tracer_le_segment_000_110)
                                                   )
                                              );
                                        /* Diagonale {000,110}.                                                                      */
                         EDITION_D_UN_SEGMENT(Xf,Yf,Zf
                                             ,_____X,_____Y,_____Z
                                             ,_____X,MOVE_Y,MOVE_Z
                                             ,IFET(EST_VRAI(le_maillage_triangulaire_est_montant___)
                                                  ,IL_FAUT(tracer_le_segment_000_011)
                                                   )
                                              );
                                        /* Diagonale {000,011}.                                                                      */
                         EDITION_D_UN_SEGMENT(Xf,Yf,Zf
                                             ,_____X,_____Y,_____Z
                                             ,MOVE_X,_____Y,MOVE_Z
                                             ,IFET(EST_VRAI(le_maillage_triangulaire_est_montant___)
                                                  ,IL_FAUT(tracer_le_segment_000_101)
                                                   )
                                              );
                                        /* Diagonale {000,101}.                                                                      */
                         EDITION_D_UN_SEGMENT(Xf,Yf,Zf
                                             ,MOVE_X,MOVE_Y,_____Z
                                             ,_____X,MOVE_Y,MOVE_Z
                                             ,IFET(EST_VRAI(le_maillage_triangulaire_est_montant___)
                                                  ,IL_FAUT(tracer_le_segment_110_011)
                                                   )
                                              );
                                        /* Diagonale {110,011}.                                                                      */
                         EDITION_D_UN_SEGMENT(Xf,Yf,Zf
                                             ,_____X,MOVE_Y,MOVE_Z
                                             ,MOVE_X,_____Y,MOVE_Z
                                             ,IFET(EST_VRAI(le_maillage_triangulaire_est_montant___)
                                                  ,IL_FAUT(tracer_le_segment_011_101)
                                                   )
                                              );
                                        /* Diagonale {011,101}.                                                                      */
                         EDITION_D_UN_SEGMENT(Xf,Yf,Zf
                                             ,MOVE_X,_____Y,MOVE_Z
                                             ,MOVE_X,MOVE_Y,_____Z
                                             ,IFET(EST_VRAI(le_maillage_triangulaire_est_montant___)
                                                  ,IL_FAUT(tracer_le_segment_101_110)
                                                   )
                                              );
                                        /* Diagonale {101,110}.                                                                      */

                         EDITION_D_UN_SEGMENT(Xf,Yf,Zf
                                             ,_____X,_____Y,MOVE_Z
                                             ,MOVE_X,_____Y,_____Z
                                             ,IFET(EST_VRAI(le_maillage_triangulaire_est_descendant)
                                                  ,IL_FAUT(tracer_le_segment_001_100)
                                                   )
                                              );
                                        /* Diagonale {001,100}.                                                                      */
                         EDITION_D_UN_SEGMENT(Xf,Yf,Zf
                                             ,_____X,_____Y,MOVE_Z
                                             ,_____X,MOVE_Y,_____Z
                                             ,IFET(EST_VRAI(le_maillage_triangulaire_est_descendant)
                                                  ,IL_FAUT(tracer_le_segment_001_010)
                                                   )
                                              );
                                        /* Diagonale {001,010}.                                                                      */
                         EDITION_D_UN_SEGMENT(Xf,Yf,Zf
                                             ,_____X,_____Y,MOVE_Z
                                             ,MOVE_X,MOVE_Y,MOVE_Z
                                             ,IFET(EST_VRAI(le_maillage_triangulaire_est_descendant)
                                                  ,IL_FAUT(tracer_le_segment_001_111)
                                                   )
                                              );
                                        /* Diagonale {001,111}.                                                                      */
                         EDITION_D_UN_SEGMENT(Xf,Yf,Zf
                                             ,MOVE_X,_____Y,_____Z
                                             ,_____X,MOVE_Y,_____Z
                                             ,IFET(EST_VRAI(le_maillage_triangulaire_est_descendant)
                                                  ,IL_FAUT(tracer_le_segment_100_010)
                                                   )
                                              );
                                        /* Diagonale {100,010}.                                                                      */
                         EDITION_D_UN_SEGMENT(Xf,Yf,Zf
                                             ,_____X,MOVE_Y,_____Z
                                             ,MOVE_X,MOVE_Y,MOVE_Z
                                             ,IFET(EST_VRAI(le_maillage_triangulaire_est_descendant)
                                                  ,IL_FAUT(tracer_le_segment_010_111)
                                                   )
                                              );
                                        /* Diagonale {010,111}.                                                                      */
                         EDITION_D_UN_SEGMENT(Xf,Yf,Zf
                                             ,MOVE_X,MOVE_Y,MOVE_Z
                                             ,MOVE_X,_____Y,_____Z
                                             ,IFET(EST_VRAI(le_maillage_triangulaire_est_descendant)
                                                  ,IL_FAUT(tracer_le_segment_111_100)
                                                   )
                                              );
                                        /* Diagonale {111,100}.                                                                      */
                         Eblock
                    ATes
                         Bblock
                         Eblock
                    ETes
                    Eblock
               ATes
                    Bblock
                    EDITION_D_UN_POINT(Xf,Yf,Zf,C_LF);
                                        /* Et enfin, edition d'une combinaison lineaire des coordonnees du point courant.            */
                    Eblock
               ETes
               Eblock
          ATes
               Bblock
               Eblock
          ETes
          Eblock
     end_album

     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.