/*************************************************************************************************************************************/ /* */ /* C O M B I N A I S O N " H O R N E R I E N N E " D E D E U X I M A G E S F L O T T A N T E S */ /* ( " A D E U X V A R I A B L E S " ) D U S E C O N D D E G R E */ /* A C O E F F I C I E N T S V A R I A B L E S L O C A L E M E N T : */ /* */ /* */ /* Author of '$xci/comH_v2d2cvl$K' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 20080219152821). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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 image_image_GOOF_IMAGE_EXT /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* P A R A M E T R E S : */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* M A C R O S U T I L E S : */ /* */ /*************************************************************************************************************************************/ #define imageX \ IFmageA1 #define imageY \ IFmageA2 #define imageA22 \ IFmageA3 #define imageA21 \ IFmageA4 #define imageA20 \ IFmageA5 #define imageA12 \ IFmageA6 #define imageA11 \ IFmageA7 #define imageA10 \ IFmageA8 #define imageA02 \ IFmageA9 #define imageA01 \ IFmageAA #define imageA00 \ IFmageAB #define imageR \ IFmageR /* L'ensemble des definitions precedentes {image...} a ete introduit le 20080220120235... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* C O M B I N A I S O N " H O R N E R I E N N E " D E D E U X I M A G E S F L O T T A N T E S */ /* ( " A D E U X V A R I A B L E S " ) D U S E C O N D D E G R E */ /* A C O E F F I C I E N T S V A R I A B L E S L O C A L E M E N T : */ /* */ /*************************************************************************************************************************************/ BCommande(nombre_d_arguments,arguments) /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageX),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageY),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageA22),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageA21),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageA20),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageA12),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageA11),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageA10),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageA02),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageA01),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageA00),NOM_PIPE)); /*..............................................................................................................................*/ EGAL(si_le_GooF_est_activable_utiliser_l_arithmetique_etendue_au_lieu_de_l_arithmetique_de_base,VRAI); /* A priori, l'utilisation de l'arithmetique etendue est forcee puisque l'option */ /* 'utiliser_l_arithmetique_etendue' peut etre activee et que cette derniere n'a */ /* evidemment d'interet qu'avec l'arithmetique etendue. */ GET_ARGUMENTSi(nombre_d_arguments ,BLOC(GET_ARGUMENT_C("imageX=""X=",nom_imageX); GET_ARGUMENT_C("imageY=""Y=",nom_imageY); GET_ARGUMENT_C("imageA22=""A22=",nom_imageA22); GET_ARGUMENT_C("imageA21=""A21=",nom_imageA21); GET_ARGUMENT_C("imageA20=""A20=",nom_imageA20); GET_ARGUMENT_C("imageA12=""A12=",nom_imageA12); GET_ARGUMENT_C("imageA11=""A11=",nom_imageA11); GET_ARGUMENT_C("imageA10=""A10=",nom_imageA10); GET_ARGUMENT_C("imageA02=""A02=",nom_imageA02); GET_ARGUMENT_C("imageA01=""A01=",nom_imageA01); GET_ARGUMENT_C("imageA00=""A00=",nom_imageA00); GET_ARGUMENT_C("imageR=""R=",nom_imageR); ) ); CALi(IFinitialisation(imageR,FZERO)); /* Initialisation de l'image Resultat. */ Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(imageX,nom_imageX)))) Bblock Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(imageY,nom_imageY)))) Bblock /* Entree des deux images Arguments {imageX,imageY} a combiner de facon "hornerienne". */ Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(imageA22,nom_imageA22)))) Bblock Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(imageA21,nom_imageA21)))) Bblock Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(imageA20,nom_imageA20)))) Bblock Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(imageA12,nom_imageA12)))) Bblock Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(imageA11,nom_imageA11)))) Bblock Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(imageA10,nom_imageA10)))) Bblock Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(imageA02,nom_imageA02)))) Bblock Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(imageA01,nom_imageA01)))) Bblock Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(imageA00,nom_imageA00)))) Bblock /* Entree des neuf images Arguments {imageA22,...,imageA00} definissant le polynome (en */ /* chaque point {X,Y}). */ CALS(IFcombinaison_hornerienne_var2_degre2_cvl(imageR ,imageX ,imageY ,imageA22,imageA21,imageA20 ,imageA12,imageA11,imageA10 ,imageA02,imageA01,imageA00 ) ); /* Combinaison "hornerienne" des deux images {X,Y} par calcul du polynome : */ /* */ /* i=2 j=2 */ /* _____ _____ */ /* \ \ j i */ /* P(X,Y) = \ \ A .X .Y */ /* / / ij */ /* /_____ /_____ */ /* i=0 j=0 */ /* */ /* en notant bien que : */ /* */ /* i --0--> Y */ /* j --0--> X */ /* */ /* dans 'A(i,j)' et non pas l'inverse (qui pourrait paraitre plus logique...). */ CALi(IupdateF_image(nom_imageR,imageR)); Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes RETU_Commande; Eblock ECommande