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



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