/*************************************************************************************************************************************/
/* */
/* R E C H E R C H E D E P O I N T S V O I S I N S : */
/* */
/* */
/* Author of '$xrv/PointsVoisins_2D.01$I' : */
/* */
/* Jean-Francois Colonna (LACTAMME, 20150809091845). */
/* */
/*************************************************************************************************************************************/
#define EDITION_D_UN_POINT_VOISIN \
Bblock \
DEFV(Float,INIT(distance_12 \
,RdisF3D(coordonnee_X1,coordonnee_Y1,coordonnee_Z1 \
,coordonnee_X2,coordonnee_Y2,coordonnee_Z2 \
) \
) \
); \
\
Test(INCLfo(distance_12 \
,distance_minimale_locale_entre_deux_points \
,distance_maximale_locale_entre_deux_points \
) \
) \
Bblock \
Test(IL_FAUT(trier_les_deux_points_dans_un_couple)) \
Bblock \
DEFV(Logical,INIT(permuter_les_deux_points,FAUX)); \
\
DEFV(Float,INIT(distance_O1 \
,RdisF3D(FXorigine,FYorigine,FZorigine \
,coordonnee_X1,coordonnee_Y1,coordonnee_Z1 \
) \
) \
); \
DEFV(Float,INIT(distance_O2 \
,RdisF3D(FXorigine,FYorigine,FZorigine \
,coordonnee_X2,coordonnee_Y2,coordonnee_Z2 \
) \
) \
); \
\
Test(IFLT(distance_O1,distance_O2)) \
/* Ces tests ont ete introduits le 20150801110421... */ \
Bblock \
Eblock \
ATes \
Bblock \
Test(IFGT(distance_O1,distance_O2)) \
Bblock \
EGAL(permuter_les_deux_points,VRAI); \
/* Le point "1" doit etre plus proche de l'origine que le point "2"... */ \
Eblock \
ATes \
Bblock \
Test(IFGT(coordonnee_X1,coordonnee_X2)) \
Bblock \
EGAL(permuter_les_deux_points,VRAI); \
/* Lorsque les points "1" et "2" sont a meme distance de l'origine, on teste leurs 'X's... */ \
Eblock \
ATes \
Bblock \
Test(IFLT(coordonnee_X1,coordonnee_X2)) \
Bblock \
Eblock \
ATes \
Bblock \
Test(IFGT(coordonnee_Y1,coordonnee_Y2)) \
Bblock \
EGAL(permuter_les_deux_points,VRAI); \
/* Lorsque les points "1" et "2" sont a meme distance de l'origine et que leurs 'X's */ \
/* sont egaux, on teste leurs 'Y's... */ \
Eblock \
ATes \
Bblock \
Test(IFLT(coordonnee_Y1,coordonnee_Y2)) \
Bblock \
Eblock \
ATes \
Bblock \
Test(IFGT(coordonnee_Z1,coordonnee_Z2)) \
Bblock \
EGAL(permuter_les_deux_points,VRAI); \
/* Lorsque les points "1" et "2" sont a meme distance de l'origine et que leurs 'X's */ \
/* et leurs 'Y's sont egaux, on teste leurs 'Z's... */ \
Eblock \
ATes \
Bblock \
Test(IFLT(coordonnee_Z1,coordonnee_Z2)) \
Bblock \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
ETes \
Eblock \
ETes \
Eblock \
ETes \
Eblock \
ETes \
Eblock \
ETes \
Eblock \
ETes \
Eblock \
ETes \
\
Test(IL_FAUT(permuter_les_deux_points)) \
Bblock \
fSWAP(coordonnee_X1,coordonnee_X2); \
fSWAP(coordonnee_Y1,coordonnee_Y2); \
fSWAP(coordonnee_Z1,coordonnee_Z2); \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
\
CAL2(Prin0(" X1=")); \
EDITION_DANS_gOPERATION_SUR_LES_FICHIERS(coordonnee_X1); \
CAL2(Prin0(" Y1=")); \
EDITION_DANS_gOPERATION_SUR_LES_FICHIERS(coordonnee_Y1); \
CAL2(Prin0(" Z1=")); \
EDITION_DANS_gOPERATION_SUR_LES_FICHIERS(coordonnee_Z1); \
CAL2(Prin0(" X2=")); \
EDITION_DANS_gOPERATION_SUR_LES_FICHIERS(coordonnee_X2); \
CAL2(Prin0(" Y2=")); \
EDITION_DANS_gOPERATION_SUR_LES_FICHIERS(coordonnee_Y2); \
CAL2(Prin0(" Z2=")); \
EDITION_DANS_gOPERATION_SUR_LES_FICHIERS(coordonnee_Z2); \
CAL2(Prin0("\n")); \
\
INCR(nombre_de_voisins_trouves,I); \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock