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



Copyright © Jean-François COLONNA, 2019-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2019-2024.