/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M A P P I N G   S U R   U N   P L A N   " F I L   D E   F E R "   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                                                                                */
/*                  plan.                                                                                                            */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xci/plan.02$K' :                                                                                               */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 1995??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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   Umin                                                                                                                          \
                    PARE(0.00)
#define   Umax                                                                                                                          \
                    PARE(1.00)
#define   NOMBRE_DE_PAS_DE_U                                                                                                            \
                    SEIZE

#define   Vmin                                                                                                                          \
                    PARE(0.00)
#define   Vmax                                                                                                                          \
                    PARE(1.00)
#define   NOMBRE_DE_PAS_DE_V                                                                                                            \
                    SEIZE
                                        /* Definition des coordonnees curvilignes de la surface.                                     */

#define   REMPLI_LES_FACETTES                                                                                                           \
                    VRAI                                                                                                                \
                                        /* Indique si l'on doit juste tracer les aretes ('FAUX') ou bien remplir les facettes        */ \
                                        /* par interpolation ('VRAI').                                                               */
#define   UTILISER_L_AIRE_DES_TRIANGLES_LORS_DE_L_INTERPOLATION_DES_FACETTES                                                            \
                    FAUX                                                                                                                \
                                        /* Indique s'il faut utiliser en tant que ponderateurs directement les coordonnees           */ \
                                        /* barycentriques ('FAUX') ou bien l'aire des triangles ('VRAI') lors de l'interpolation     */ \
                                        /* a l'interieure des facettes...                                                            */

#define   X_TRANSLATION                                                                                                                 \
                    ZERO                                                                                                                \
                                        /* Translation horizontale,                                                                  */
#define   Y_TRANSLATION                                                                                                                 \
                    ZERO                                                                                                                \
                                        /* Translation verticale.                                                                    */
#define   Z_TRANSLATION                                                                                                                 \
                    ZERO                                                                                                                \
                                        /* 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(40.0)                                                                                                          \
                                        /* Cote de la source lumineuse.                                                              */

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

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M A P P I N G   S U R   U N   P L A N   " F I L   D E   F E R "   D E   L ' I M A G E   A R G U M E N T  :                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE));
     DEFV(CHAR,INIC(POINTERc(nom_imageA),NOM_PIPE));

     DEFV(Float,INIT(u,Umin));
     DEFV(Float,INIT(U,Umax));
     DEFV(Int,INIT(nombre_de_pas_U,NOMBRE_DE_PAS_DE_U));
     DEFV(Float,INIT(v,Vmin));
     DEFV(Float,INIT(V,Vmax));
     DEFV(Int,INIT(nombre_de_pas_V,NOMBRE_DE_PAS_DE_V));
                                        /* Definition des coordonnees curvilignes de la surface.                                     */
     DEFV(Logical,INIT(remplir_les_facettes,REMPLI_LES_FACETTES));
                                        /* Indique si l'on doit juste tracer les aretes ('FAUX') ou bien remplir les facettes        */
                                        /* par interpolation ('VRAI').                                                               */
     DEFV(Logical,INIT(utiliser_l_aire_des_triangles_lors_de_l_interpolation_des_facettes
                      ,UTILISER_L_AIRE_DES_TRIANGLES_LORS_DE_L_INTERPOLATION_DES_FACETTES
                       )
          );
                                        /* Indique s'il faut utiliser en tant que ponderateurs directement les coordonnees           */
                                        /* barycentriques ('FAUX') ou bien l'aire des triangles ('VRAI') lors de l'interpolation     */
                                        /* a l'interieure des facettes...                                                            */
     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.                                         */

     GET_ARGUMENTSg(nombre_d_arguments
                   ,BLOC(GET_ARGUMENT_C("imageA=""A=",nom_imageA);
                         GET_ARGUMENT_C("imageR=""R=",nom_imageR);
                         GET_ARGUMENT_F("u=",u);
                         GET_ARGUMENT_F("U=",U);
                         GET_ARGUMENT_I("nu=",nombre_de_pas_U);
                         GET_ARGUMENT_F("v=",v);
                         GET_ARGUMENT_F("V=",V);
                         GET_ARGUMENT_I("nv=",nombre_de_pas_V);
                         GET_ARGUMENT_L("remplir=",remplir_les_facettes);
                         GET_ARGUMENT_L("aire=",utiliser_l_aire_des_triangles_lors_de_l_interpolation_des_facettes);
                         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(FgERASE());
                                        /* 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(Ifil_de_fer_surface(aFONCTION(Fplan_x),aFONCTION(Fplan_y),aFONCTION(Fplan_z)
                                  ,ADRESSE(translation)
                                  ,u,U
                                  ,nombre_de_pas_U
                                  ,v,V
                                  ,nombre_de_pas_V
                                  ,remplir_les_facettes
                                  ,ImageA
                                  ,ADRESSE(source_lumineuse)
                                  ,utiliser_l_aire_des_triangles_lors_de_l_interpolation_des_facettes
                                   )
               );
          CALi(Iupdate_image(nom_imageR,ImageG));
          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.