/*************************************************************************************************************************************/ /* */ /* N O R M A L I S A T I O N / D E N O R M A L I S A T I O N D E C O O R D O N N E E S : */ /* */ /* */ /* Author of '$xci/coordonnees$K' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 1993??????????). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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 : */ /* */ /*************************************************************************************************************************************/ #include xci/coordonne.01.I" #define DENORMALISER \ FAUX \ /* Faut-il denormaliser ('VRAI') ou normaliser ('FAUX') ? */ #define ABSCISSE \ VRAI \ /* Doit-on traiter une abscisse ('VRAI') ou pas ('FAUX') ? */ #define ABSCISSE_DENORMALISEE \ ADD2(Xmin,PasX) #define ABSCISSE_NORMALISEE \ _____cNORMALISE_OX(I_cHOMOTHETIE_Std_OX(ABSCISSE_DENORMALISEE)) /* Abscisse implicite... */ /* */ /* Le 20120210183420, le 'I_cHOMOTHETIE_Std_OX(...)' fut introduit... */ #define ORDONNEE \ FAUX \ /* Doit-on traiter une ordonnee ('VRAI') ou pas ('FAUX') ? */ #define ORDONNEE_DENORMALISEE \ ADD2(Ymin,PasY) #define ORDONNEE_NORMALISEE \ _____cNORMALISE_OY(I_cHOMOTHETIE_Std_OY(ORDONNEE_DENORMALISEE)) /* Ordonnee implicite... */ /* */ /* Le 20120210183420, le 'I_cHOMOTHETIE_Std_OY(...)' fut introduit... */ #define PROFONDEUR \ FAUX \ /* Doit-on traiter une profondeur ('VRAI') ou pas ('FAUX') ? */ #define PROFONDEUR_DENORMALISEE \ ADD2(Zmin,PasZ) #define PROFONDEUR_NORMALISEE \ _____cNORMALISE_OZ(PROFONDEUR_DENORMALISEE) /* Profondeur implicite... */ #define NIVEAU \ FAUX \ /* Doit-on traiter un niveau ('VRAI') ou pas ('FAUX') ? Ceci a ete introduit le */ \ /* 20070818184439... */ #define NIVEAU_DENORMALISE \ BLANC #define NIVEAU_NORMALISE \ ______NORMALISE_NIVEAU(NIVEAU_DENORMALISE) /* Niveau implicite... */ #define NOMBRE_DE_DECIMALES \ SUCC(SUCC(SEIZE)) \ /* Definition du nombre de chiffres a editer (nom compris le point decimal...). ATTENTION, */ \ /* ce n'est pas le nombre de decimales, mais le nombre total de chiffres, y compris donc la */ \ /* partie entiere lors de l'utilisation du format "%g". Ceci fut introduit le 20070317115342 */ \ /* afin d'assurer la compatibilite anterieure... */ #nodefine AJOUTER_UN_K_LF_EN_FIN_DE_FORMAT_D_EDITION \ VRAI \ /* Cet indicateur indique si un 'K_LF' doit etre insere a la fin de 'format_d_edition' */ \ /* ("VRAI") ou pas ("FAUX") et a ete introduit le 20070317115342. Le 20141202163629, a */ \ /* cause de 'v $xci/valeurs.01$I AJOUTER_UN_K_LF_EN_FIN_DE_FORMAT_D_EDITION', 'define' */ \ /* devenu inutile a ete remplace par 'nodefine'. */ #include xcg/ARIT.01.I" #include xci/valeurs.01.I" /* Introduits le 20070317114431... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* M A C R O S U T I L E S : */ /* */ /*************************************************************************************************************************************/ #include xci/valeurs.02.I" /* Introduit le 20070317114431... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* N O R M A L I S A T I O N / D E N O R M A L I S A T I O N D E C O O R D O N N E E S : */ /* */ /*************************************************************************************************************************************/ BCommande(nombre_d_arguments,arguments) /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock #include xci/coordonne.02.I" DEFV(Logical,INIT(denormaliser,DENORMALISER)); /* Faut-il denormaliser ('VRAI') ou normaliser ('FAUX') ? */ DEFV(Logical,INIT(abscisse,ABSCISSE)); /* Doit-on traiter une abscisse ('VRAI') ou pas ('FAUX') ? */ DEFV(Int,INIT(abscisse_denormalisee,UNDEF)); DEFV(Float,INIT(abscisse_normalisee,FLOT__UNDEF)); /* Abscisse implicite... */ DEFV(Logical,INIT(ordonnee,ORDONNEE)); /* Doit-on traiter une ordonnee ('VRAI') ou pas ('FAUX') ? */ DEFV(Int,INIT(ordonnee_denormalisee,UNDEF)); DEFV(Float,INIT(ordonnee_normalisee,FLOT__UNDEF)); /* Ordonnee implicite... */ DEFV(Logical,INIT(profondeur,PROFONDEUR)); /* Doit-on traiter une profondeur ('VRAI') ou pas ('FAUX') ? */ DEFV(Int,INIT(profondeur_denormalisee,UNDEF)); DEFV(Float,INIT(profondeur_normalisee,FLOT__UNDEF)); /* Profondeur implicite... */ DEFV(Logical,INIT(niveau,NIVEAU)); /* Doit-on traiter un niveau ('VRAI') ou pas ('FAUX') ? Ceci a ete introduit le */ /* 20070818184439... */ DEFV(genere_p,INIT(niveau_denormalise,NIVEAU_DENORMALISE)); DEFV(Float,INIT(niveau_normalise,NIVEAU_NORMALISE)); /* Niveau implicite... */ #include xci/valeurs.03.I" /* Introduit le 20070317114431... */ /*..............................................................................................................................*/ #include xci/coordonne.04.I" /* Ceci a ete introduit le 20051218181932, ainsi que les 'PROCESS_ARGUMENT_?(...)' qui */ /* suivent... */ GET_ARGUMENTSi(nombre_d_arguments ,BLOC(GET_ARGUMENT_L("centrer=",centrer_les_coordonnees_normalisees); GET_ARGUMENT_L("denormaliser=""denormalisees=""denorm=",denormaliser); GET_ARGUMENT_N("normaliser=""normalisees=""norm=",denormaliser); GET_ARGUMENT_L("ex=""eX=""abscisse=",abscisse); /* Les parametres "ex=" et "eX=" ont ete introduits le 20070819134356... */ GIT_ARGUMENT_I("x=""X=",abscisse_denormalisee,ABSCISSE_DENORMALISEE); GIT_ARGUMENT_F("xf=""Xf=",abscisse_normalisee,ABSCISSE_NORMALISEE); GET_ARGUMENT_L("ordonnee=""ey=""eY=",ordonnee); /* Les parametres "ey=" et "eY=" ont ete introduits le 20070819134356... */ GIT_ARGUMENT_I("y=""Y=",ordonnee_denormalisee,ORDONNEE_DENORMALISEE); GIT_ARGUMENT_F("yf=""Yf=",ordonnee_normalisee,ORDONNEE_NORMALISEE); GET_ARGUMENT_L("profondeur=""ez=""eZ=",profondeur); /* Les parametres "ez=" et "eZ=" ont ete introduits le 20070819134356... */ GIT_ARGUMENT_I("z=""Z=",profondeur_denormalisee,PROFONDEUR_DENORMALISEE); GIT_ARGUMENT_F("zf=""Zf=",profondeur_normalisee,PROFONDEUR_NORMALISEE); GET_ARGUMENT_L("niveau=""en=""eN=",niveau); GET_ARGUMENT_P("n=""N=",niveau_denormalise); GET_ARGUMENT_F("nf=""Nf=",niveau_normalise); /* Introduits le 20070818184439... */ /* */ /* ATTENTION : le 20070819113631 je note qu'il faut utiliser ici 'GET_ARGUMENT_P(...)' et */ /* non pas 'GIT_ARGUMENT_P(...)' ('v $xig/fonct$vv$DEF 20070819113024'). Par "symetrie", */ /* il en est fait de meme avec 'GET_ARGUMENT_F(...)'. On notera au passage que cela n'a en */ /* fait aucune importance (contrairement a {abscisse,ordonnee,profondeur} puisqu'en effet */ /* dans ces trois cas la normalisation/denormalisation depend de '$formatI', alors que pour */ /* {niveau} la normalisation/denormalisation est immuable...). */ /* */ /* Les parametres "en=" et "eN=" ont ete introduits le 20070819134356... */ PROCESS_ARGUMENTS_DE_PARAMETRAGE_DE_LA_GENERATION_DE_SUITE_DE_VALEURS_1; PROCESS_ARGUMENTS_DE_PARAMETRAGE_DE_LA_GENERATION_DE_SUITE_DE_VALEURS_2; /* Ces deux procedures furent introduites le 20070317115342... */ ) ); #include xci/coordonne.03.I" Test(IL_FAUT(denormaliser)) Bblock Test(IL_FAUT(abscisse)) Bblock CAL2(Prin1("%d\n" ,TRANS_SUPER_cDENORMALISE_OX(abscisse_normalisee,translation_des_X_normalisees) ) ); Eblock ATes Bblock Eblock ETes Test(IL_FAUT(ordonnee)) Bblock CAL2(Prin1("%d\n" ,TRANS_SUPER_cDENORMALISE_OY(ordonnee_normalisee,translation_des_Y_normalisees) ) ); Eblock ATes Bblock Eblock ETes Test(IL_FAUT(profondeur)) Bblock CAL2(Prin1("%d\n",_cDENORMALISE_OZ(profondeur_normalisee))); Eblock ATes Bblock Eblock ETes Test(IL_FAUT(niveau)) Bblock CAL2(Prin1("%d\n",__DENORMALISE_NIVEAU(niveau_normalise))); /* Introduit le 20070818184439... */ Eblock ATes Bblock Eblock ETes Eblock ATes Bblock Test(IL_FAUT(abscisse)) Bblock EDITION_DE_LA_VALEUR_DE_L_OPERATEUR(TRANS_SUPER_cNORMALISE_OX(abscisse_denormalisee,translation_des_X_normalisees)); /* Le 20060105154711, le format "16g" est passe a "^^g" pour plus de souplesse... */ /* */ /* Le 20070317114431, fut introduit beaucoup plus de souplesse quant au format d'edition... */ Eblock ATes Bblock Eblock ETes Test(IL_FAUT(ordonnee)) Bblock EDITION_DE_LA_VALEUR_DE_L_OPERATEUR(TRANS_SUPER_cNORMALISE_OY(ordonnee_denormalisee,translation_des_Y_normalisees)); /* Le 20060105154711, le format "16g" est passe a "^^g" pour plus de souplesse... */ /* */ /* Le 20070317114431, fut introduit beaucoup plus de souplesse quant au format d'edition... */ Eblock ATes Bblock Eblock ETes Test(IL_FAUT(profondeur)) Bblock EDITION_DE_LA_VALEUR_DE_L_OPERATEUR(_____cNORMALISE_OZ(profondeur_denormalisee)); /* Le 20060105154711, le format "16g" est passe a "^^g" pour plus de souplesse... */ /* */ /* Le 20070317114431, fut introduit beaucoup plus de souplesse quant au format d'edition... */ Eblock ATes Bblock Eblock ETes Test(IL_FAUT(niveau)) Bblock EDITION_DE_LA_VALEUR_DE_L_OPERATEUR(______NORMALISE_NIVEAU(niveau_denormalise)); /* Introduit le 20070818184439... */ Eblock ATes Bblock Eblock ETes Eblock ETes RETU_Commande; Eblock ECommande