/*************************************************************************************************************************************/
/* */
/* 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(...)'). */