/*************************************************************************************************************************************/ /* */ /* C O M B I N A I S O N " H O R N E R I E N N E " D E T R O I S I M A G E S F L O T T A N T E S */ /* ( " A T R O I S V A R I A B L E S " ) D U P R E M I E R D E G R E : */ /* */ /* */ /* Author of '$xci/comH_v3d1cvl$K' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 20080324104044). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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 imageZ \ IFmageA3 #define imageA111 \ IFmageA4 #define imageA110 \ IFmageA5 #define imageA101 \ IFmageA6 #define imageA100 \ IFmageA7 #define imageA011 \ IFmageA8 #define imageA010 \ IFmageA9 #define imageA001 \ IFmageAA #define imageA000 \ IFmageAB #define imageR \ IFmageR /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* C O M B I N A I S O N " H O R N E R I E N N E " D E T R O I S I M A G E S F L O T T A N T E S */ /* ( " A T R O I S V A R I A B L E S " ) D U P R E M I E R D E G R E : */ /* */ /*************************************************************************************************************************************/ 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_imageZ),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageA111),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageA110),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageA101),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageA100),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageA011),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageA010),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageA001),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageA000),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("imageZ=""Z=",nom_imageZ); GET_ARGUMENT_C("imageA111=""A111=",nom_imageA111); GET_ARGUMENT_C("imageA110=""A110=",nom_imageA110); GET_ARGUMENT_C("imageA101=""A101=",nom_imageA101); GET_ARGUMENT_C("imageA100=""A100=",nom_imageA100); GET_ARGUMENT_C("imageA011=""A011=",nom_imageA011); GET_ARGUMENT_C("imageA010=""A010=",nom_imageA010); GET_ARGUMENT_C("imageA001=""A001=",nom_imageA001); GET_ARGUMENT_C("imageA000=""A000=",nom_imageA000); 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 Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(imageZ,nom_imageZ)))) Bblock /* Entree des trois images Arguments {imageX,imageY,imageZ} a combiner de facon */ /* "hornerienne". */ Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(imageA111,nom_imageA111)))) Bblock Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(imageA110,nom_imageA110)))) Bblock Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(imageA101,nom_imageA101)))) Bblock Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(imageA100,nom_imageA100)))) Bblock Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(imageA011,nom_imageA011)))) Bblock Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(imageA010,nom_imageA010)))) Bblock Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(imageA001,nom_imageA001)))) Bblock Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(imageA000,nom_imageA000)))) Bblock /* Entree des huit images Arguments {imageA111,...,imageA000} definissant le polynome (en */ /* chaque point {X,Y}). */ CALS(IFcombinaison_hornerienne_var3_degre1_cvl(imageR ,imageX ,imageY ,imageZ ,imageA111,imageA110 ,imageA101,imageA100 ,imageA011,imageA010 ,imageA001,imageA000 ) ); /* Combinaison "hornerienne" des trois images {X,Y,Z} par calcul du polynome : */ /* */ /* i=1 j=1 k=1 */ /* _____ _____ _____ */ /* \ \ \ k j i */ /* P(X,Y,Z) = \ \ \ A .X .Y .Z */ /* / / / ijk */ /* /_____ /_____ /_____ */ /* i=0 j=0 k=0 */ /* */ /* en notant bien que : */ /* */ /* i --0--> Z */ /* j --0--> Y */ /* k --0--> X */ /* */ /* dans 'A(i,j,k)' et non pas l'inverse (qui pourrait paraitre plus logique...). */ /* */ /* Le 20080709144726, le nom 'IFcombinaison_hornerienne_var3_degre1(...)' fut change en */ /* 'IFcombinaison_hornerienne_var3_degre1_cvl(...)' pour des raisons d'homogeneite... */ 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