/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N S   P O U R   L E S   F O N C T I O N S   D E   G E N E R A T I O N S   A L A T O I R E S  :           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                    Ce fichier contient toutes les definitions                                                                     */
/*                  necessaires pour les generations des champs                                                                      */
/*                  fractals.                                                                                                        */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xiii/aleat.2$vv$DEF' :                                                                                         */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 19880000000000).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E S   D I F F E R E N T E S   I N T E R P O L A T I O N S  :                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E   L ' I N T E R P O L A T I O N   L I N E A I R E  :                                             */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Interpolation bi-lineaire (avec un seul niveau d'iteration dans l'image ci-dessous) :                                      */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                  ##*********oooooooo++++++++++++++++++++++++++++++++++++++ooooooo                                                 */
/*                  ##*******oooooo+++++++---------------++++++++++++++++++ooooooooo                                                 */
/*                  #******oooooo++++++------::------------++++++++++++ooooooooooo**                                                 */
/*                  #*****ooooo+++++-----:::::::::::--------++++++++oooooooooooo****                                                 */
/*                  *****oooo+++++----:::::......::::::-----++++++ooooooooo*********                                                 */
/*                  ****oooo++++----::::....   ....:::::----+++++oooo***************                                                 */
/*                  ****ooo++++----:::....       ....::::----+++oooo****************                                                 */
/*                  **ooooo++++----::::....     .....::::----++++oooo***************                                                 */
/*                  *ooooo++++-----:::::....   .....:::::-----++++ooooooooooo*******                                                 */
/*                  oooo++++++-----::::::..........::::::-----++++++oooooooooooooooo                                                 */
/*                  ooo++++++-------::::::.......:::::::--------+++++++ooooooooooooo                                                 */
/*                  ++++++++--------::::::::...:::::::::---------++++++++++++ooooooo                                                 */
/*                  ++++++-----------:::::::::::::::::::-------------++++++++++++ooo                                                 */
/*                  +++----------------:::::::::::::::-------------------++++++++++o                                                 */
/*                  -------------------------::------------------------------+++++++                                                 */
/*                  --------------------------------------------:::::::--------+++++                                                 */
/*                  ----------------------------------------::::::::::::::-------+++                                                 */
/*                  :::::::-----------------+++------------::::::::::::::::::------+                                                 */
/*                  :::::::::-----------++++++++++---------::::::::......::::::-----                                                 */
/*                  ::::::::---------+++++++++++++++--------::::::::.....:::::------                                                 */
/*                  :::-----------+++++++++++o+++++++++--------:::::::::::::-------+                                                 */
/*                  ----------++++++++++++ooooooo+++++++++---------::::::-------++++                                                 */
/*                  -----+++++++++++++ooooooooooooo++++++++++-----------------++++++                                                 */
/*                  +++++++++++++oooooooooooooooooooooo++++++++++----------++++++++o                                                 */
/*                  ++++++++oooooooooooooooo***ooooooooooo++++++++++++-+++++++++oooo                                                 */
/*                  +oooooooooooooooooo***********ooooooooooooo++++++++++++++ooooooo                                                 */
/*                  oooooooooooo**********************ooooooooooooooo+++oooooooooooo                                                 */
/*                  oooo************************************oooooooooooooooooooo****                                                 */
/*                  *********************#######******************oooooooo**********                                                 */
/*                  *********#########################******************************                                                 */
/*                  ###########################################****************#####                                                 */
/*                  ################################################################                                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   INTERPOLATION_LINEAIRE(fonction_origine,fonction_extremite,coordonnee_barycentrique)                                          \
                    BARY(fonction_origine,fonction_extremite,coordonnee_barycentrique)                                                  \
                                        /* Definition de la fonction d'interpolation lineaire :                                      */ \
                                        /*                                                                                           */ \
                                        /*                Y ^                                                                        */ \
                                        /*                  |                                                                        */ \
                                        /*                  |                                                                        */ \
                                        /*               fE |........................+ B                                             */ \
                                        /*                  |                     +  .                                               */ \
                                        /*                  |                  +     .                                               */ \
                                        /*                  |               +        .                                               */ \
                                        /*                  |            +           .                                               */ \
                                        /*               fO |........ +              .                                               */ \
                                        /*                  |       A.               .                                               */ \
                                        /*                  |        .               .                                               */ \
                                        /*                  |        .               .                                               */ \
                                        /*                  |        .               .                                               */ \
                                        /*                  |------------------------------------------------------>                 */ \
                                        /*                 O        t=0             t=1                            X                 */ \
                                        /*                                                                                           */ \
                                        /* on cherche donc un polynome du premier degre passant par A(fO) et B(fE) ; il vaut :       */ \
                                        /*                                                                                           */ \
                                        /*                          (fE-fO)                                                          */ \
                                        /*                  P(t) = ---------.t + fO                                                  */ \
                                        /*                             L                                                             */ \
                                        /*                                                                                           */ \
                                        /* avec ici :                                                                                */ \
                                        /*                                                                                           */ \
                                        /*                  L=1-0=1 (amplitude de 't')...                                            */ \
                                        /*                                                                                           */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E   L ' I N T E R P O L A T I O N   C U B I Q U E  :                                               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Interpolation bi-cubique (avec un seul niveau d'iteration dans l'image ci-dessous) :                                       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                  #####*******oooooo++++++++-------------------------+++++++ooooo*                                                 */
/*                  ###******ooooo+++++-------------------------++++++++++ooooooo***                                                 */
/*                  ##******oooo+++-----::::::::::::::::------+++++++oooooooooo*****                                                 */
/*                  #******ooo+++----::::...........:::::-----++++oooooooo**********                                                 */
/*                  ******ooo+++---:::.....      .....::::---++++ooooo**************                                                 */
/*                  *****ooo+++---:::...           ....:::---++++oooo***************                                                 */
/*                  ****oooo+++--:::...             ....:::--+++oooo****************                                                 */
/*                  ***oooo+++---:::...             ....:::---+++oooo***************                                                 */
/*                  oooooo+++---:::....             ....:::---+++ooooo**************                                                 */
/*                  oooo+++++---:::....             ....:::----++++oooooooo*********                                                 */
/*                  o+++++++----::::.....          .....::::----+++++ooooooooooooooo                                                 */
/*                  ++++++-----:::::........   ........::::::-----+++++++++ooooooooo                                                 */
/*                  ++---------:::::::................::::::::--------++++++++++++oo                                                 */
/*                  ----------::::::::::::::....::::::::::::::::::-----------+++++++                                                 */
/*                  -----::::::::::::::::::::::::::::::::::::::::::::::::--------+++                                                 */
/*                  :::::::::::::::::--------:--:::::::::::::::::::::::::::::-------                                                 */
/*                  :::::::::::::---------------------::::::::::........::::::::----                                                 */
/*                  :::::::::::-------------------------:::::::............::::::---                                                 */
/*                  :::::::::::-------+++++++++++++------::::::.............::::::--                                                 */
/*                  ::::::::::------++++++++++++++++------:::::.............:::::---                                                 */
/*                  ::::::::------++++++++++++++++++++-----::::::..........::::::---                                                 */
/*                  :::::-------++++++++oooooooooo++++++-----::::::::::::::::::-----                                                 */
/*                  ---------+++++++oooooooooooooooo++++++------::::::::::::------++                                                 */
/*                  ----++++++++oooooooooooo**ooooooooo++++++-------------------++++                                                 */
/*                  ++++++++oooooooooo************oooooooo+++++++-----------+++++++o                                                 */
/*                  ++oooooooooo**********************oooooooo+++++++++++++++++ooooo                                                 */
/*                  ooooo********************************oooooooooooo+++ooooooooooo*                                                 */
/*                  *************#################************ooooooooooooooooo*****                                                 */
/*                  *****#############################******************************                                                 */
/*                  *#####################################************************##                                                 */
/*                  ##########################################****************######                                                 */
/*                  ############################################************########                                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

                                        /* Le 20101228092201, l'ordre de certains 'MUL2(...)' est passee de :                        */
                                        /*                                                                                           */
                                        /*                  MUL2(...,AMPLITUDE_DU_PARAMETRE_D_INTERPOLATION_CUBIQUE)                 */
                                        /*                                                                                           */
                                        /* a :                                                                                       */
                                        /*                                                                                           */
                                        /*                  MUL2(AMPLITUDE_DU_PARAMETRE_D_INTERPOLATION_CUBIQUE,...)                 */
                                        /*                                                                                           */
                                        /* afin que lors d'une eventuelle derivation formelle la derivee de la constante             */
                                        /* 'AMPLITUDE_DU_PARAMETRE_D_INTERPOLATION_CUBIQUE' (='d_CONSTANTES') apparaisse en premier  */
                                        /* argument d'un 'MUL2(...)' et qu'ainsi un 'MUL2(0,...)' soit facilement identifiable en    */
                                        /* vue de faire des simplifications d'expressions formelles...                               */

-define   AMPLITUDE_DU_PARAMETRE_D_INTERPOLATION_CUBIQUE                                                                                \
-_-_-_-             AMPLITUDE_DES_COORDONNEES_BARYCENTRIQUES
                                        /* Valeur de L=1-0=1 (c'est-a-dire le segment de variation des coordonnees barycentriques).  */
-define   INTERPOLATION_CUBIQUE_t3(fonction_origine,derivee_origine,fonction_extremite,derivee_extremite)                               \
-_-_-_-             DIVI(SOUS(MUL2(AMPLITUDE_DU_PARAMETRE_D_INTERPOLATION_CUBIQUE                                                       \
-_-_-_-                           ,ADD2(derivee_extremite,derivee_origine)                                                              \
-_-_-_-                            )                                                                                                    \
-_-_-_-                      ,DOUB(SOUS(fonction_extremite,fonction_origine))                                                           \
-_-_-_-                       )                                                                                                         \
-_-_-_-                 ,EXP3(AMPLITUDE_DU_PARAMETRE_D_INTERPOLATION_CUBIQUE)                                                           \
-_-_-_-                  )
                                        /* Definition du coefficient cubique de la fonction d'interpolation cubique...               */
-define   INTERPOLATION_CUBIQUE_t2(fonction_origine,derivee_origine,fonction_extremite,derivee_extremite)                               \
-_-_-_-             DIVI(SOUS(TRIP(SOUS(fonction_extremite,fonction_origine))                                                           \
-_-_-_-                      ,MUL2(AMPLITUDE_DU_PARAMETRE_D_INTERPOLATION_CUBIQUE                                                       \
-_-_-_-                           ,ADD2(derivee_extremite,DOUB(derivee_origine))                                                        \
-_-_-_-                            )                                                                                                    \
-_-_-_-                       )                                                                                                         \
-_-_-_-                 ,EXP2(AMPLITUDE_DU_PARAMETRE_D_INTERPOLATION_CUBIQUE)                                                           \
-_-_-_-                  )
                                        /* Definition du coefficient carre de la fonction d'interpolation cubique...                 */
-define   INTERPOLATION_CUBIQUE_t1(fonction_origine,derivee_origine,fonction_extremite,derivee_extremite)                               \
-_-_-_-             derivee_origine
                                        /* Definition du coefficient lineaire de la fonction d'interpolation cubique...              */
-define   INTERPOLATION_CUBIQUE_t0(fonction_origine,derivee_origine,fonction_extremite,derivee_extremite)                               \
-_-_-_-             fonction_origine
                                        /* Definition du coefficient constant de la fonction d'interpolation cubique...              */
-define   INTERPOLATION_CUBIQUE(fonction_origine,derivee_origine,fonction_extremite,derivee_extremite,coordonnee_barycentrique)         \
-_-_-_-             HORNER_1_03(coordonnee_barycentrique                                                                                \
-_-_-_-                        ,INTERPOLATION_CUBIQUE_t3(fonction_origine,derivee_origine,fonction_extremite,derivee_extremite)         \
-_-_-_-                        ,INTERPOLATION_CUBIQUE_t2(fonction_origine,derivee_origine,fonction_extremite,derivee_extremite)         \
-_-_-_-                        ,INTERPOLATION_CUBIQUE_t1(fonction_origine,derivee_origine,fonction_extremite,derivee_extremite)         \
-_-_-_-                        ,INTERPOLATION_CUBIQUE_t0(fonction_origine,derivee_origine,fonction_extremite,derivee_extremite)         \
-_-_-_-                         )
                                        /* Definition de la fonction d'interpolation cubique :                                       */
                                        /*                                                                                           */
                                        /*                Y ^                            dE                                          */
                                        /*                  |                           /                                            */
                                        /*                  |                          /                                             */
                                        /*               fE |........................+/B                                             */
                                        /*                  |                     + @/.                                              */
                                        /*                  |    dO            +   @/ .                                              */
                                        /*                  |      \        +     @   .                                              */
                                        /*                  |       \    +       @    .                                              */
                                        /*               fO |........\+         @     .                                              */
                                        /*                  |       A.\@       @      .                                              */
                                        /*                  |        . \@    @        .                                              */
                                        /*                  |        .    @@          .                                              */
                                        /*                  |        .                .                                              */
                                        /*                  |------------------------------------------------------>                 */
                                        /*                 O        t=0              t=1                           X                 */
                                        /*                                                                                           */
                                        /* on cherche donc un polynome du troisieme degre passant par A(fO) et B(fE), et             */
                                        /* ayant en ces points les derivees dO et dE ; la parametrisation a lieu a l'aide            */
                                        /* de la variable 't', et le polynome P(t) est :                                             */
                                        /*                                                                                           */
                                        /*                            3      2      1      0                                         */
                                        /*                  P(t) = a.t  + b.t  + c.t  + d.t                                          */
                                        /*                                                                                           */
                                        /* avec :                                                                                    */
                                        /*                                                                                           */
                                        /*                       (dE+dO).L - 2.(fE-fO)                                               */
                                        /*                  a = -----------------------                                              */
                                        /*                                  3                                                        */
                                        /*                                 L                                                         */
                                        /*                                                                                           */
                                        /*                       3.(fE-fO) - (dE+2.dO).L                                             */
                                        /*                  b = -------------------------                                            */
                                        /*                                  2                                                        */
                                        /*                                 L                                                         */
                                        /*                                                                                           */
                                        /*                  c = dO                                                                   */
                                        /*                                                                                           */
                                        /*                  d = fO                                                                   */
                                        /*                                                                                           */
                                        /* dans le cas qui nous interesse : L=1-0=1 (amplitude du parametre 't') et de               */
                                        /* plus, les derivees 'dE' et 'dO' doivent etre exprimees dans les memes unites              */
                                        /* que 'fE' et 'fO', c'est-a-dire [min,max] et non pas [0,1]...                              */
                                        /*                                                                                           */
                                        /* Le 20101202075958 fut introduit (bien tardivement) 'HORNER_1_03(...)'.                    */

                                        /* Definition de la derivee de la fonction d'interpolation cubique...                        */
                                        /*                                                                                           */
                                        /*                   dP(t)         2        1      0                                         */
                                        /*                  ------- = 3.a.t  + 2.b.t  + c.t                                          */
                                        /*                    dt                                                                     */
                                        /*                                                                                           */
                                        /* avec 'a', 'b' et 'c' definis ci-dessus...                                                 */
                                        /*                                                                                           */
                                        /* Le 20101202075958 fut introduit (bien tardivement) 'HORNER_1_02(...)'. J'ai essaye a      */
                                        /* cette occasion d'utiliser la derivation formelle de 'INTERPOLATION_CUBIQUE(...)' mais,    */
                                        /* malheureusement, cela n'a pas marche. En fait, cela n'est pas tres grave car la procedure */
                                        /* 'd_INTERPOLATION_CUBIQUE(...)' n'est utilisee que dans un module devenu inutile il y a    */
                                        /* bien longtemps (a savoir 'v $ximf/courbes.1$FON d_INTERPOLATION_CUBIQUE'). En fait, cela  */
                                        /* semble complique par le fait que 'd_INTERPOLATION_CUBIQUE(...)' soit reference de facon   */
                                        /* conditionnelle en '$PASSE_1'...                                                           */
                                        /*                                                                                           */
                                        /* Le probleme a ete resolu le 20101222103411 via 'v $xcp/DerivFormel$K'). La definition :   */
                                        /*                                                                                           */
                                        /*   #define   d_INTERPOLATION_CUBIQUE(Fori,dFori,Fext,dFext,lambda)                      \  */
                                        /*                  HORNER_1_02(lambda                                                    \  */
                                        /*                             ,TRIP(INTERPOLATION_CUBIQUE_t3(Fori,dFori,Fext,dFext))     \  */
                                        /*                             ,DOUB(INTERPOLATION_CUBIQUE_t2(Fori,dFori,Fext,dFext))     \  */
                                        /*                             ,MONO(INTERPOLATION_CUBIQUE_t1(Fori,dFori,Fext,dFext))     \  */
                                        /*                              )                                                            */
                                        /*                                                                                           */
                                        /* a donc ete supprimee a cette date...                                                      */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E   L A   T R A N S F O R M A T I O N                                                              */
/*        D E S   C O O R D O N N E S   B A R Y C E N T R I Q U E S   A V E C   G E N E R A L I S A T I O N  :                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
-define   INTERPOLATION_MIXTE(interpolation_cubique,fonction_origine,derivee_origine,fonction_extremite,derivee_extremite,lambda)       \
-_-_-_-             COND(IL_FAUT(interpolation_cubique)                                                                                 \
-_-_-_-                 ,INTERPOLATION_CUBIQUE(fonction_origine,derivee_origine,fonction_extremite,derivee_extremite,lambda)            \
-_-_-_-                 ,INTERPOLATION_LINEAIRE(fonction_origine,fonction_extremite,lambda)                                             \
-_-_-_-                  )
                                        /* Definition de la fonction d'interpolation "mixte" qui est soit cubique soit lineaire      */
                                        /* (introduite le 20181227094123 pour 'v '$xrv/champs_5.1C$I INTERPOLATION_MIXTE')...        */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E   L A   T R A N S F O R M A T I O N                                                              */
/*        D E S   C O O R D O N N E S   B A R Y C E N T R I Q U E S   A V E C   G E N E R A L I S A T I O N  :                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   gF___NORMALISE_COORDONNEE_BARYCENTRIQUE(coordonnee_barycentrique,CoordBary0,CoordBary1)                                       \
                    NORZ(TRON(coordonnee_barycentrique                                                                                  \
                             ,CoordBary0                                                                                                \
                             ,CoordBary1                                                                                                \
                              )                                                                                                         \
                        ,CoordBary0                                                                                                     \
                        ,CoordBary1                                                                                                     \
                        ,COORDONNEE_BARYCENTRIQUE_MINIMALE                                                                              \
                         )                                                                                                              \
                                        /* Normalisation dans [0,1] d'une coordonnee barycentrique alors qu'elle est dans            */ \
                                        /* [CoordBary0,CoordBary1].                                                                  */

#define   gF___DENORMALISE_COORDONNEE_BARYCENTRIQUE(coordonnee_barycentrique,CoordBary0,CoordBary1)                                     \
                    F___DENORMALISE_NIVEAU(gF___NORMALISE_COORDONNEE_BARYCENTRIQUE(coordonnee_barycentrique,CoordBary0,CoordBary1))
#define   g__DENORMALISE_COORDONNEE_BARYCENTRIQUE(coordonnee_barycentrique,CoordBary0,CoordBary1)                                       \
                    __DENORMALISE_NIVEAU(gF___NORMALISE_COORDONNEE_BARYCENTRIQUE(coordonnee_barycentrique,CoordBary0,CoordBary1))
                                        /* Coordonnees barycentriques denormalisees flottantes et entieres respectivement, la        */
                                        /* normalisation ayant lieu dans [CoordBary0,CoordBary1] afin de generaliser...              */

#define   gNsubstitution_COORDONNEE_BARYCENTRIQUE(coordonnee_barycentrique,transformateur,translation,CoordBary0,CoordBary1)            \
                    HOMO(ITb1(transformateur                                                                                            \
                             ,INDX(translation(g__DENORMALISE_COORDONNEE_BARYCENTRIQUE(coordonnee_barycentrique                         \
                                                                                      ,CoordBary0                                       \
                                                                                      ,CoordBary1                                       \
                                                                                       )                                                \
                                               )                                                                                        \
                                  ,NOIR                                                                                                 \
                                   )                                                                                                    \
                              )                                                                                                         \
                        ,COORDONNEE_BARYCENTRIQUE_MINIMALE                                                                              \
                        ,COORDONNEE_BARYCENTRIQUE_MAXIMALE                                                                              \
                        ,CoordBary0                                                                                                     \
                        ,CoordBary1                                                                                                     \
                         )                                                                                                              \
                                        /* Substitution d'une coordonnee barycentrique 'coordonnee_barycentrique'.                   */

#define   gSUBSTITUTION_D_UNE_COORDONNEE_BARYCENTRIQUE(coordonnee_barycentrique,transformer,transformateur,CoordBary0,CoordBary1)       \
                    COND(IL_NE_FAUT_PAS(transformer)                                                                                    \
                        ,coordonnee_barycentrique                                                                                       \
                        ,COND(IMEQ(coordonnee_barycentrique,CoordBary0,CoordBary1)                                                      \
                             ,gNsubstitution_COORDONNEE_BARYCENTRIQUE(coordonnee_barycentrique                                          \
                                                                     ,transformateur                                                    \
                                                                     ,NEUT                                                              \
                                                                     ,CoordBary0                                                        \
                                                                     ,CoordBary1                                                        \
                                                                      )                                                                 \
                             ,INTERPOLATION_LINEAIRE(gNsubstitution_COORDONNEE_BARYCENTRIQUE(coordonnee_barycentrique                   \
                                                                                            ,transformateur                             \
                                                                                            ,NEUT                                       \
                                                                                            ,CoordBary0                                 \
                                                                                            ,CoordBary1                                 \
                                                                                             )                                          \
                                                    ,gNsubstitution_COORDONNEE_BARYCENTRIQUE(coordonnee_barycentrique                   \
                                                                                            ,transformateur                             \
                                                                                            ,SUCN                                       \
                                                                                            ,CoordBary0                                 \
                                                                                            ,CoordBary1                                 \
                                                                                             )                                          \
                                                    ,SOUS(gF___DENORMALISE_COORDONNEE_BARYCENTRIQUE(coordonnee_barycentrique            \
                                                                                                   ,CoordBary0                          \
                                                                                                   ,CoordBary1                          \
                                                                                                    )                                   \
                                                         ,FLOT(g__DENORMALISE_COORDONNEE_BARYCENTRIQUE(coordonnee_barycentrique         \
                                                                                                      ,CoordBary0                       \
                                                                                                      ,CoordBary1                       \
                                                                                                       )                                \
                                                               )                                                                        \
                                                          )                                                                             \
                                                     )                                                                                  \
                              )                                                                                                         \
                         )                                                                                                              \
                                        /* Definition de la fonction de transformation des 'lambda's. Elle est definie point         */ \
                                        /* par point a l'aide du vecteur 'transformateur' d'index dans [NOIR,BLANC] qui definit      */ \
                                        /* le profil de la courbe ci-dessous ("+") qui transforme donc le 'lambda' argument. On      */ \
                                        /* notera qu'en general :                                                                    */ \
                                        /*                                                                                           */ \
                                        /*                  transformateur(0) = 0                   ('CoordBary0')                   */ \
                                        /*                                                                                           */ \
                                        /* et :                                                                                      */ \
                                        /*                                                                                           */ \
                                        /*                  transformateur(1) = 1                   ('CoordBary1')                   */ \
                                        /*                                                                                           */ \
                                        /* et :                                                                                      */ \
                                        /*                                                                                           */ \
                                        /*                  0 <= transformateur(lambda) <= 1                                         */ \
                                        /*                                                                                           */ \
                                        /* ce qui correspond au graphique ci-dessous, mais que cela n'est pas obligatoire...         */ \
                                        /*                                                                                           */ \
                                        /* Si, par exemple, 'transformateur' contient lui-meme une fonction lineaire allant de 0     */ \
                                        /* a 1, on retombe evidemment sur 'INTERPOLATION_LINEAIRE(...)'. Enfin, elle est appelee     */ \
                                        /* 'COORDONNEE_BARYCENTRIQUE(...)' parce qu'elle fait appel elle-meme explicitement          */ \
                                        /* a 'INTERPOLATION_LINEAIRE(...)' afin d'interpoler entre les points de 'transformateur'    */ \
                                        /* afin de le faire apparaitre comme continu.                                                */ \
                                        /*                                                                                           */ \
                                        /* Elle est donc definie par :                                                               */ \
                                        /*                                                                                           */ \
                                        /*             f(t) ^                                                                        */ \
                                        /*                  |                                                                        */ \
                                        /*                  |                                                                        */ \
                                        /*                1 |.........................+                                              */ \
                                        /*                  |                   +     .                                              */ \
                                        /*                  |                +        .                                              */ \
                                        /*                  |          +           +  .                                              */ \
                                        /*                  |                         .                                              */ \
                                        /*                  |             +           .                                              */ \
                                        /*                  |  +     +                .                                              */ \
                                        /*                  |     +                   .                                              */ \
                                        /*                  |                         .                                              */ \
                                        /*                  |                         .                                              */ \
                                        /*                0 +------------------------------------------------------>                 */ \
                                        /*                 t=0                       t=1                           t                 */ \
                                        /*                                                                                           */ \
                                        /* ou 't' designe la coordonnee barycentrique 'lambda', et 'f(...)' le 'transformateur'.     */ \
                                        /*                                                                                           */ \
                                        /* La generalisation de [0,1] a [CoordBary0,CoordBary1] a ete introduite le 19990303113511.  */

#define   F___DENORMALISE_COORDONNEE_BARYCENTRIQUE(coordonnee_barycentrique)                                                            \
                    gF___DENORMALISE_COORDONNEE_BARYCENTRIQUE(coordonnee_barycentrique                                                  \
                                                             ,COORDONNEE_BARYCENTRIQUE_MINIMALE                                         \
                                                             ,COORDONNEE_BARYCENTRIQUE_MAXIMALE                                         \
                                                              )                                                                         \
#define   __DENORMALISE_COORDONNEE_BARYCENTRIQUE(coordonnee_barycentrique)                                                              \
                    g__DENORMALISE_COORDONNEE_BARYCENTRIQUE(coordonnee_barycentrique                                                    \
                                                           ,COORDONNEE_BARYCENTRIQUE_MINIMALE                                           \
                                                           ,COORDONNEE_BARYCENTRIQUE_MAXIMALE                                           \
                                                            )                                                                           \
                                        /* Coordonnees barycentriques denormalisees flottantes et entieres respectivement.           */
#define   Nsubstitution_COORDONNEE_BARYCENTRIQUE(coordonnee_barycentrique,transformateur,translation)                                   \
                    gNsubstitution_COORDONNEE_BARYCENTRIQUE(coordonnee_barycentrique                                                    \
                                                           ,transformateur                                                              \
                                                           ,translation                                                                 \
                                                           ,COORDONNEE_BARYCENTRIQUE_MINIMALE                                           \
                                                           ,COORDONNEE_BARYCENTRIQUE_MAXIMALE                                           \
                                                            )                                                                           \
                                        /* Substitution d'une coordonnee barycentrique 'coordonnee_barycentrique'.                   */
#define   SUBSTITUTION_D_UNE_COORDONNEE_BARYCENTRIQUE(coordonnee_barycentrique,transformer,transformateur)                              \
                    gSUBSTITUTION_D_UNE_COORDONNEE_BARYCENTRIQUE(coordonnee_barycentrique                                               \
                                                                ,transformer                                                            \
                                                                ,transformateur                                                         \
                                                                ,COORDONNEE_BARYCENTRIQUE_MINIMALE                                      \
                                                                ,COORDONNEE_BARYCENTRIQUE_MAXIMALE                                      \
                                                                 )                                                                      \
                                        /* Definition de la fonction de transformation des 'lambda's.                                */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D ' U N E   G E N E R A T I O N   N O N   P E R I O D I Q U E  :                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   TORE_PLAT_INFERIEUR                                                                                                           \
                    FLOT(QUAR(MOINS_L_INFINI))                                                                                          \
                                        /* En fait, le tore des coordonnees existe, mais est "infiniment" grand. On notera que       */ \
                                        /* l'on n'utilise pas 'F_MOINS_L_INFINI' afin d'eviter des debordements lors d'operations    */ \
                                        /* avec 'ARRO(...)' via 'fNON_DIVISIBLE(...)'.                                               */
#define   TORE_PLAT_SUPERIEUR                                                                                                           \
                    FLOT(QUAR(INFINI))                                                                                                  \
                                        /* En fait, le tore des coordonnees existe, mais est "infiniment" grand. On notera que       */ \
                                        /* l'on n'utilise pas 'F_INFINI' afin d'eviter des debordements lors d'operations            */ \
                                        /* avec 'ARRO(...)' via 'fNON_DIVISIBLE(...)'.                                               */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C H A M P   F R A C T A L   S P A T I A L E M E N T                                                                        */
/*        B I -   E T   T R I - D I M E N S I O N N E L  :                                                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   FIRST_NIVEAU_DE_RECURSION                                                                                                     \
                    UN                                                                                                                  \
                                        /* Index du premier element et identificateur du premier niveau de recursivite...            */



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.