/*************************************************************************************************************************************/
/* */
/* C O M B I N A I S O N P O L Y N O M I A L E D E Q U A T R E I M A G E S F L O T T A N T E S : */
/* */
/* */
/* Author of '$xci/comH_v4d1$K' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 20071101095626). */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* 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
/* Introduit le 20080709143106... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* 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
/* La reference 'image_image_PENT_IMAGE_EXT' fut remplace par 'image_image_GOOF_IMAGE_EXT' */
/* le 20080709143106... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* P A R A M E T R E S : */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* M A C R O S U T I L E S : */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C O M B I N A I S O N P O L Y N O M I A L E D E Q U A T R E I M A G E S F L O T T A N T E S : */
/* */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
Bblock
DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE));
DEFV(CHAR,INIC(POINTERc(nom_imageA1),NOM_PIPE));
DEFV(CHAR,INIC(POINTERc(nom_imageA2),NOM_PIPE));
DEFV(CHAR,INIC(POINTERc(nom_imageA3),NOM_PIPE));
DEFV(CHAR,INIC(POINTERc(nom_imageA4),NOM_PIPE));
/*..............................................................................................................................*/
GET_ARGUMENTSi(nombre_d_arguments
,BLOC(GET_ARGUMENT_C("imageA1=""A1=",nom_imageA1);
GET_ARGUMENT_C("imageA2=""A2=",nom_imageA2);
GET_ARGUMENT_C("imageA3=""A3=",nom_imageA3);
GET_ARGUMENT_C("imageA4=""A4=",nom_imageA4);
GET_ARGUMENT_C("imageR=""R=",nom_imageR);
/* On notera le 20071103100520 que dans 'IFpolynome_2_04_____coefficient_TZYX', les */
/* indices 'T', 'Z', 'Y' et 'X' ('v $ximd/operator.1$FON HORNER_4_01') designent */
/* respectivement 'IFmageA4', 'IFmageA3', 'IFmageA2' et 'IFmageA1' : */
/* */
/* IFpolynome_2_04_____coefficient_TZYX */
/* */
/* ^^^^ */
/* |||| */
/* ||| --- IFmageA1 */
/* ||| */
/* || ---- IFmageA2 */
/* || */
/* | ----- IFmageA3 */
/* | */
/* ------ IFmageA4 */
/* */
/* ces conventions etant inversees pour les parametres (afin d'en faciliter l'usage), soit : */
/* */
/* aXYZT (=AXYZT) */
/* */
/* ^^^^ */
/* |||| */
/* ||| --- IFmageA4 */
/* ||| */
/* || ---- IFmageA3 */
/* || */
/* | ----- IFmageA2 */
/* | */
/* ------ IFmageA1 */
/* */
/* ce que l'on ecrira symboliquement "A1234"... */
/* */
/* Cela peut se retrouver facilement avec : */
/* */
/* set PoLy="$xci/poly_4_01$X" */
/* set ExTr="$xci/extrema$X standard=FAUX" */
/* */
/* eval "$PoLy a1000=1 a0100=0 a0010=0 a0001=0 A1=1 A2=2 A3=3 A4=4 | $ExTr" ==> 1 */
/* eval "$PoLy a1000=0 a0100=1 a0010=0 a0001=0 A1=1 A2=2 A3=3 A4=4 | $ExTr" ==> 2 */
/* eval "$PoLy a1000=0 a0100=0 a0010=1 a0001=0 A1=1 A2=2 A3=3 A4=4 | $ExTr" ==> 3 */
/* eval "$PoLy a1000=0 a0100=0 a0010=0 a0001=1 A1=1 A2=2 A3=3 A4=4 | $ExTr" ==> 4 */
/* */
/* ou les images {A1,A2,A3,A4} ont respectivement comme valeur {1,2,3,4}... */
/* */
/* On notera que jusqu'a cette date (le 20071103104507), ces conventions etaient inversees, */
/* et l'on trouvait ainsi : */
/* */
/* aTZYX (=ATZYX) */
/* */
/* Mais cette nouvelle convention d'ecriture des parametres est plus logique et de plus */
/* compatible avec celle de 'v $xci/poly_2_04$K aXY'... */
GET_ARGUMENT_F("a1111=""A1111=",IFcombinaison_hornerienne_var4_degre1_____coefficient_1111);
GET_ARGUMENT_F("a1110=""A1110=",IFcombinaison_hornerienne_var4_degre1_____coefficient_0111);
GET_ARGUMENT_F("a1101=""A1101=",IFcombinaison_hornerienne_var4_degre1_____coefficient_1011);
GET_ARGUMENT_F("a1100=""A1100=",IFcombinaison_hornerienne_var4_degre1_____coefficient_0011);
GET_ARGUMENT_F("a1011=""A1011=",IFcombinaison_hornerienne_var4_degre1_____coefficient_1101);
GET_ARGUMENT_F("a1010=""A1010=",IFcombinaison_hornerienne_var4_degre1_____coefficient_0101);
GET_ARGUMENT_F("a1001=""A1001=",IFcombinaison_hornerienne_var4_degre1_____coefficient_1001);
GET_ARGUMENT_F("a1000=""A1000=",IFcombinaison_hornerienne_var4_degre1_____coefficient_0001);
GET_ARGUMENT_F("a0111=""A0111=",IFcombinaison_hornerienne_var4_degre1_____coefficient_1110);
GET_ARGUMENT_F("a0110=""A0110=",IFcombinaison_hornerienne_var4_degre1_____coefficient_0110);
GET_ARGUMENT_F("a0101=""A0101=",IFcombinaison_hornerienne_var4_degre1_____coefficient_1010);
GET_ARGUMENT_F("a0100=""A0100=",IFcombinaison_hornerienne_var4_degre1_____coefficient_0010);
GET_ARGUMENT_F("a0011=""A0011=",IFcombinaison_hornerienne_var4_degre1_____coefficient_1100);
GET_ARGUMENT_F("a0010=""A0010=",IFcombinaison_hornerienne_var4_degre1_____coefficient_0100);
GET_ARGUMENT_F("a0001=""A0001=",IFcombinaison_hornerienne_var4_degre1_____coefficient_1000);
GET_ARGUMENT_F("a0000=""A0000=",IFcombinaison_hornerienne_var4_degre1_____coefficient_0000);
)
);
CALi(IFinitialisation(IFmageR,FZERO));
/* Initialisation de l'image Resultat. */
Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(IFmageA1,nom_imageA1))))
Bblock
Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(IFmageA2,nom_imageA2))))
Bblock
Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(IFmageA3,nom_imageA3))))
Bblock
Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(IFmageA4,nom_imageA4))))
Bblock
CALS(IFcombinaison_hornerienne_var4_degre1(IFmageR,IFmageA1,IFmageA2,IFmageA3,IFmageA4));
/* Combinaison polynomiale des quatre images Arguments... */
CALi(IupdateF_image(nom_imageR,IFmageR));
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