/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N S   D E S   D I F F E R E N T S   E S P A C E S  :                                                     */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xrq/nucleon.L4$I' :                                                                                            */
/*                                                                                                                                   */
/*                    Jean-Francois Colonna (LACTAMME, 1991??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D U   F O R M A T   D E S   I M A G E S  :                                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Xmin_IMAGE                                                                                                                    \
                    Xmin
#define   Ymin_IMAGE                                                                                                                    \
                    Ymin
#define   Zmin_IMAGE                                                                                                                    \
                    Zmin
                                        /* Definition du "coin" inferieur-gauche des images. On notera qu'autrefois, on utilisait    */
                                        /* (XminPal,YminPal), et que cela empechait de changer le format des images, et par exemple  */
                                        /* cela ne permettait pas de faire de filtrage de Fourier qui demande que le format de       */
                                        /* l'image soit carre...                                                                     */
#define   Xmax_IMAGE                                                                                                                    \
                    Xmax
#define   Ymax_IMAGE                                                                                                                    \
                    Ymax
#define   Zmax_IMAGE                                                                                                                    \
                    Zmax
                                        /* Definition du "coin" superieur-droite des images. On notera qu'autrefois, on utilisait    */
                                        /* (XmaxPal,YmaxPal), et que cela empechait de changer le format des images, et par exemple  */
                                        /* cela ne permettait pas de faire de filtrage de Fourier qui demande que le format de       */
                                        /* l'image soit carre...                                                                     */

#define   LONGUEUR_DE_REFERENCE_POUR_LE_FORMATAGE_DES_IMAGES                                                                            \
                    FLOT(LONGUEUR(DIMENSION(Ymin_IMAGE,Ymax_IMAGE)))                                                                    \
                                        /* L'axe 'OY' est l'axe de reference pour les formatages. ATTENTION, on notera que la        */
                                        /* fonction 'LONGUEUR(...)' a ete introduite le 19991224100516 (voir ci-apres...).           */

#define   FORMAT_HORIZONTAL_DES_IMAGES                                                                                                  \
                    DIVI(FLOT(LONGUEUR(DIMENSION(Xmin_IMAGE,Xmax_IMAGE))),LONGUEUR_DE_REFERENCE_POUR_LE_FORMATAGE_DES_IMAGES)
#define   FORMATAGE_HORIZONTAL_DES_IMAGES(x)                                                                                            \
                    MUL2(FORMAT_HORIZONTAL_DES_IMAGES,x)
                                        /* Definition du format horizontal des images a l'aide du rapport dX/dY... On notera que     */
                                        /* 'DIMENSION(...)' a ete remplace par 'LONGUEUR(DIMENSION(...))' le 19991224100516 afin     */
                                        /* d'etre homogene avec les fonctions du type 'F__?DENORMALISE_AXES(...)'. Ce commentaire    */
                                        /* vaut aussi pour la procedure 'FORMATAGE_VERTICAL_DES_IMAGES(...)' et la procedure         */
                                        /* 'FORMATAGE_EN_PROFONDEUR_DES_IMAGES(...)'.                                                */
#define   FORMAT_VERTICAL_DES_IMAGES                                                                                                    \
                    DIVI(FLOT(LONGUEUR(DIMENSION(Ymin_IMAGE,Ymax_IMAGE))),LONGUEUR_DE_REFERENCE_POUR_LE_FORMATAGE_DES_IMAGES)
#define   FORMATAGE_VERTICAL_DES_IMAGES(y)                                                                                              \
                    CHOI(NEUT(y),MUL2(FORMAT_VERTICAL_DES_IMAGES,y))
                                        /* Definition du format vertical des images a l'aide du rapport dY/dY introduit le           */
                                        /* 19991224100516 par symetrie {X,Y,Z}. ATTENTION : retour au "neutre" le 19991224154610.    */
#define   FORMAT_EN_PROFONDEUR_DES_IMAGES                                                                                               \
                    DIVI(FLOT(LONGUEUR(DIMENSION(Zmin_IMAGE,Zmax_IMAGE))),LONGUEUR_DE_REFERENCE_POUR_LE_FORMATAGE_DES_IMAGES)
#define   FORMATAGE_EN_PROFONDEUR_DES_IMAGES(z)                                                                                         \
                    CHOI(NEUT(z),MUL2(FORMAT_EN_PROFONDEUR_DES_IMAGES,z))
                                        /* Le formatage en profondeur a ete introduit le 19991224100516.                             */

#define   FORMAT_DES_IMAGES                                                                                                             \
                    FORMAT_HORIZONTAL_DES_IMAGES                                                                                        \
                                        /* Definition du format des images a l'aide du rapport dX/dY. ATTENTION : retour au          */ \
                                        /* "neutre" le 19991224154610.                                                               */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*                                                                                    3                                              */
/*        D E F I N I T I O N   D E   L ' E S P A C E   P H Y S I Q U E   D A N S   R     ( F I N )  :                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
DEFV(Local,DEFV(pointF_3D,centre_de_l_espace_physique));
DEFV(Local,DEFV(vectorF_3D,espace_physique));
                                        /* L'espace physique est une "boite" parallelepipedique definie par l'une de ses             */
                                        /* diagonales :                                                                              */
                                        /*                                                                                           */
                                        /*                            + + + + + + + + + + + + + + + +                                */
                                        /*                          + .                           + +                                */
                                        /*                        +   .                         +   +                                */
                                        /*                      +     .                       +     +                                */
                                        /*                    +       .              max_ESPACE     +                                */
                                        /*                  + + + + + + + + + + + + + + + +         +                                */
                                        /*                  +         .                   +         +                                */
                                        /*                  +         .                   +         +                                */
                                        /*                  +         .                   +         +                                */
                                        /*                  +    min_ESPACE               +         +                                */
                                        /*                  +         . . . . . . . . . . + . . . . +                                */
                                        /*                  +       .                     +       +                                  */
                                        /*                  +     .                       +     +                                    */
                                        /*                  +   .                         +   +                                      */
                                        /*                  + .                           + +                                        */
                                        /*                  + + + + + + + + + + + + + + + +                                          */
#define   DEFINITION_DE_L_ESPACE_PHYSIQUE                                                                                               \
                    Bblock                                                                                                              \
                    INITIALISATION_VECTEUR_3D(espace_physique                                                                           \
                                             ,Xmin_ESPACE,Ymin_ESPACE,Zmin_ESPACE                                                       \
                                             ,Xmax_ESPACE,Ymax_ESPACE,Zmax_ESPACE                                                       \
                                              );                                                                                        \
                    INITIALISATION_POINT_3D(centre_de_l_espace_physique                                                                 \
                                           ,MOYE(ASD2(espace_physique,origine,x),ASD2(espace_physique,extremite,x))                     \
                                           ,MOYE(ASD2(espace_physique,origine,y),ASD2(espace_physique,extremite,y))                     \
                                           ,MOYE(ASD2(espace_physique,origine,z),ASD2(espace_physique,extremite,z))                     \
                                            );                                                                                          \
                    Eblock                                                                                                              \
                                        /* Initialisation de la definition de l'espace physique.                                     */

#define   EDITER_LA_DEFINITION_DE_L_UNIVERS_PHYSIQUE                                                                                    \
                    FAUX
DEFV(Local,DEFV(Logical,INIT(editer_la_definition_de_l_univers_physique,EDITER_LA_DEFINITION_DE_L_UNIVERS_PHYSIQUE)));
                                        /* Cet indicateur permet d'editer la definition de l'univers physique utilise.               */

#define   EDITER_L_UNIVERS_PHYSIQUE                                                                                                     \
                    Bblock                                                                                                              \
                    Test(IL_FAUT(editer_la_definition_de_l_univers_physique))                                                           \
                         Bblock                                                                                                         \
                         CAL2(Prin6("UNIVERS=((XUI=%+.^^^,YUI=%+.^^^,ZUI=%+.^^^),(XUS=%+.^^^,YUS=%+.^^^,ZUS=%+.^^^))\n"                 \
                                   ,ASD2(espace_physique,origine,x)                                                                     \
                                   ,ASD2(espace_physique,origine,y)                                                                     \
                                   ,ASD2(espace_physique,origine,z)                                                                     \
                                   ,ASD2(espace_physique,extremite,x)                                                                   \
                                   ,ASD2(espace_physique,extremite,y)                                                                   \
                                   ,ASD2(espace_physique,extremite,z)                                                                   \
                                    )                                                                                                   \
                              );                                                                                                        \
                                        /* Le 19980227102515, j'ai remplace les '{}' par des '()' a cause de l'utilisation qui est   */ \
                                        /* faite de tout ceci dans des sequences telles :                                            */ \
                                        /*                                                                                           */ \
                                        /*                  xivPdf 11 2 / 005633_006144                                              */ \
                                        /*                                                                                           */ \
                                        /* car, en effet, les '{}' sont interpretees par le 'C-Shell'...                             */ \
                                        /*                                                                                           */ \
                                        /* Le 20060105160224, le format "16g" est passe a "^^g" pour plus de souplesse...            */ \
                                        /*                                                                                           */ \
                                        /* Le 20091123123446, le format "^^g" est passe a "^^^" pour plus de souplesse...            */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Edition de l'univers physique utilise.                                                    */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P A S S A G E   D E   L ' E S P A C E   P H Y S I Q U E                                                                    */
/*        A   L ' E S P A C E   D E   V I S U A L I S A T I O N   E T   I N V E R S E M E N T  :                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   LONGUEURS_PHYSIQUES_DANS_01(longueur,type)                                                                                    \
                    SCAL(longueur                                                                                                       \
                        ,SOUS(ASD2(espace_physique,extremite,type),ASD2(espace_physique,origine,type))                                  \
                        ,SOUS(COORDONNEE_BARYCENTRIQUE_MAXIMALE,COORDONNEE_BARYCENTRIQUE_MINIMALE)                                      \
                         )                                                                                                              \
                                        /* Mise d'une longueur physique sur n'importe quel axe dans le segment [0,1]...              */
#define   lX_PHYSIQUE_DANS_01(longueur)                                                                                                 \
                    LONGUEURS_PHYSIQUES_DANS_01(ANTI_SUPER_ECHELLE_OX(longueur),x)
#define   lY_PHYSIQUE_DANS_01(longueur)                                                                                                 \
                    LONGUEURS_PHYSIQUES_DANS_01(ANTI_SUPER_ECHELLE_OY(longueur),y)
#define   lZ_PHYSIQUE_DANS_01(longueur)                                                                                                 \
                    LONGUEURS_PHYSIQUES_DANS_01(ANTI_SUPER_ECHELLE_OZ(longueur),z)
                                        /* Mise d'une longueur physique dans le segment [0,1]...                                     */
                                        /*                                                                                           */
                                        /* Les 'ANTI_SUPER_ECHELLE_O?(...)' ont ete introduites le 20051216104908...                 */

#define   lX_PHYSIQUE_A_VISUALISATION(longueur)                                                                                         \
                    X_DE_VISUALISATION(lX_PHYSIQUE_DANS_01(longueur))
#define   lY_PHYSIQUE_A_VISUALISATION(longueur)                                                                                         \
                    Y_DE_VISUALISATION(lY_PHYSIQUE_DANS_01(longueur))
#define   lZ_PHYSIQUE_A_VISUALISATION(longueur)                                                                                         \
                    Z_DE_VISUALISATION(lZ_PHYSIQUE_DANS_01(longueur))
                                        /* Passage des longueurs physiques (lx,ly,lz) aux longueurs de visualisation (lX,lY,lZ).     */
                                        /* Des essais effectues le 19991224100516 sur '$LACT27' avec 'v $xrk/rdn_walk.52$K'          */
                                        /* donnent les valeurs suivantes :                                                           */
                                        /*                                                                                           */
                                        /*                  lX_PHYSIQUE_A_VISUALISATION(1.0) = 287.131410                            */
                                        /*                  lY_PHYSIQUE_A_VISUALISATION(1.0) = 287.000000                            */
                                        /*                  lZ_PHYSIQUE_A_VISUALISATION(1.0) = 7.500000                              */
                                        /*                                                                                           */
                                        /* avec :                                                                                    */
                                        /*                                                                                           */
                                        /*                  Pal                                                                      */
                                        /*                  Zmin=0 Zmax=15                                                           */
                                        /*                                                                                           */
                                        /* Cela est relativement problematique car des longueurs identiques dans l'espace physique   */
                                        /* ne donnent pas des longueurs identiques au niveau de la visualisation. Que faire ? La     */
                                        /* solution semble etre d'utiliser :                                                         */
                                        /*                                                                                           */
                                        /*                  Zmin=0 Zmax=574                                                          */
                                        /*                                                                                           */
                                        /* c'est-a-dire :                                                                            */
                                        /*                                                                                           */
                                        /*                  Zmin=Ymin                                                                */
                                        /*                  Zmax=Ymax                                                                */
                                        /*                                                                                           */
                                        /* C'est pourquoi 'FORMATAGE_EN_PROFONDEUR_DES_IMAGES(...)' a ete introduit de meme que      */
                                        /* 'FORMATAGE_VERTICAL_DES_IMAGES(...)'. Enfin, le passage de 'DIMENSION(...)' a             */
                                        /* 'LONGUEUR(DIMENSION(...))' a permis d'obtenir :                                           */
                                        /*                                                                                           */
                                        /*                  lX_PHYSIQUE_A_VISUALISATION(1.0) = 287.000000                            */
                                        /*                  lY_PHYSIQUE_A_VISUALISATION(1.0) = 287.000000                            */
                                        /*                  lZ_PHYSIQUE_A_VISUALISATION(1.0) = 287.000000                            */
                                        /*                                                                                           */
                                        /* avec :                                                                                    */
                                        /*                                                                                           */
                                        /*                  Pal                                                                      */
                                        /*                  Zmin=0 Zmax=15                                                           */
                                        /*                                                                                           */
                                        /* ce qui est tres bien...                                                                   */
                                        /*                                                                                           */
                                        /* Malheureusement, le 19991224154610, j'ai decouvert que cela avait des consequences sur    */
                                        /* 'DEFINITION_DE_L_ESPACE_PHYSIQUE(...)' a cause de {Zmin_ESPACE,Zmax_ESPACE} qui           */
                                        /* se retrouvaient disproportionnes pour de faibles valeurs de 'Zmax' (15 par exemple). Or   */
                                        /* il est pratiquement impossible de donner des "grandes" valeurs a 'Zmax' a cause de son    */
                                        /* utilisation dans des 'album's ('v $xrk/rdn_walk.52$K album'). La solution semble donc     */
                                        /* etre de rendre neutre la fonction 'FORMATAGE_EN_PROFONDEUR_DES_IMAGES(...)', de meme que  */
                                        /* 'FORMATAGE_VERTICAL_DES_IMAGES(...)', par symetrie... Cela donne donc :                   */
                                        /*                                                                                           */
                                        /*                  lX_PHYSIQUE_A_VISUALISATION(1.0) = 287.000000                            */
                                        /*                  lY_PHYSIQUE_A_VISUALISATION(1.0) = 287.000000                            */
                                        /*                  lZ_PHYSIQUE_A_VISUALISATION(1.0) = 7.500000                              */
                                        /*                                                                                           */
                                        /* avec :                                                                                    */
                                        /*                                                                                           */
                                        /*                  Pal                                                                      */
                                        /*                  Zmin=0 Zmax=15                                                           */
                                        /*                                                                                           */
                                        /* ce qui est moins bien...                                                                  */

#define   TRANSLATION_DE_CENTRAGE                                                                                                       \
                    NEGA(COORDONNEE_BARYCENTRIQUE_CENTRALE)                                                                             \
                                        /* Translation destinee a centrer, ou a manipuler autre chose qu'une coordonnee, et par      */ \
                                        /* exemple le rayon d'une particule...                                                       */
#define   TRANSLATION_DE_X_PHYSIQUE                                                                                                     \
                    FZERO
#define   TRANSLATION_DE_Y_PHYSIQUE                                                                                                     \
                    FZERO
#define   TRANSLATION_DE_Z_PHYSIQUE                                                                                                     \
                    TRANSLATION_DE_CENTRAGE
                                        /* Translations a apporter aux coordonnees physiques. Celles-ci sont introduites afin        */
                                        /* que le plan "central" soit en meme temps le plan de projection (Z=0), et soit donc le     */
                                        /* plan de convergence des yeux droit et gauche en cas de vision stereoscopique...           */

#define   COORDONNEES_PHYSIQUES_DANS_01(coordonnee,type,translation)                                                                    \
                    ADD2(NORM(coordonnee                                                                                                \
                             ,ASD2(espace_physique,origine,type)                                                                        \
                             ,ASD2(espace_physique,extremite,type)                                                                      \
                              )                                                                                                         \
                        ,translation                                                                                                    \
                         )                                                                                                              \
                                        /* Mise d'une coordonnee physique dans le segment [0+translation,1+translation].             */ \
                                        /*                                                                                           */ \
                                        /* ATTENTION : au cas ou 'BUG_SYSTEME_APC_GCC_ExcessPrecisionProblem_02' existerait, une     */ \
                                        /* solution pour faire fonctionner correctement 'COORDONNEES_PHYSIQUES_DANS_01(...)' est     */ \
                                        /* d'inclure sa definition dans un 'GRO2(FRA2(...))' comme les tests effectues avec          */ \
                                        /* 'v $Dbugs/APC$D/LinuxRedHat$D/GCC$D/flottant.21$c' l'ont montre...                        */

#define   gX_PHYSIQUE_DANS_01(coordonnee,translation)                                                                                   \
                    COORDONNEES_PHYSIQUES_DANS_01(ANTI_SUPER_ECHELLE_OX(coordonnee),x,translation)
#define   gY_PHYSIQUE_DANS_01(coordonnee,translation)                                                                                   \
                    COORDONNEES_PHYSIQUES_DANS_01(ANTI_SUPER_ECHELLE_OY(coordonnee),y,translation)
#define   gZ_PHYSIQUE_DANS_01(coordonnee,translation)                                                                                   \
                    COORDONNEES_PHYSIQUES_DANS_01(ANTI_SUPER_ECHELLE_OZ(coordonnee),z,translation)
                                        /* Mise d'une coordonnee physique dans le segment [0 + translation,1 + translation].         */
                                        /*                                                                                           */
                                        /* Ces procedures ont ete introduites le 20010201131010 afin de permettre la generation      */
                                        /* de coordonnees {X,Y,Z} dans [Xmin,Xmax]x[Ymin,Ymax]x[Zmin,Zmax] via une 'translation'     */
                                        /* nulle. Ceci a ete rendu necessaire par 'v $xrk/rdn_walk.52$K g._PHYSIQUE_A_VISUALISATION' */
                                        /* dans lequel ces coordonnees {X,Y,Z} sont ensuite utilisees pour indexer des albums        */
                                        /* d'image via 'v $xrk/rdn_walk.52$I FAload_point' ; avant cela, la coordonnee 'Z' etait     */
                                        /* incorrecte car etant dans [-Zmax/2,+Zmax/2].                                              */
                                        /*                                                                                           */
                                        /* Les 'ANTI_SUPER_ECHELLE_O?(...)' ont ete introduites le 20051216104908 en conjonction     */
                                        /* avec 'v $xrv/champs_5.1A$I 20051216104459'...                                             */
#define   X_PHYSIQUE_DANS_01(coordonnee)                                                                                                \
                    gX_PHYSIQUE_DANS_01(coordonnee,TRANSLATION_DE_X_PHYSIQUE)
#define   Y_PHYSIQUE_DANS_01(coordonnee)                                                                                                \
                    gY_PHYSIQUE_DANS_01(coordonnee,TRANSLATION_DE_Y_PHYSIQUE)
#define   Z_PHYSIQUE_DANS_01(coordonnee)                                                                                                \
                    gZ_PHYSIQUE_DANS_01(coordonnee,TRANSLATION_DE_Z_PHYSIQUE)
                                        /* Mise d'une coordonnee physique dans le segment [0,1] ou [-1/2,+1/2] dans le cas de 'Z'... */

#define   COORDONNEES_01_DANS_PHYSIQUES(coordonnee,type,translation)                                                                    \
                    DENO(SOUS(coordonnee                                                                                                \
                             ,translation                                                                                               \
                              )                                                                                                         \
                        ,ASD2(espace_physique,origine,type)                                                                             \
                        ,ASD2(espace_physique,extremite,type)                                                                           \
                         )                                                                                                              \
                                        /* Operation inverse de 'COORDONNEES_PHYSIQUES_DANS_01(...)'.                                */
#define   gX_01_DANS_PHYSIQUE(coordonnee,translation)                                                                                   \
                    COORDONNEES_01_DANS_PHYSIQUES(coordonnee,x,translation)
#define   gY_01_DANS_PHYSIQUE(coordonnee,translation)                                                                                   \
                    COORDONNEES_01_DANS_PHYSIQUES(coordonnee,y,translation)
#define   gZ_01_DANS_PHYSIQUE(coordonnee,translation)                                                                                   \
                    COORDONNEES_01_DANS_PHYSIQUES(coordonnee,z,translation)
                                        /* Operations inverses de 'g[XYZ]_PHYSIQUE_DANS_01(...)'...                                  */
#define   X_01_DANS_PHYSIQUE(coordonnee)                                                                                                \
                    gX_01_DANS_PHYSIQUE(coordonnee,TRANSLATION_DE_X_PHYSIQUE)
#define   Y_01_DANS_PHYSIQUE(coordonnee)                                                                                                \
                    gY_01_DANS_PHYSIQUE(coordonnee,TRANSLATION_DE_Y_PHYSIQUE)
#define   Z_01_DANS_PHYSIQUE(coordonnee)                                                                                                \
                    gZ_01_DANS_PHYSIQUE(coordonnee,TRANSLATION_DE_Z_PHYSIQUE)
                                        /* Operations inverses de '[XYZ]_PHYSIQUE_DANS_01(...)'...                                   */

#define   LONGUEURS_01_DANS_PHYSIQUES(longueur,type)                                                                                    \
                    SCAL(longueur                                                                                                       \
                        ,SOUS(COORDONNEE_BARYCENTRIQUE_MAXIMALE,COORDONNEE_BARYCENTRIQUE_MINIMALE)                                      \
                        ,SOUS(ASD2(espace_physique,extremite,type),ASD2(espace_physique,origine,type))                                  \
                         )                                                                                                              \
                                        /* Operation identique a 'COORDONNEES_01_DANS_PHYSIQUES(...)' mais pour des longueurs...     */
#define   LONGUEUR_X_01_DANS_PHYSIQUE(longueur)                                                                                         \
                    LONGUEURS_01_DANS_PHYSIQUES(longueur,x)
#define   LONGUEUR_Y_01_DANS_PHYSIQUE(longueur)                                                                                         \
                    LONGUEURS_01_DANS_PHYSIQUES(longueur,y)
#define   LONGUEUR_Z_01_DANS_PHYSIQUE(longueur)                                                                                         \
                    LONGUEURS_01_DANS_PHYSIQUES(longueur,z)
                                        /* Operations identiques a '[XYZ]_01_DANS_PHYSIQUE(...)' mais pour des longueurs...          */

#define   COORDONNEES_DE_VISUALISATION(coordonnee,type,normalisation)                                                                   \
                    normalisation(coordonnee)                                                                                           \
                                        /* Passage general d'une coordonnee physique a une coordonnee de visualisation (on ne        */ \
                                        /* s'inquietera pas de 'type' qui correspond a une ancienne version, mais qui est            */ \
                                        /* conserve pour des raisons de symetrie...).                                                */
#define   X_DE_VISUALISATION(coordonnee)                                                                                                \
                    COORDONNEES_DE_VISUALISATION(coordonnee,x,F__cDENORMALISE_OX)
#define   Y_DE_VISUALISATION(coordonnee)                                                                                                \
                    COORDONNEES_DE_VISUALISATION(coordonnee,y,F__cDENORMALISE_OY)
#define   Z_DE_VISUALISATION(coordonnee)                                                                                                \
                    COORDONNEES_DE_VISUALISATION(coordonnee,z,F__cDENORMALISE_OZ)
                                        /* Passage des coordonnees physiques dans [0,1] {x,y,z} aux coordonnees de visualisation     */
                                        /* {X,Y,Z}.                                                                                  */

#define   gX_PHYSIQUE_A_VISUALISATION(coordonnee,translation)                                                                           \
                    X_DE_VISUALISATION(gX_PHYSIQUE_DANS_01(coordonnee,translation))
#define   gY_PHYSIQUE_A_VISUALISATION(coordonnee,translation)                                                                           \
                    Y_DE_VISUALISATION(gY_PHYSIQUE_DANS_01(coordonnee,translation))
#define   gZ_PHYSIQUE_A_VISUALISATION(coordonnee,translation)                                                                           \
                    Z_DE_VISUALISATION(gZ_PHYSIQUE_DANS_01(coordonnee,translation))
                                        /* Passage des coordonnees physiques {x,y,z} aux coordonnees de visualisation {X,Y,Z} avec   */
                                        /* translation explicite.                                                                    */
                                        /*                                                                                           */
                                        /* Ces procedures ont ete introduites le 20010201131010 afin de permettre la generation      */
                                        /* de coordonnees {X,Y,Z} dans [Xmin,Xmax]x[Ymin,Ymax]x[Zmin,Zmax] via une 'translation'     */
                                        /* nulle. Ceci a ete rendu necessaire par 'v $xrk/rdn_walk.52$K g._PHYSIQUE_A_VISUALISATION' */
                                        /* dans lequel ces coordonnees {X,Y,Z} sont ensuite utilisees pour indexer des albums        */
                                        /* d'image via 'v $xrk/rdn_walk.52$I FAload_point' ; avant cela, la coordonnee 'Z' etait     */
                                        /* incorrecte car etant dans [-Zmax/2,+Zmax/2].                                              */
#define   X_PHYSIQUE_A_VISUALISATION(coordonnee)                                                                                        \
                    X_DE_VISUALISATION(X_PHYSIQUE_DANS_01(coordonnee))
#define   Y_PHYSIQUE_A_VISUALISATION(coordonnee)                                                                                        \
                    Y_DE_VISUALISATION(Y_PHYSIQUE_DANS_01(coordonnee))
#define   Z_PHYSIQUE_A_VISUALISATION(coordonnee)                                                                                        \
                    Z_DE_VISUALISATION(Z_PHYSIQUE_DANS_01(coordonnee))
                                        /* Passage des coordonnees physiques {x,y,z} aux coordonnees de visualisation {X,Y,Z} avec   */
                                        /* translation implicite {TRANSLATION_DE_?_PHYSIQUE}.                                        */

#define   COORDONNEES_PHYSIQUES(coordonnee,type,denormalisation,translation)                                                            \
                    AXPB(SOUS(ASD2(espace_physique,extremite,type)                                                                      \
                             ,ASD2(espace_physique,origine,type)                                                                        \
                              )                                                                                                         \
                        ,SOUS(denormalisation(coordonnee),translation)                                                                  \
                        ,ASD2(espace_physique,origine,type)                                                                             \
                         )                                                                                                              \
                                        /* Passage general d'une coordonnee de visualisation a une coordonnee physique.              */
#define   gX_PHYSIQUE(coordonnee,translation)                                                                                           \
                    COORDONNEES_PHYSIQUES(coordonnee,x,_____cNORMALISE_OX,translation)
#define   gY_PHYSIQUE(coordonnee,translation)                                                                                           \
                    COORDONNEES_PHYSIQUES(coordonnee,y,_____cNORMALISE_OY,translation)
#define   gZ_PHYSIQUE(coordonnee,translation)                                                                                           \
                    COORDONNEES_PHYSIQUES(coordonnee,z,_____cNORMALISE_OZ,translation)
                                        /* Passage des coordonnees de visualisation {X,Y,Z} aux coordonnees physiques {x,y,z}.       */
#define   X_PHYSIQUE(coordonnee)                                                                                                        \
                    gX_PHYSIQUE(coordonnee,TRANSLATION_DE_X_PHYSIQUE)
#define   Y_PHYSIQUE(coordonnee)                                                                                                        \
                    gY_PHYSIQUE(coordonnee,TRANSLATION_DE_Y_PHYSIQUE)
#define   Z_PHYSIQUE(coordonnee)                                                                                                        \
                    gZ_PHYSIQUE(coordonnee,TRANSLATION_DE_Z_PHYSIQUE)
                                        /* Passage des coordonnees de visualisation {X,Y,Z} aux coordonnees physiques {x,y,z}.       */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        N O R M A L I S A T I O N   D E S   C O O R D O N N E E S   A   L ' I N T E R I E U R   D U   P R O T O N  :               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   LONGUEUR_DE_RENORMALISATION                                                                                                   \
                    DIAMETRE_D_UN_HADRON                                                                                                \
                                        /* Longueur caracteristique destinee a renormaliser les coordonnees dans [0,1].              */
#define   pNORM(coordonnee)                                                                                                             \
                    DIVI(coordonnee,LONGUEUR_DE_RENORMALISATION)                                                                        \
                                        /* Fonction de renormalisation des coordonnees a l'interieur du proton, telle que :          */ \
                                        /* [-d,+d] <--> [-1,+1] (ou 'd' designe 'DIAMETRE_D_UN_HADRON') ; cette fonction est         */ \
                                        /* utilisee dans les fonctions de definition des champs (dans 'DISTANCE_ORDRE_0(...)',       */ \
                                        /* 'DISTANCE_ORDRE_1(...)' et 'DISTANCE_ORDRE_2(...)').                                      */



Copyright © Jean-François Colonna, 2019-2021.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / Ecole Polytechnique, 2019-2021.