/*************************************************************************************************************************************/
/* */
/* 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