/*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N " A U T O - S I M I L A I R E " */ /* D A N S L E P L A N C O M P L E X E : */ /* */ /* */ /* Definition : */ /* */ /* Cette commande genere une image */ /* dont le nom est le premier argument */ /* d'appel ; elle est le resultat de */ /* la transformation de la deuxieme */ /* image par la transformation "auto_similaire". */ /* */ /* */ /* Author of '$xci/z_auto_similaire.01$K' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 20200705115028). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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 : */ /* */ /*************************************************************************************************************************************/ #define GENERER_LES_GET_ARGUMENTS_DE_CONTROLE_DE_L_ARITHMETIQUE_ETENDUE_DES_NOMBRES_FLOTTANTS /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* F I C H I E R S D ' I N C L U D E S : */ /* */ /*************************************************************************************************************************************/ #include INCLUDES_BASE #include image_image_IMAGESF_EXT #include maths_compl_fonct_CONFORMES_EXT /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* P A R A M E T R E S : */ /* */ /*************************************************************************************************************************************/ #include xci/coordonne.01.I" #define TRAVAILLER_DANS_LE_PLAN_IMAGE \ FAUX \ /* Indique s'il faut travailler dans le plan image ('VRAI') ou bien dans le plan complexe */ \ /* ("FAUX'). */ #define FACTEUR \ FU \ /* Facteur multiplicatif lorsqu'il ne faut pas 'TRAVAILLER_DANS_LE_PLAN_IMAGE'... */ #define PARTIE_REELLE_DE_PD \ FU #define PARTIE_IMAGINAIRE_DE_PD \ FZERO /* Nombre complexe 'PD'. */ #define PARTIE_REELLE_DE_PRD \ FU #define PARTIE_IMAGINAIRE_DE_PRD \ FZERO /* Nombre complexe 'PRD'. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* M A C R O S U T I L E S : */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N " A U T O - S I M I L A I R E " */ /* D A N S L E P L A N C O M P L E X E : */ /* */ /*************************************************************************************************************************************/ BCommande(nombre_d_arguments,arguments) /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock #include xci/coordonne.02.I" DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageA),NOM_PIPE)); DEFV(Logical,INIT(travailler_dans_le_plan_image,TRAVAILLER_DANS_LE_PLAN_IMAGE)); /* Indique s'il faut travailler dans le plan image ('VRAI') ou bien dans le plan complexe */ /* ("FAUX'). */ DEFV(Float,INIT(facteur,FACTEUR)); /* Facteur multiplicatif. */ DEFV(deltaF_2D,Atranslation); /* Translation de l'image Argument, */ DEFV(deltaF_2D,Rtranslation); /* Translation de l'image Resultat. */ DEFV(complexe,nombre_PD); DEFV(complexe,nombre_PRD); /* Definition des deux coefficients de la transformation "auto-similaire"... */ /*..............................................................................................................................*/ EGAL(TRANSFORMATION_CONFORME_DANS_LES_PLANS_____R_translation_BX,FDU); EGAL(TRANSFORMATION_CONFORME_DANS_LES_PLANS_____R_translation_BY,FDU); EGAL(TRANSFORMATIONS_CONFORMES_____permuter_les_coordonnees_de_load_et_de_store,FAUX); EGAL(TRANSFORMATIONS_CONFORMES_____load_point_valide__plutot_que__load_point_modulo,FAUX); EGAL(TRANSFORMATIONS_CONFORMES_____store_point_modulo__plutot_que__store_point_valide,FAUX); /* Options par defaut introduites le 20200724161813... */ /* */ /* Le 20200725111923, la valeur de 'permuter_les_coordonnees_de_load_et_de_store' est */ /* passee de 'FAUX' a 'VRAI'... */ /* */ /* Le 20200725112828, la valeur de 'load_point_valide__plutot_que__load_point_modulo' est */ /* passee de 'FAUX' a 'VRAI'... */ #include xci/coordonne.04.I" Cinitialisation(nombre_PD,PARTIE_REELLE_DE_PD,PARTIE_IMAGINAIRE_DE_PD); Cinitialisation(nombre_PRD,PARTIE_REELLE_DE_PRD,PARTIE_IMAGINAIRE_DE_PRD); /* Initialisation des deux coefficients de la transformation "auto-similaire"... */ #include xci/conformes.01.I" GET_ARGUMENTSi(nombre_d_arguments ,BLOC(GET_ARGUMENT_C("imageA=""A=",nom_imageA); GET_ARGUMENT_C("imageR=""R=",nom_imageR); GET_ARGUMENT_L("standard=",les_images_sont_standards); GET_ARGUMENT_L("plan_image=""image=",travailler_dans_le_plan_image); GET_ARGUMENT_N("plan_complexe=""complexe=",travailler_dans_le_plan_image); GET_ARGUMENT_F("facteur=""f=",facteur); GET_ARGUMENT_F("RPD=",Reelle(nombre_PD)); GET_ARGUMENT_F("IPD=",Imaginaire(nombre_PD)); GET_ARGUMENT_F("RPRD=",Reelle(nombre_PRD)); GET_ARGUMENT_F("IPRD=",Imaginaire(nombre_PRD)); GET_ARGUMENT_L("logarithme=""log=",TRANSFORMATION__ZQO_AUTO_SIMILAIRE_____ne_calculer_que_le_logarithme); GET_ARGUMENT_N("exponentielle=""exp=",TRANSFORMATION__ZQO_AUTO_SIMILAIRE_____ne_calculer_que_le_logarithme); /* Arguments introduits le 20200724165115 a des fins de test... */ ARGUMENTS_DES_TRANSFORMATIONS_CONFORMES; CONTROLE_DE_L_ARITHMETIQUE_ETENDUE_DES_NOMBRES_COMPLEXES; ) ); #include xci/coordonne.03.I" CALi(gInettoyage(les_images_sont_standards,ImageR,IFmageR)); /* Initialisation de l'image Resultat. */ Test(PAS_D_ERREUR(CODE_ERROR(gIload_image(les_images_sont_standards,ImageA,IFmageA,nom_imageA)))) /* Chargement de l'image a transformer. */ Bblock INITIALISATION_ACCROISSEMENT_2D(Atranslation ,NEGA(SUPER_lNORMALISE_OX(MOIT(FLOT(dimX)))) ,NEGA(SUPER_lNORMALISE_OY(MOIT(FLOT(dimY)))) ); INITIALISATION_ACCROISSEMENT_2D(Rtranslation ,ZERO ,ZERO ); Test(IL_FAUT(travailler_dans_le_plan_image)) Bblock CALS(gIz_auto_similaire_dans_le_plan_image(les_images_sont_standards ,ImageR,IFmageR ,ADRESSE(Rtranslation) ,facteur ,ImageA,IFmageA ,ADRESSE(Atranslation) ,ADRESSE(nombre_PD) ,ADRESSE(nombre_PRD) ) ); /* Et transformation de l'image Argument dans le plan image. */ Eblock ATes Bblock CALS(gIz_auto_similaire_dans_le_plan_complexe(les_images_sont_standards ,ImageR,IFmageR ,ADRESSE(Rtranslation) ,facteur ,ImageA,IFmageA ,ADRESSE(Atranslation) ,ADRESSE(nombre_PD) ,ADRESSE(nombre_PRD) ) ); /* Et transformation de l'image Argument dans le plan Complexe. */ Eblock ETes CALi(gIupdate_image(les_images_sont_standards,nom_imageR,ImageR,IFmageR)); Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes RETU_Commande; Eblock ECommande