/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        T E S T   D E   L A   D E F I N I T I O N   D E S   C O O R D O N N E E S   D ' U N   C H A M P  :                         */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xtKi/COORDONNEES_XYZT_D_UN_CHAMP_3D.01$K' :                                                                    */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 20190621101532).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  INCLUDES_BASE

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P A R A M E T R E S  :                                                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xci/genere_ch.01.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M A C R O S   U T I L E S  :                                                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   x_normalisee                                                                                                                  \
                    x_normalisee_2
#define   y_normalisee                                                                                                                  \
                    y_normalisee_2

#define   PRINT(x,y,z,t,c1,c2,c3,c4)                                                                                                    \
                    Bblock                                                                                                              \
                    DEFV(Float,INIT(x_normalisee_1,ACCES_A_LA_COORDONNEE_X_D_UN_CHAMP_3D(x,y,z,t,ASD1,translation,echelle)));           \
                    DEFV(Float,INIT(y_normalisee_1,ACCES_A_LA_COORDONNEE_Y_D_UN_CHAMP_3D(x,y,z,t,ASD1,translation,echelle)));           \
                                        /* Version -1- la plus generale ('v $xiii/mono_image$FON ACCES_A_LA_COORDONNEE_X_D_UN').     */ \
                                                                                                                                        \
                    DEFV(Float,INIT(x_normalisee_2                                                                                      \
                                   ,HOMO(MUL2(ASD1(echelle,cx)                                                                          \
                                             ,SUPER_cNORMALISE_OX(SOUS(x,SUPER_lDENORMALISE_OX(ASD1(translation,dx))))                  \
                                              )                                                                                         \
                                        ,MUL2(ASD1(echelle,cx),SOUS(COORDONNEE_BARYCENTRIQUE_MINIMALE,ASD1(translation,dx)))            \
                                        ,MUL2(ASD1(echelle,cx),SOUS(COORDONNEE_BARYCENTRIQUE_MAXIMALE,ASD1(translation,dx)))            \
                                        ,ACCES_A_UN_CHAMP_3D_____OX                                                                     \
                                        ,ACCES_A_UN_CHAMP_3D_____EX                                                                     \
                                         )                                                                                              \
                                    )                                                                                                   \
                         );                                                                                                             \
                    DEFV(Float,INIT(y_normalisee_2                                                                                      \
                                   ,HOMO(MUL2(ASD1(echelle,cy)                                                                          \
                                             ,SUPER_cNORMALISE_OY(SOUS(y,SUPER_lDENORMALISE_OY(ASD1(translation,dy))))                  \
                                              )                                                                                         \
                                        ,MUL2(ASD1(echelle,cy),SOUS(COORDONNEE_BARYCENTRIQUE_MINIMALE,ASD1(translation,dy)))            \
                                        ,MUL2(ASD1(echelle,cy),SOUS(COORDONNEE_BARYCENTRIQUE_MAXIMALE,ASD1(translation,dy)))            \
                                        ,ACCES_A_UN_CHAMP_3D_____OY                                                                     \
                                        ,ACCES_A_UN_CHAMP_3D_____EY                                                                     \
                                         )                                                                                              \
                                    )                                                                                                   \
                         );                                                                                                             \
                                        /* Version -2- sans options de compatibilite et donnant les bons resultats. Ceci a ete       */ \
                                        /* obtenu en simpliant les definitions de 'ACCES_A_LA_COORDONNEE_?_D_UN_CHAMP_3D(...)'...    */ \
                                                                                                                                        \
                    DEFV(Float,INIT(x_normalisee_3                                                                                      \
                                   ,MUL2(ASD1(echelle,cx)                                                                               \
                                        ,SUPER_cNORMALISE_OX(SOUS(x,SUPER_lDENORMALISE_OX(ASD1(translation,dx))))                       \
                                         )                                                                                              \
                                    )                                                                                                   \
                         );                                                                                                             \
                    DEFV(Float,INIT(y_normalisee_3                                                                                      \
                                   ,MUL2(ASD1(echelle,cy)                                                                               \
                                        ,SUPER_cNORMALISE_OY(SOUS(y,SUPER_lDENORMALISE_OY(ASD1(translation,dy))))                       \
                                         )                                                                                              \
                                    )                                                                                                   \
                         );                                                                                                             \
                                        /* Version -3- la plus simple mais ne donnant pas les bons resultats car n'utilisant pas     */ \
                                        /* {ACCES_A_UN_CHAMP_3D_____O?,ACCES_A_UN_CHAMP_3D_____E?}...                                */ \
                                                                                                                                        \
                    EGAL(AXES_COORDONNEES_FERMES_OUVERTS_____compatibilite_20090929,c1);                                                \
                                                                                                                                        \
                    EGAL(ACCES_A_LA_COORDONNEE_X_D_UN_CHAMP_3D_____compatibilite_20061128,c2);                                          \
                    EGAL(ACCES_A_LA_COORDONNEE_Y_D_UN_CHAMP_3D_____compatibilite_20061128,c2);                                          \
                                                                                                                                        \
                    EGAL(ACCES_A_LA_COORDONNEE_X_D_UN_CHAMP_3D_____compatibilite_20100210,c3);                                          \
                    EGAL(ACCES_A_LA_COORDONNEE_Y_D_UN_CHAMP_3D_____compatibilite_20100210,c3);                                          \
                                                                                                                                        \
                    EGAL(ACCES_A_LA_COORDONNEE_X_D_UN_CHAMP_3D_____coordonnees_dans_un_carre,c4);                                       \
                    EGAL(ACCES_A_LA_COORDONNEE_Y_D_UN_CHAMP_3D_____coordonnees_dans_un_carre,c4);                                       \
                                                                                                                                        \
                    CAL2(Prin1("axes_fermes=%s",ETAT_LOGIQUE(c1)));                                                                     \
                    CAL2(Prin0(" "));                                                                                                   \
                    CAL2(Prin1("20061128=%s",ETAT_LOGIQUE(c2)));                                                                        \
                    CAL2(Prin0(" "));                                                                                                   \
                    CAL2(Prin1("20100210=%s",ETAT_LOGIQUE(c3)));                                                                        \
                    CAL2(Prin0(" "));                                                                                                   \
                    CAL2(Prin1("c_dans_un_carre=%s",ETAT_LOGIQUE(c4)));                                                                 \
                                                                                                                                        \
                    CAL2(Prin0(" : "));                                                                                                 \
                                                                                                                                        \
                    CAL2(Prin4("{%04d,%04d,%04d,%04d}",x,y,z,t));                                                                       \
                                        /* Les "%04d"s sont destines a garantir une bonne tabulation...                              */ \
                    CAL2(Prin0(" "));                                                                                                   \
                    CAL2(Prin2("echelle={%+.^^^,%+.^^^}",ASD1(echelle,cx),ASD1(echelle,cy)));                                           \
                    CAL2(Prin0(" "));                                                                                                   \
                    CAL2(Prin2("translation={%+.^^^,%+.^^^}",ASD1(translation,dx),ASD1(translation,dy)));                               \
                    CAL2(Prin0(" --> "));                                                                                               \
                    CAL2(Prin2("{%+.^^^,%+.^^^}",x_normalisee,y_normalisee));                                                           \
                                                                                                                                        \
                    CAL2(Prin0("\n"));                                                                                                  \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        T E S T   D E   L A   D E F I N I T I O N   D E S   C O O R D O N N E E S   D ' U N   C H A M P  :                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(Int,INIT(X,Xmin));
     DEFV(Int,INIT(Y,Ymin));

#include  xci/genere_ch.02.I"
     /*..............................................................................................................................*/
#include  xci/genere_ch.03.I"
#include  xci/genere_ch.11.I"

     EGAL(PREMIER_CARACTERE_ITb0(mode_fg_de_FORMAT_FLOT_EDITION),K_f);
     EGAL(nombre_de_chiffres_des_editions_flottantes,SIX);
                                        /* Afin de garantir une bonne tabulation...                                                  */

     GET_ARGUMENTSi(nombre_d_arguments
                   ,BLOC(GET_ARGUMENT_I("X=",X);
                         GET_ARGUMENT_I("Y=",Y);

                         PROCESS_ARGUMENTS_DE_PARAMETRAGE_3D_DE_____ACCES_A_UN_CHAMP_3D;
                         )
                    );

     CAL2(Prin1("minX=%+^^^^\n",MUL2(ASD1(echelle,cx),SOUS(COORDONNEE_BARYCENTRIQUE_MINIMALE,ASD1(translation,dx)))));
     CAL2(Prin1("maxX=%+^^^^\n",MUL2(ASD1(echelle,cx),SOUS(COORDONNEE_BARYCENTRIQUE_MAXIMALE,ASD1(translation,dx)))));
     CAL2(Prin1("OX..=%+^^^^\n",ACCES_A_UN_CHAMP_3D_____OX));
     CAL2(Prin1("EX..=%+^^^^\n",ACCES_A_UN_CHAMP_3D_____EX));
     CAL2(Prin1("minY=%+^^^^\n",MUL2(ASD1(echelle,cy),SOUS(COORDONNEE_BARYCENTRIQUE_MINIMALE,ASD1(translation,dy)))));
     CAL2(Prin1("maxY=%+^^^^\n",MUL2(ASD1(echelle,cy),SOUS(COORDONNEE_BARYCENTRIQUE_MAXIMALE,ASD1(translation,dy)))));
     CAL2(Prin1("OY..=%+^^^^\n",ACCES_A_UN_CHAMP_3D_____OY));
     CAL2(Prin1("EY..=%+^^^^\n",ACCES_A_UN_CHAMP_3D_____EY));
     CAL2(Prin0("\n"));

     PRINT(Xmin,Ymin
          ,Z,T
          ,AXES_COORDONNEES_FERMES_OUVERTS_____compatibilite_20090929
          ,CHOI(ACCES_A_LA_COORDONNEE_X_D_UN_CHAMP_3D_____compatibilite_20061128
               ,ACCES_A_LA_COORDONNEE_Y_D_UN_CHAMP_3D_____compatibilite_20061128
                )
          ,CHOI(ACCES_A_LA_COORDONNEE_X_D_UN_CHAMP_3D_____compatibilite_20100210
               ,ACCES_A_LA_COORDONNEE_Y_D_UN_CHAMP_3D_____compatibilite_20100210
                )
          ,CHOI(ACCES_A_LA_COORDONNEE_X_D_UN_CHAMP_3D_____coordonnees_dans_un_carre
               ,ACCES_A_LA_COORDONNEE_Y_D_UN_CHAMP_3D_____coordonnees_dans_un_carre
                )
           );
     PRINT(Xmax,Ymax
          ,Z,T
          ,AXES_COORDONNEES_FERMES_OUVERTS_____compatibilite_20090929
          ,CHOI(ACCES_A_LA_COORDONNEE_X_D_UN_CHAMP_3D_____compatibilite_20061128
               ,ACCES_A_LA_COORDONNEE_Y_D_UN_CHAMP_3D_____compatibilite_20061128
                )
          ,CHOI(ACCES_A_LA_COORDONNEE_X_D_UN_CHAMP_3D_____compatibilite_20100210
               ,ACCES_A_LA_COORDONNEE_Y_D_UN_CHAMP_3D_____compatibilite_20100210
                )
          ,CHOI(ACCES_A_LA_COORDONNEE_X_D_UN_CHAMP_3D_____coordonnees_dans_un_carre
               ,ACCES_A_LA_COORDONNEE_Y_D_UN_CHAMP_3D_____coordonnees_dans_un_carre
                )
           );

     PRINT(X,Y
          ,Z,T
          ,AXES_COORDONNEES_FERMES_OUVERTS_____compatibilite_20090929
          ,CHOI(ACCES_A_LA_COORDONNEE_X_D_UN_CHAMP_3D_____compatibilite_20061128
               ,ACCES_A_LA_COORDONNEE_Y_D_UN_CHAMP_3D_____compatibilite_20061128
                )
          ,CHOI(ACCES_A_LA_COORDONNEE_X_D_UN_CHAMP_3D_____compatibilite_20100210
               ,ACCES_A_LA_COORDONNEE_Y_D_UN_CHAMP_3D_____compatibilite_20100210
                )
          ,CHOI(ACCES_A_LA_COORDONNEE_X_D_UN_CHAMP_3D_____coordonnees_dans_un_carre
               ,ACCES_A_LA_COORDONNEE_Y_D_UN_CHAMP_3D_____coordonnees_dans_un_carre
                )
           );

     CAL2(Prin0("\n"));

     PRINT(Xmin,Ymin,Z,T,VRAI,VRAI,VRAI,VRAI);
     PRINT(Xmax,Ymax,Z,T,VRAI,VRAI,VRAI,VRAI);
     CAL2(Prin0("\n"));
     PRINT(Xmin,Ymin,Z,T,VRAI,VRAI,VRAI,FAUX);
     PRINT(Xmax,Ymax,Z,T,VRAI,VRAI,VRAI,FAUX);
     CAL2(Prin0("\n"));
     PRINT(Xmin,Ymin,Z,T,VRAI,VRAI,FAUX,VRAI);
     PRINT(Xmax,Ymax,Z,T,VRAI,VRAI,FAUX,VRAI);
     CAL2(Prin0("\n"));
     PRINT(Xmin,Ymin,Z,T,VRAI,VRAI,FAUX,FAUX);
     PRINT(Xmax,Ymax,Z,T,VRAI,VRAI,FAUX,FAUX);
     CAL2(Prin0("\n"));
     PRINT(Xmin,Ymin,Z,T,VRAI,FAUX,VRAI,VRAI);
     PRINT(Xmax,Ymax,Z,T,VRAI,FAUX,VRAI,VRAI);
     CAL2(Prin0("\n"));
     PRINT(Xmin,Ymin,Z,T,VRAI,FAUX,VRAI,FAUX);
     PRINT(Xmax,Ymax,Z,T,VRAI,FAUX,VRAI,FAUX);
     CAL2(Prin0("\n"));
     PRINT(Xmin,Ymin,Z,T,VRAI,FAUX,FAUX,VRAI);
     PRINT(Xmax,Ymax,Z,T,VRAI,FAUX,FAUX,VRAI);
     CAL2(Prin0("\n"));
     PRINT(Xmin,Ymin,Z,T,VRAI,FAUX,FAUX,FAUX);
     PRINT(Xmax,Ymax,Z,T,VRAI,FAUX,FAUX,FAUX);
                                        /* Je note le 20190621123557 que c'est cette configuration qui donne la bonne reponse (soit  */
                                        /* [-0.5,+0.5]) avec "fTX=0 fTY=0". La bonne valeur des indicateurs est donc :               */
                                        /*                                                                                           */
                                        /*        AXES_COORDONNEES_FERMES_OUVERTS_____compatibilite_20090929          = VRAI         */
                                        /*        ACCES_A_LA_COORDONNEE_X_D_UN_CHAMP_3D_____compatibilite_20061128    = FAUX         */
                                        /*        ACCES_A_LA_COORDONNEE_X_D_UN_CHAMP_3D_____compatibilite_20100210    = FAUX         */
                                        /*        ACCES_A_LA_COORDONNEE_X_D_UN_CHAMP_3D_____coordonnees_dans_un_carre = FAUX         */
                                        /*                                                                                           */
                                        /* La question est de comprendre maintenant pourquoi il faut des translations nulles         */
                                        /* ("fTX=0 fTY=0") et non pas egales a 0.5 ?                                                 */
                                        /*                                                                                           */
                                        /* En fait, tout vient de {ACCES_A_UN_CHAMP_3D_____O?,ACCES_A_UN_CHAMP_3D_____E?} qui        */
                                        /* font passer de [0,1] a [-0.5,+0.5] ('v genere_ch.03$I EGAL.ACCES_A_UN_CHAMP_3D_____').    */
     CAL2(Prin0("\n"));
     PRINT(Xmin,Ymin,Z,T,FAUX,VRAI,VRAI,VRAI);
     PRINT(Xmax,Ymax,Z,T,FAUX,VRAI,VRAI,VRAI);
     CAL2(Prin0("\n"));
     PRINT(Xmin,Ymin,Z,T,FAUX,VRAI,VRAI,FAUX);
     PRINT(Xmax,Ymax,Z,T,FAUX,VRAI,VRAI,FAUX);
     CAL2(Prin0("\n"));
     PRINT(Xmin,Ymin,Z,T,FAUX,VRAI,FAUX,VRAI);
     PRINT(Xmax,Ymax,Z,T,FAUX,VRAI,FAUX,VRAI);
     CAL2(Prin0("\n"));
     PRINT(Xmin,Ymin,Z,T,FAUX,VRAI,FAUX,FAUX);
     PRINT(Xmax,Ymax,Z,T,FAUX,VRAI,FAUX,FAUX);
     CAL2(Prin0("\n"));
     PRINT(Xmin,Ymin,Z,T,FAUX,FAUX,VRAI,VRAI);
     PRINT(Xmax,Ymax,Z,T,FAUX,FAUX,VRAI,VRAI);
     CAL2(Prin0("\n"));
     PRINT(Xmin,Ymin,Z,T,FAUX,FAUX,VRAI,FAUX);
     PRINT(Xmax,Ymax,Z,T,FAUX,FAUX,VRAI,FAUX);
     CAL2(Prin0("\n"));
     PRINT(Xmin,Ymin,Z,T,FAUX,FAUX,FAUX,VRAI);
     PRINT(Xmax,Ymax,Z,T,FAUX,FAUX,FAUX,VRAI);
     CAL2(Prin0("\n"));
     PRINT(Xmin,Ymin,Z,T,FAUX,FAUX,FAUX,FAUX);
     PRINT(Xmax,Ymax,Z,T,FAUX,FAUX,FAUX,FAUX);

     RETU_Commande;
     Eblock
ECommande



Copyright © Jean-François COLONNA, 2019-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2019-2024.