/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        G E N E R A T I O N   D ' U N E   G R I L L E   O R T H O G O N A L E  :                                                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                    Cette commande genere une image                                                                                */
/*                  dont le nom est l'argument d'appel,                                                                              */
/*                  et qui contient une grille ortho-                                                                                */
/*                  gonale dont les differents para-                                                                                 */
/*                  metres sont programmables.                                                                                       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xci/grille.01$K' :                                                                                             */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 1987??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        I N T E R F A C E   ' listG '  :                                                                                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        :Debut_listG:                                                                                                              */
/*        :Fin_listG:                                                                                                                */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D I R E C T I V E S   S P E C I F I Q U E S   D E   C O M P I L A T I O N  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        F I C H I E R S   D ' I N C L U D E S  :                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  INCLUDES_BASE

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P A R A M E T R E S  :                                                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   TRACER_LES_BARRES_HORIZONTALES                                                                                                \
                    VRAI
#define   TRACER_LES_BARRES_VERTICALES__                                                                                                \
                    VRAI
                                        /* Choix des barres a tracer (introduit le 20190713114706...).                               */

#define   ORIGINE_NORMALISEE                                                                                                            \
                    VRAI                                                                                                                \
                                        /* L'origine est-elle normalisee ('VRAI') ou pas ('FAUX') ? Ceci a ete introduit le          */ \
                                        /* 20170715102646...                                                                         */

#define   X_ORIGINE                                                                                                                     \
                    FXorigine
#define   Y_ORIGINE                                                                                                                     \
                    FYorigine
                                        /* Origine de la grille.                                                                     */
#define   X_INCREMENT_GAUCHE                                                                                                            \
                    ZERO
#define   X_INCREMENT_DROITE                                                                                                            \
                    ZERO
#define   Y_INCREMENT_BAS___                                                                                                            \
                    ZERO
#define   Y_INCREMENT_HAUT__                                                                                                            \
                    ZERO
                                        /* Afin de pouvoir epaissir la grille (introduit le 20180618172919...)                       */

#define   MAILLE_ABSOLUE                                                                                                                \
                    VRAI                                                                                                                \
                                        /* Le maillage peut etre definie en nombre d'inter-points ('VRAI') ou bien relativement a    */ \
                                        /* a ['dimX','dimY'] ('FAUX').                                                               */

#define   X_MAILLE                                                                                                                      \
                    SEIZE
#define   Y_MAILLE                                                                                                                      \
                    SEIZE
                                        /* Maille de la grille.                                                                      */

#define   NUMERO_DE_COULEUR                                                                                                             \
                    BLANC                                                                                                               \
                                        /* Couleur du trace.                                                                         */

#define   COMPATIBILITE_20190211                                                                                                        \
                    FAUX                                                                                                                \
                                        /* Permet de proceder a des calculs compatibles a ceux qui furent effectues anterieurement   */ \
                                        /* au 20190211140807.                                                                        */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M A C R O S   U T I L E S  :                                                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   POSITIONNEMENT_DU_CURSEUR_A_LORIGINE                                                                                          \
                    Bblock                                                                                                              \
                    SET_CURSOR(ADD2(veritable_X_origine,_____lNORMALISE_OX(X_increment))                                                \
                              ,ADD2(veritable_Y_origine,_____lNORMALISE_OY(Y_increment))                                                \
                              ,FZorigine                                                                                                \
                               );                                                                                                       \
                    Eblock                                                                                                              \
                                        /* Positionnement du curseur a l'origine (introduit sous cette forme le 20180619132500...).  */


/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        G E N E R A T I O N   D ' U N E   G R I L L E   O R T H O G O N A L E  :                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(CHAR,INIC(POINTERc(nom_imageA),NOM_PIPE));
     DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE));
     DEFV(Int,INIT(index,UNDEF));
                                        /* Index de generation.                                                                      */

     DEFV(Logical,INIT(tracer_les_barres_horizontales,TRACER_LES_BARRES_HORIZONTALES));
     DEFV(Logical,INIT(tracer_les_barres_verticales__,TRACER_LES_BARRES_VERTICALES__));
                                        /* Choix des barres a tracer (introduit le 20190713114706...).                               */

     DEFV(genere_p,INIT(numero_de_couleur,NUMERO_DE_COULEUR));
                                        /* Numero de la couleur courante...                                                          */

     DEFV(Logical,INIT(origine_normalisee,ORIGINE_NORMALISEE));
                                        /* L'origine est-elle normalisee ('VRAI') ou pas ('FAUX') ? Ceci a ete introduit le          */
                                        /* 20170715102646...                                                                         */
     DEFV(Float,INIT(X_origine,X_ORIGINE));
     DEFV(Float,INIT(Y_origine,Y_ORIGINE));
                                        /* Origine de la grille.                                                                     */
     DEFV(Float,INIT(veritable_X_origine,FLOT__UNDEF));
     DEFV(Float,INIT(veritable_Y_origine,FLOT__UNDEF));
                                        /* Origine de la grille reellement utilisee.                                                 */
     DEFV(Int,INIT(X_increment_gauche,X_INCREMENT_GAUCHE));
     DEFV(Int,INIT(X_increment_droite,X_INCREMENT_DROITE));
     DEFV(Int,INIT(Y_increment_bas___,Y_INCREMENT_BAS___));
     DEFV(Int,INIT(Y_increment_haut__,Y_INCREMENT_HAUT__));
                                        /* Afin de pouvoir epaissir la grille (introduit le 20180618172919...)                       */

     DEFV(Logical,INIT(maille_absolue,MAILLE_ABSOLUE));
                                        /* Le maillage peut etre definie en nombre d'inter-points ('VRAI') ou bien relativement a    */
                                        /* a ['dimX','dimY'] ('FAUX').                                                               */
     DEFV(Float,INIT(X_maille,FLOT(X_MAILLE)));
     DEFV(Float,INIT(Y_maille,FLOT(Y_MAILLE)));
                                        /* Maille de la grille donnee en argument.                                                   */
     DEFV(Float,INIT(veritable_X_maille,UNDEF));
     DEFV(Float,INIT(veritable_Y_maille,UNDEF));
                                        /* Maille reellement utilisee. Le 20190211142730, il y a eu passage de 'Int' a 'Float' afin  */
                                        /* de garantir la "neutralite" d'une denormalisation lors de leurs definitions ci-dessous    */
                                        /* suivie d'une normalisation ('v $xiii/vecteurs$DEF .define...S..K..')...                   */

     DEFV(Logical,INIT(compatibilite_20190211,COMPATIBILITE_20190211));
                                        /* Permet de proceder a des calculs compatibles a ceux qui furent effectues anterieurement   */
                                        /* au 20190211140807.                                                                        */
     /*..............................................................................................................................*/
     GET_ARGUMENTSg(nombre_d_arguments
                   ,BLOC(GET_ARGUMENT_L("SX_SY_SZ_____compatibilite_20070416=""compatibilite_20070416="
                                       ,SX_SY_SZ_____compatibilite_20070416
                                        );
                                        /* Parametre introduit le 20070416160601...                                                  */
                         GET_ARGUMENT_L("compatibilite_20190211=",compatibilite_20190211);
                                        /* Parametre introduit le 20190211140807...                                                  */

                         GET_ARGUMENT_C("imageA=""A=",nom_imageA);
                         GET_ARGUMENT_C("imageR=""R=",nom_imageR);

                         GET_ARGUMENT_L("barres_horizontales=""bh=",tracer_les_barres_horizontales);
                         GET_ARGUMENT_L("barres_verticales=""bv=",tracer_les_barres_verticales__);
                                        /* Parametres introduits le 20190713114706...                                                */

                         GET_ARGUMENT_L("Onormalisee=",origine_normalisee);
                         GET_ARGUMENT_N("Odenormalisee=",origine_normalisee);
                                        /* Parametres introduits le 20170715102646...                                                */
                         GET_ARGUMENT_F("ox=",X_origine);
                         GET_ARGUMENT_F("oy=",Y_origine);

                         GET_ARGUMENT_L("X_dans_image=""Xdi=""xdi=",vecteurs_____cursor_3D__ramener_la_coordonnee_X_dans_l_image);
                         GET_ARGUMENT_L("Y_dans_image=""Ydi=""ydi=",vecteurs_____cursor_3D__ramener_la_coordonnee_Y_dans_l_image);
                                        /* Parametres introduits le 20180620140957...                                                */

                         GET_ARGUMENT_I("X_increment_gauche=""Xig=""xig=",X_increment_gauche);
                         GET_ARGUMENT_I("X_increment_droite=""Xid=""xid=",X_increment_droite);
                         GET_ARGUMENT_I("Y_increment_bas=""Yib=""yib=",Y_increment_bas___);
                         GET_ARGUMENT_I("Y_increment_haut=""Yih=""yih=",Y_increment_haut__);
                                        /* Parametres introduits le 20180618172919...                                                */

                         GET_ARGUMENT_L("absolue=""absolu=""denormalisees=""denormalisee=""denorm=",maille_absolue);
                         GET_ARGUMENT_N("normalisees=""normalisee=""norm=",maille_absolue);
                                        /* Les parametres {"denormalisees=","denorm=","normalisees=","norm="} ont ete introduits     */
                                        /* le 20091001100622...                                                                      */
                         GET_ARGUMENT_F("mx=",X_maille);
                         GET_ARGUMENT_F("my=",Y_maille);

                         GET_ARGUMENT_P("c=""niveau=""couleur=",numero_de_couleur);
                                        /* Les parametres {"niveau=","couleur="} ont ete introduits le 20090220182451...             */

                         GET_ARGUMENT_L("editer_vecteur_2D=""ev2D=",IFsegment_____editer_le_vecteur_bidimensionnel);
                         GET_ARGUMENT_L("editer_vecteur_3D=""ev3D=",IFseg3D_____editer_le_vecteur_tridimensionnel);
                                        /* Parametres introduits le 20080908182151...                                                */
                         )
                    );

     EGAL(veritable_X_origine
         ,COND(EST_VRAI(origine_normalisee)
              ,X_origine
              ,_____cNORMALISE_OX(X_origine)
               )
          );
     EGAL(veritable_Y_origine
         ,COND(EST_VRAI(origine_normalisee)
              ,Y_origine
              ,_____cNORMALISE_OY(Y_origine)
               )
          );
                                        /* Definition de l'origine de la grille reellement utilisee.                                 */

     EGAL(veritable_X_maille
         ,COND(EST_VRAI(maille_absolue)
              ,X_maille
              ,COND(IL_FAUT(compatibilite_20190211)
                   ,_lDENORMALISE_OX(X_maille)
                   ,F__lDENORMALISE_OX(X_maille)
                    )
               )
          );
     EGAL(veritable_Y_maille
         ,COND(EST_VRAI(maille_absolue)
              ,Y_maille
              ,COND(IL_FAUT(compatibilite_20190211)
                   ,_lDENORMALISE_OY(Y_maille)
                   ,F__lDENORMALISE_OY(Y_maille)
                    )
               )
          );
                                        /* Definition du maillage reellement utilise...                                              */

     CALi(FgERASE());

     Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(ImageG,nom_imageA))))
          Bblock
          DEFV(Int,INIT(X_increment,UNDEF));

          SK(INTER_POINT);
          SZ(INTER_POINT);

          SET_COULEURS(NOIR,numero_de_couleur);

          DoIn(X_increment,X_increment_gauche,X_increment_droite,INTER_POINT)
               Bblock
               DEFV(Int,INIT(Y_increment,UNDEF));

               DoIn(Y_increment,Y_increment_bas___,Y_increment_haut__,INTER_POINT)
                    Bblock
                    Test(IL_FAUT(tracer_les_barres_verticales__))
                                        /* Test introduit le 20190713114706...                                                       */
                         Bblock
                         SX(veritable_X_maille);
                         SY(dimY);

                         POSITIONNEMENT_DU_CURSEUR_A_LORIGINE;
                                        /* Introduit sous cette forme le 20180618172919 afin de pouvoir epaissir la grille et mise   */
                                        /* sous cette forme le 20180619132500...                                                     */

                         DoIn(index
                             ,ADD2(_cDENORMALISE_OX(veritable_X_origine),X_increment)
                             ,COND(IL_NE_FAUT_PAS(vecteurs_____cursor_3D__ramener_la_coordonnee_X_dans_l_image)
                                  ,Xmax
                                  ,ADD2(Xmax,INTE(MUL2(UN_MOINS_mgEPSILON,veritable_X_maille)))
                                   )
                             ,veritable_X_maille
                              )
                              Bblock
                              CALS(FgMIC());
                              gA;g2;gB;
                                        /* On trace le reseau de barres verticales...                                                */
                              CALS(FgMOC());
                              g1;
                              Eblock
                         EDoI
                         Eblock
                    ATes
                         Bblock
                         Eblock
                    ETes

                    Test(IL_FAUT(tracer_les_barres_horizontales))
                                        /* Test introduit le 20190713114706...                                                       */
                         Bblock
                         SX(dimX);
                         SY(veritable_Y_maille);

                         POSITIONNEMENT_DU_CURSEUR_A_LORIGINE;
                                        /* Introduit sous cette forme le 20180618172919 afin de pouvoir epaissir la grille et mise   */
                                        /* sous cette forme le 20180619132500...                                                     */

                         DoIn(index
                             ,ADD2(_cDENORMALISE_OY(veritable_Y_origine),Y_increment)
                             ,COND(IL_NE_FAUT_PAS(vecteurs_____cursor_3D__ramener_la_coordonnee_Y_dans_l_image)
                                  ,Ymax
                                  ,ADD2(Ymax,INTE(MUL2(UN_MOINS_mgEPSILON,veritable_Y_maille)))
                                   )
                             ,veritable_Y_maille
                              )
                              Bblock
                              CALS(FgMIC());
                              gA;g1;gB;
                                        /* On trace le reseau de barres horizontales...                                              */
                              CALS(FgMOC());
                              g2;
                              Eblock
                         EDoI
                         Eblock
                    ATes
                         Bblock
                         Eblock
                    ETes
                    Eblock
               EDoI
               Eblock
          EDoI
          Eblock
     ATes
          Bblock
          Test__CODE_ERREUR__ERREUR07;
          Eblock
     ETes

     CALi(Iupdate_image(nom_imageR,ImageG));

     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.