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