/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M A P P I N G   S U R   U N E   S P H E R E   " C O N T I N U E "   D E   L ' I M A G E   A R G U M E N T  :               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                    Cette commande genere une image                                                                                */
/*                  dont le nom est le premier argument                                                                              */
/*                  d'appel ; elle est le resultat de                                                                                */
/*                  du mapping de la premiere sur une                                                                                */
/*                  sphere.                                                                                                          */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xci/sphere.01$K' :                                                                                             */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 1987??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

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

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        F I C H I E R S   D ' I N C L U D E S  :                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  INCLUDES_BASE
#include  maths_fonct_SURFACES_1_EXT

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P A R A M E T R E S  :                                                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   FILTRAGE_TEXTURE                                                                                                              \
                    VRAI                                                                                                                \
                                        /* Afin de filtrer la texture.                                                               */
#define   ANTI_ALIASING                                                                                                                 \
                    VRAI                                                                                                                \
                                        /* Pour faire le traitement anti-aliasing,                                                   */
#define   EPSILON_ANTI_ALIASING                                                                                                         \
                    MOIT(FU)                                                                                                            \
                                        /* Epsilon pour decreter qu'il faut faire le traitement anti-aliasing.                       */
#define   CONVOLUTION                                                                                                                   \
                    VRAI                                                                                                                \
                                        /* Pour faire la convolution des bords.                                                      */
#define   GENERE_DISCONTINUITES                                                                                                         \
                    FAUX                                                                                                                \
                                        /* Pour generer eventuellement l'image des discontinuites.                                   */
#define   X_TRANSLATION                                                                                                                 \
                    RAYON                                                                                                               \
                                        /* Translation horizontale,                                                                  */
#define   Y_TRANSLATION                                                                                                                 \
                    RAYON                                                                                                               \
                                        /* Translation verticale.                                                                    */
#define   Z_TRANSLATION                                                                                                                 \
                    NEGA(RAYON)                                                                                                         \
                                        /* Translation en 'Z'.                                                                       */
#define   X_LUMIERE                                                                                                                     \
                    PARE(10.0)                                                                                                          \
                                        /* Abscisse de la source lumineuse,                                                          */
#define   Y_LUMIERE                                                                                                                     \
                    PARE(10.0)                                                                                                          \
                                        /* Ordonnee de la source lumineuse,                                                          */
#define   Z_LUMIERE                                                                                                                     \
                    PARE(0.0)                                                                                                           \
                                        /* Cote de la source lumineuse.                                                              */
#define   NOMBRE_DE_RECURSIONS                                                                                                          \
                    INFINI                                                                                                              \
                                        /* Nombre de recursions a effectuer.                                                         */
#define   RAYON                                                                                                                         \
                    PARE(0.4)                                                                                                           \
                                        /* Rayon par defaut de la sphere.                                                            */
#define   Umin                                                                                                                          \
                    PARE(0.00)
#define   Umax                                                                                                                          \
                    PARE(1.00)
#define   Vmin                                                                                                                          \
                    PARE(0.00)
#define   Vmax                                                                                                                          \
                    PARE(1.00)
                                        /* Definition des coordonnees curvilignes de la surface.                                     */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M A C R O S   U T I L E S  :                                                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        E X E C U T I O N   D U   M A P P I N G   S U R   U N E   S P H E R E  :                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE));
     DEFV(CHAR,INIC(POINTERc(nom_imageA),NOM_PIPE));
     DEFV(deltaF_3D,translation);
                                        /* Translation de la surface.                                                                */
     DEFV(pointF_3D,source_lumineuse);
                                        /* Position de la source lumineuse.                                                          */
     /*..............................................................................................................................*/
     SET_ECHANTILLONNAGE(PasX,PasY);
     INITIALISATION_ACCROISSEMENT_3D(translation,X_TRANSLATION,Y_TRANSLATION,Z_TRANSLATION);
                                        /* Initialisation par defaut de la translation de la surface.                                */
     INITIALISATION_POINT_3D(source_lumineuse,X_LUMIERE,Y_LUMIERE,Z_LUMIERE);
                                        /* Initialisation par defaut de la source lumineuse.                                         */
     EGAL(Fsphere_x__Fsphere_y__Fsphere_z_____rayon,RAYON);
                                        /* Initialisation par defaut du rayon de la sphere.                                          */
     GET_ARGUMENTSg(nombre_d_arguments
                   ,BLOC(GET_ARGUMENT_C("imageA=""A=",nom_imageA);
                         GET_ARGUMENT_C("imageR=""R=",nom_imageR);
                         GET_ARGUMENT_F("rayon=",Fsphere_x__Fsphere_y__Fsphere_z_____rayon);
                         GET_ARGUMENT_F("Tx=",ASD1(translation,dx));
                         GET_ARGUMENT_F("Ty=",ASD1(translation,dy));
                         GET_ARGUMENT_F("Tz=",ASD1(translation,dz));
                         GET_ARGUMENT_F("sx=",ASD1(source_lumineuse,x));
                         GET_ARGUMENT_F("sy=",ASD1(source_lumineuse,y));
                         GET_ARGUMENT_F("sz=",ASD1(source_lumineuse,z));
                         )
                    );

     CALi(Inoir(ImageR));
                                        /* Initialisation de l'image Resultat.                                                       */

     Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(ImageA,nom_imageA))))
          Bblock
          CALS(Iinit_Z_Buffer());
                                        /* Initialisation du 'Z-Buffer'.                                                             */
          CALS(Ivisualisation_surface(ImageR
                                     ,ImageA,FILTRAGE_TEXTURE
                                     ,aFONCTION(Fsphere_x),aFONCTION(Fsphere_y),aFONCTION(Fsphere_z)
                                     ,ADRESSE(translation)
                                     ,Umin,Umax,Vmin,Vmax
                                     ,NOMBRE_DE_RECURSIONS
                                     ,ADRESSE(source_lumineuse)
                                     ,ANTI_ALIASING,EPSILON_ANTI_ALIASING
                                     ,CONVOLUTION
                                     ,GENERE_DISCONTINUITES,ImageA1
                                      )
               );
          CALi(Iupdate_image(nom_imageR,ImageR));
          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.