/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D ' U N   P R O J E C T O R   T R I D I M E N S I O N N E L  :                                       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xrs/project3D.11$K' :                                                                                          */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 20050619121603).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

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

@define   PRAGMA_CL_____MODULE_NON_OPTIMISABLE

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

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N S   D E   B A S E   E T   U N I V E R S E L L E S  :                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrv/dimensionnement.01.vv.I"
                                        /* Introduit le 20111209173117...                                                            */

#include  xrk/attractor.11.I"
#include  xrv/particule.41.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*                                                                                    3                                              */
/*        D E F I N I T I O N   D E   L ' E S P A C E   P H Y S I Q U E   D A N S   R     ( D E B U T )  :                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Nota :                                                                                                                     */
/*                                                                                                                                   */
/*                    Les extrema des coordonnees {x,y,z}                                                                            */
/*                  ainsi que ceux de leurs differentielles                                                                          */
/*                  {dx,dy,dz} sont fixees un peu arbitrairement                                                                     */
/*                  et sans etre parametrees.                                                                                        */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrs/project3D.18.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*                                                                                    3                                              */
/*        D E F I N I T I O N   D E   L ' E S P A C E   P H Y S I Q U E   D A N S   R     ( D E B U T )  :                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrk/attractor.12.I"
#include  xrs/project3D.19.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D ' U N   P R O J E C T O R   T R I D I M E N S I O N N E L  :                                       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition de la variete ('v $xrs/project3D.11$K') :                                                                       */
/*                                                                                                                                   */
/*                    Le projector tridimensionnel est defini parametriquement                                                       */
/*                  en fonction des trois parametres 'u', 'v' et 'w' :                                                               */
/*                                                                                                                                   */
/*                                      F (u,v,w) = A .AlbumX(u,v,w) + T                                                             */
/*                                       x           x                  x                                                            */
/*                                                                                                                                   */
/*                                      F (u,v,w) = A .AlbumY(u,v,w) + T                                                             */
/*                                       y           y                  y                                                            */
/*                                                                                                                                   */
/*                                      F (u,v,w) = A .AlbumZ(u,v,w) + T                                                             */
/*                                       z           z                  z                                                            */
/*                                                                                                                                   */
/*                  (ou 'Album?(u,v,w)' sont des albums flottants indexes                                                            */
/*                  par (u,v,w) -coordonnees flottantes {Xf,Yf,Zf} respectivement-                                                   */
/*                  a l'aide d'une procedure d'interpolation bicubique)                                                              */
/*                                                                                                                                   */
/*                  avec :                                                                                                           */
/*                                                                                                                                   */
/*                                      u E [ 0 , 1 ]       (--O--> Xf)                                                              */
/*                                                                                                                                   */
/*                                      v E [ 0 , 1 ]       (--O--> Yf)                                                              */
/*                                                                                                                                   */
/*                                      w E [ 0 , 1 ]       (--O--> Zf)                                                              */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrs/project3D.12.I"
#include  xrs/project3D.14.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E S   T R O I S   A L B U M S   D E F I N I S S A N T                                              */
/*        L E S   T R O I S   P R O J E C T I O N S  :                                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   VISUALISER_UNE_VARIETE_TRIDIMENSIONNELLE                                                                                      \
                    VRAI
DEFV(Local,DEFV(Logical,INIT(visualiser_une_variete_tridimensionnelle,VISUALISER_UNE_VARIETE_TRIDIMENSIONNELLE)));
                                        /* Ceci fut introduit le 20060502145146 afin de permettre de visualiser une variete          */
                                        /* tridimensionnelle (ce qui correspond a l'unique fonction anterieure) ou bien un           */
                                        /* ensemble de surfaces bidimensionnelles...                                                 */

#define   AMPLIFICATEUR_DES_IMAGES                                                                                                      \
                    FU
DEFV(Local,DEFV(Float,INIT(Album_Fx_amplificateur,AMPLIFICATEUR_DES_IMAGES)));
DEFV(Local,DEFV(Float,INIT(Album_Fy_amplificateur,AMPLIFICATEUR_DES_IMAGES)));
DEFV(Local,DEFV(Float,INIT(Album_Fz_amplificateur,AMPLIFICATEUR_DES_IMAGES)));
                                        /* Amplificateurs pour {Fx,Fy,Fz}.                                                           */

#define   TRANSLATEUR_DES_IMAGES                                                                                                        \
                    FZERO
DEFV(Local,DEFV(Float,INIT(Album_Fx_translateur,TRANSLATEUR_DES_IMAGES)));
DEFV(Local,DEFV(Float,INIT(Album_Fy_translateur,TRANSLATEUR_DES_IMAGES)));
DEFV(Local,DEFV(Float,INIT(Album_Fz_translateur,TRANSLATEUR_DES_IMAGES)));
                                        /* Translateurs pour {Fx,Fy,Fz}.                                                             */

#define   PERIODISER_u_v_w                                                                                                              \
                    VRAI

DEFV(Local,DEFV(Logical,INIT(Album_Fx_periodiser_u,PERIODISER_u_v_w)));
DEFV(Local,DEFV(Logical,INIT(Album_Fy_periodiser_u,PERIODISER_u_v_w)));
DEFV(Local,DEFV(Logical,INIT(Album_Fz_periodiser_u,PERIODISER_u_v_w)));
                                        /* Faut-il periodiser {u} pour {Fx,Fy,Fz} ?                                                  */
DEFV(Local,DEFV(Logical,INIT(Album_Fx_periodiser_v,PERIODISER_u_v_w)));
DEFV(Local,DEFV(Logical,INIT(Album_Fy_periodiser_v,PERIODISER_u_v_w)));
DEFV(Local,DEFV(Logical,INIT(Album_Fz_periodiser_v,PERIODISER_u_v_w)));
                                        /* Faut-il periodiser {v} pour {Fx,Fy,Fz} ?                                                  */
DEFV(Local,DEFV(Logical,INIT(Album_Fx_periodiser_w,PERIODISER_u_v_w)));
DEFV(Local,DEFV(Logical,INIT(Album_Fy_periodiser_w,PERIODISER_u_v_w)));
DEFV(Local,DEFV(Logical,INIT(Album_Fz_periodiser_w,PERIODISER_u_v_w)));
                                        /* Faut-il periodiser {w} pour {Fx,Fy,Fz} ?                                                  */

#define   SYMETRISER_u_v_w                                                                                                              \
                    FAUX

DEFV(Local,DEFV(Logical,INIT(Album_Fx_symetriser_u,SYMETRISER_u_v_w)));
DEFV(Local,DEFV(Logical,INIT(Album_Fy_symetriser_u,SYMETRISER_u_v_w)));
DEFV(Local,DEFV(Logical,INIT(Album_Fz_symetriser_u,SYMETRISER_u_v_w)));
                                        /* Faut-il periodiser {u} pour {Fx,Fy,Fz} ? Ceci a ete introduit le 20050721102546...        */
DEFV(Local,DEFV(Logical,INIT(Album_Fx_symetriser_v,SYMETRISER_u_v_w)));
DEFV(Local,DEFV(Logical,INIT(Album_Fy_symetriser_v,SYMETRISER_u_v_w)));
DEFV(Local,DEFV(Logical,INIT(Album_Fz_symetriser_v,SYMETRISER_u_v_w)));
                                        /* Faut-il periodiser {v} pour {Fx,Fy,Fz} ? Ceci a ete introduit le 20050721102546...        */
DEFV(Local,DEFV(Logical,INIT(Album_Fx_symetriser_w,SYMETRISER_u_v_w)));
DEFV(Local,DEFV(Logical,INIT(Album_Fy_symetriser_w,SYMETRISER_u_v_w)));
DEFV(Local,DEFV(Logical,INIT(Album_Fz_symetriser_w,SYMETRISER_u_v_w)));
                                        /* Faut-il periodiser {w} pour {Fx,Fy,Fz} ? Ceci a ete introduit le 20050721102546...        */

#define   PROLONGER_u_v_w                                                                                                               \
                    FAUX

DEFV(Local,DEFV(Logical,INIT(Album_Fx_prolonger_u,PROLONGER_u_v_w)));
DEFV(Local,DEFV(Logical,INIT(Album_Fy_prolonger_u,PROLONGER_u_v_w)));
DEFV(Local,DEFV(Logical,INIT(Album_Fz_prolonger_u,PROLONGER_u_v_w)));
                                        /* Faut-il prolonger {u} pour {Fx,Fy,Fz} ?                                                   */
DEFV(Local,DEFV(Logical,INIT(Album_Fx_prolonger_v,PROLONGER_u_v_w)));
DEFV(Local,DEFV(Logical,INIT(Album_Fy_prolonger_v,PROLONGER_u_v_w)));
DEFV(Local,DEFV(Logical,INIT(Album_Fz_prolonger_v,PROLONGER_u_v_w)));
                                        /* Faut-il prolonger {v} pour {Fx,Fy,Fz} ?                                                   */
DEFV(Local,DEFV(Logical,INIT(Album_Fx_prolonger_w,PROLONGER_u_v_w)));
DEFV(Local,DEFV(Logical,INIT(Album_Fy_prolonger_w,PROLONGER_u_v_w)));
DEFV(Local,DEFV(Logical,INIT(Album_Fz_prolonger_w,PROLONGER_u_v_w)));
                                        /* Faut-il prolonger {w} pour {Fx,Fy,Fz} ?                                                   */

#define   NIVEAU_HORS_PROJECTION                                                                                                        \
                    FZERO
DEFV(Local,DEFV(genere_Float,INIT(Album_Fx_niveau_hors_album,NIVEAU_HORS_PROJECTION)));
DEFV(Local,DEFV(genere_Float,INIT(Album_Fy_niveau_hors_album,NIVEAU_HORS_PROJECTION)));
DEFV(Local,DEFV(genere_Float,INIT(Album_Fz_niveau_hors_album,NIVEAU_HORS_PROJECTION)));
                                        /* Niveau hors-album pour {Fx,Fy,Fz}.                                                        */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        F O N C T I O N S   D E   V I S U A L I S A T I O N   E T   D ' I N T E R P O L A T I O N  :                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrs/volumes.21.I"

#define   RENORMALISER_ARBITRAIREMENT_LES_DIFFERENTIELLES                                                                               \
                    FAUX                                                                                                                \
                                        /* Pour ne pas renormaliser arbitrairement les differentielles, et ce afin de prendre en     */ \
                                        /* compte leur extrema veritables dans 'RENORMALISATION_D_UNE_LISTE_DE_POINTS'. Ceci a ete   */ \
                                        /* introduit le 20050621111640...                                                            */ \
                                        /*                                                                                           */ \
                                        /* Le 20060505173308 en calculant 'v $xiirs/SPHE.72' et 'v $xiirs/SPHE.73.2D', j'ai note     */ \
                                        /* une difference de comportement au niveau du parametre "eda=" (ou de son "complement"      */ \
                                        /* "edc=") venant du fait que le programme 'v $xrs/project2D.11$K' ne definit pas            */ \
                                        /* 'RENORMALISER_ARBITRAIREMENT_LES_DIFFERENTIELLES'  et c'est donc la valeur par            */ \
                                        /* defaut ('VRAI') qui est utilisee. Alors qu'en ce qui concerne 'v $xrs/project3D.11$K',    */ \
                                        /* celui-ci lui donne la valeur 'FAUX', ce qui est donc fait ici...                          */
#define   EDITER_LES_EXTREMA_S_ILS_SONT_HORS_PREVISIONS                                                                                 \
                    FAUX                                                                                                                \
                                        /* Afin de ne pas editer par defaut a la fin la valeur des extrema de {x,y,z} et {dx,dy,dz}  */ \
                                        /* lorsqu'ils sont en dehors de {?min_ESPACE,?max_ESPACE} et de {d?min_ESPACE,d?max_ESPACE}  */ \
                                        /* respectivement.                                                                           */

#include  xci/sequence.01.I"
                                        /* ATTENTION, on definit ainsi le symbole 'DERNIERE_IMAGE' qui ne sert a rien ici, puisque   */
                                        /* c'est en effet 'Zmax' qui joue ce role...                                                 */
#include  xrs/project3D.13.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E S   T R O I S   F O N C T I O N S   ' F '  :                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrs/project3D.11.I"
                                        /* ATTENTION, il est imperatif que les fonctions derivables formellement soient definies     */
                                        /* dans un fichier a part afin qu'elles ne soient pas l'objet d'une double definition. En    */
                                        /* effet, on trouve dans 'v $xcc/cpp$Z' :                                                    */
                                        /*                                                                                           */
                                        /*                  $CA  $module$w                                                           */
                                        /*                                 | $xcp/cpp$X          ... -c$PASSE_D -e$PASSE_5           */
                                        /*                                                                              > $fichierR  */
                                        /*                                                                                           */
                                        /* Ainsi, si par exemple la definition de 'RAYON(h,theta)' etait faite localement dans le    */
                                        /* fichier '$xrf/recursif.11$K', cette definition apparaitrait deux fois dans le fichier     */
                                        /* '$module$w' : une premiere fois en tete, provenant de '$PASSE_D' ou l'on ne trouve que    */
                                        /* les definitions du type '-define ...', puis une deuxieme fois a la suite, la ou se trouve */
                                        /* concatene au fichier '$module$W' des '-define ...' le fichier '$fichierA' a compiler...   */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P O U R   D E S   R A I S O N S   D E   C O M P A T I B I L I T E  :                                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrk/integr.1B.vv.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E S   I N I T I A L I S A T I O N S  :                                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrk/attractor.18.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D ' U N   P R O J E C T O R   T R I D I M E N S I O N N E L  :                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
#include  xrs/volumes.41.I"
                                        /* Introduit le 20150528140534...                                                            */

     DEFV(CHAR,INIC(POINTERc(nom_albumFx),NOM_PIPE));
     DEFV(CHAR,INIC(POINTERc(nom_postfixeFx),NOM_UNDEF_VIDE));
     DEFV(Int,INIT(premiere_imageFx,PREMIERE_IMAGE));
     DEFV(Int,INIT(pas_des_imagesFx,PAS_DES_IMAGES));
     DEFV(Int,INIT(nombre_de_chiffresFx,NOMBRE_DE_CHIFFRES));
                                        /* Definition de l'album 'Fx'...                                                             */
     DEFV(CHAR,INIC(POINTERc(nom_albumFy),NOM_PIPE));
     DEFV(CHAR,INIC(POINTERc(nom_postfixeFy),NOM_UNDEF_VIDE));
     DEFV(Int,INIT(premiere_imageFy,PREMIERE_IMAGE));
     DEFV(Int,INIT(pas_des_imagesFy,PAS_DES_IMAGES));
     DEFV(Int,INIT(nombre_de_chiffresFy,NOMBRE_DE_CHIFFRES));
                                        /* Definition de l'album 'Fy'...                                                             */
     DEFV(CHAR,INIC(POINTERc(nom_albumFz),NOM_PIPE));
     DEFV(CHAR,INIC(POINTERc(nom_postfixeFz),NOM_UNDEF_VIDE));
     DEFV(Int,INIT(premiere_imageFz,PREMIERE_IMAGE));
     DEFV(Int,INIT(pas_des_imagesFz,PAS_DES_IMAGES));
     DEFV(Int,INIT(nombre_de_chiffresFz,NOMBRE_DE_CHIFFRES));
                                        /* Definition de l'album 'Fz'...                                                             */

     DEFV(Logical,INIT(Album_Fx__interpoler_bilineairement_ou_bicubiquement
                      ,FFAload_point_coordonnees_01_____interpoler_bilineairement_ou_bicubiquement
                       )
          );
     DEFV(Logical,INIT(Album_Fx__utiliser_l_interpolation_bilineaire
                      ,FFAload_point_coordonnees_01_____utiliser_l_interpolation_bilineaire
                       )
          );
     DEFV(Logical,INIT(Album_Fy__interpoler_bilineairement_ou_bicubiquement
                      ,FFAload_point_coordonnees_01_____interpoler_bilineairement_ou_bicubiquement
                       )
          );
     DEFV(Logical,INIT(Album_Fy__utiliser_l_interpolation_bilineaire
                      ,FFAload_point_coordonnees_01_____utiliser_l_interpolation_bilineaire
                       )
          );
     DEFV(Logical,INIT(Album_Fz__interpoler_bilineairement_ou_bicubiquement
                      ,FFAload_point_coordonnees_01_____interpoler_bilineairement_ou_bicubiquement
                       )
          );
     DEFV(Logical,INIT(Album_Fz__utiliser_l_interpolation_bilineaire
                      ,FFAload_point_coordonnees_01_____utiliser_l_interpolation_bilineaire
                       )
          );
                                        /* Definition des interpolations des albums {Fx,Fy,Fz} (introduite le 20150528104916).       */
                                        /*                                                                                           */
                                        /* Je rappelle le 20200727133833 que ces differents parametres initialises a l'aide des      */
                                        /* parametres 'FFAload_point_coordonnees_01_____...' sont en fait utilises explicitement     */
                                        /* dans 'v $xrs/project3D.11$I Fx_Projector3D_1' par exemple...                              */

#include  xrs/volumes.22.I"
     /*..............................................................................................................................*/
     BSaveModifyVariable(Logical,S_ACCELERATEUR__ALOAD_POINT_COORDONNEES_01_____utiliser_l_accelerateur,VRAI);
                                        /* Introduit le 20120620091925...                                                            */

     EGAL(AXES_COORDONNEES_FERMES_OUVERTS_____compatibilite_20090929,VRAI);
                                        /* Introduit le 20101005092842 car, en effet, sans cela les images faites anterieurement     */
                                        /* au 20090929092932 n'etaient pas reproductibles (des defauts importants apparaissaient     */
                                        /* en particulier a la peripherie des "objets").                                             */

     INITIALISATIONS_GENERALES;
                                        /* Initialisations generales faites au tout debut...                                         */

#include  xrv/champs_5.1A.I"

#define   DEFINITION_DES_INTERPOLATIONS_Fx_Fy_Fz
                                        /* Afin de generer les 'GET_ARGUMENT_L(...)' de compatibilite (introduit le 20150528104916). */

#include  xrs/volumes.13.I"

     GET_ARGUMENTSv(nombre_d_arguments
                   ,BLOC(PROCESS_ARGUMENTS_GEOMETRIQUES;

                         GET_ARGUMENT_L("variete_tridimensionnelle=""3D=",visualiser_une_variete_tridimensionnelle);
                         GET_ARGUMENT_N("variete_bidimensionnelle=""2D=",visualiser_une_variete_tridimensionnelle);

                         GET_ARGUMENT_C("albumFx=""Fx=",nom_albumFx);
                         GET_ARGUMENT_C("postfixeFx=",nom_postfixeFx);
                         GET_ARGUMENT_I("premiereFx=",premiere_imageFx);
                         GET_ARGUMENT_I("pasFx=",pas_des_imagesFx);
                         GET_ARGUMENT_I("chiffresFx=",nombre_de_chiffresFx);

                         GET_ARGUMENT_C("albumFy=""Fy=",nom_albumFy);
                         GET_ARGUMENT_C("postfixeFy=",nom_postfixeFy);
                         GET_ARGUMENT_I("premiereFy=",premiere_imageFy);
                         GET_ARGUMENT_I("pasFy=",pas_des_imagesFy);
                         GET_ARGUMENT_I("chiffresFy=",nombre_de_chiffresFy);

                         GET_ARGUMENT_C("albumFz=""Fz=",nom_albumFz);
                         GET_ARGUMENT_C("postfixeFz=",nom_postfixeFz);
                         GET_ARGUMENT_I("premiereFz=",premiere_imageFz);
                         GET_ARGUMENT_I("pasFz=",pas_des_imagesFz);
                         GET_ARGUMENT_I("chiffresFz=",nombre_de_chiffresFz);

                         GET_ARGUMENT_F("aFx=",Album_Fx_amplificateur);
                         GET_ARGUMENT_F("tFx=""bFx=",Album_Fx_translateur);

                         GET_ARGUMENT_F("aFy=",Album_Fy_amplificateur);
                         GET_ARGUMENT_F("tFy=""bFy=",Album_Fy_translateur);

                         GET_ARGUMENT_F("aFz=",Album_Fz_amplificateur);
                         GET_ARGUMENT_F("tFz=""bFz=",Album_Fz_translateur);

                         GET_ARGUMENT_L("Fx_periodiser_u=""Fx_per_u=",Album_Fx_periodiser_u);
                         GET_ARGUMENT_L("Fx_symetriser_u=""Fx_sym_u=",Album_Fx_symetriser_u);
                         GET_ARGUMENT_L("Fx_prolonger_u=""Fx_pro_u=",Album_Fx_prolonger_u);
                         GET_ARGUMENT_L("Fx_periodiser_v=""Fx_per_v=",Album_Fx_periodiser_v);
                         GET_ARGUMENT_L("Fx_symetriser_v=""Fx_sym_v=",Album_Fx_symetriser_v);
                         GET_ARGUMENT_L("Fx_prolonger_v=""Fx_pro_v=",Album_Fx_prolonger_v);
                         GET_ARGUMENT_L("Fx_periodiser_w=""Fx_per_w=",Album_Fx_periodiser_w);
                         GET_ARGUMENT_L("Fx_symetriser_w=""Fx_sym_w=",Album_Fx_symetriser_w);
                         GET_ARGUMENT_L("Fx_prolonger_w=""Fx_pro_w=",Album_Fx_prolonger_w);
                         GET_ARGUMENT_F("Fx_hors=",Album_Fx_niveau_hors_album);
                         GET_ARGUMENT_L("Fx_interpoler=",Album_Fx__interpoler_bilineairement_ou_bicubiquement);
                         GET_ARGUMENT_L("Fx_lineaire=""Fx_bilineaire=",Album_Fx__utiliser_l_interpolation_bilineaire);
                         GET_ARGUMENT_N("Fx_cubique=""Fx_bicubique=",Album_Fx__utiliser_l_interpolation_bilineaire);
                                        /* Arguments introduits le 20150528104916...                                                 */

                         GET_ARGUMENT_L("Fy_periodiser_u=""Fy_per_u=",Album_Fy_periodiser_u);
                         GET_ARGUMENT_L("Fy_symetriser_u=""Fy_sym_u=",Album_Fy_symetriser_u);
                         GET_ARGUMENT_L("Fy_prolonger_u=""Fy_pro_u=",Album_Fy_prolonger_u);
                         GET_ARGUMENT_L("Fy_periodiser_v=""Fy_per_v=",Album_Fy_periodiser_v);
                         GET_ARGUMENT_L("Fy_symetriser_v=""Fy_sym_v=",Album_Fy_symetriser_v);
                         GET_ARGUMENT_L("Fy_prolonger_v=""Fy_pro_v=",Album_Fy_prolonger_v);
                         GET_ARGUMENT_L("Fy_periodiser_w=""Fy_per_w=",Album_Fy_periodiser_w);
                         GET_ARGUMENT_L("Fy_symetriser_w=""Fy_sym_w=",Album_Fy_symetriser_w);
                         GET_ARGUMENT_L("Fy_prolonger_w=""Fy_pro_w=",Album_Fy_prolonger_w);
                         GET_ARGUMENT_F("Fy_hors=",Album_Fy_niveau_hors_album);
                         GET_ARGUMENT_L("Fy_interpoler=",Album_Fy__interpoler_bilineairement_ou_bicubiquement);
                         GET_ARGUMENT_L("Fy_lineaire=""Fy_bilineaire=",Album_Fy__utiliser_l_interpolation_bilineaire);
                         GET_ARGUMENT_N("Fy_cubique=""Fy_bicubique=",Album_Fy__utiliser_l_interpolation_bilineaire);
                                        /* Arguments introduits le 20150528104916...                                                 */

                         GET_ARGUMENT_L("Fz_periodiser_u=""Fz_per_u=",Album_Fz_periodiser_u);
                         GET_ARGUMENT_L("Fz_symetriser_u=""Fz_sym_u=",Album_Fz_symetriser_u);
                         GET_ARGUMENT_L("Fz_prolonger_u=""Fz_pro_u=",Album_Fz_prolonger_u);
                         GET_ARGUMENT_L("Fz_periodiser_v=""Fz_per_v=",Album_Fz_periodiser_v);
                         GET_ARGUMENT_L("Fz_symetriser_v=""Fz_sym_v=",Album_Fz_symetriser_v);
                         GET_ARGUMENT_L("Fz_prolonger_v=""Fz_pro_v=",Album_Fz_prolonger_v);
                         GET_ARGUMENT_L("Fz_periodiser_w=""Fz_per_w=",Album_Fz_periodiser_w);
                         GET_ARGUMENT_L("Fz_symetriser_w=""Fz_sym_w=",Album_Fz_symetriser_w);
                         GET_ARGUMENT_L("Fz_prolonger_w=""Fz_pro_w=",Album_Fz_prolonger_w);
                         GET_ARGUMENT_F("Fz_hors=",Album_Fz_niveau_hors_album);
                         GET_ARGUMENT_L("Fz_interpoler=",Album_Fz__interpoler_bilineairement_ou_bicubiquement);
                         GET_ARGUMENT_L("Fz_lineaire=""Fz_bilineaire=",Album_Fz__utiliser_l_interpolation_bilineaire);
                         GET_ARGUMENT_N("Fz_cubique=""Fz_bicubique=",Album_Fz__utiliser_l_interpolation_bilineaire);
                                        /* Arguments introduits le 20150528104916...                                                 */

                         GET_ARGUMENT_L("AccelerateurALoadPoint=""AccALP="
                                       ,S_ACCELERATEUR__ALOAD_POINT_COORDONNEES_01_____utiliser_l_accelerateur
                                        );
                                        /* Arguments introduits le 20120312133002...                                                 */

                         GET_ARGUMENT_L("interpoler2D=""inter2D="
                                       ,FFload_point_coordonnees_01_____interpoler_bilineairement_ou_bicubiquement
                                        );
                         GET_ARGUMENT_N("ne_pas_interpoler2D=""ninter2D="
                                       ,FFload_point_coordonnees_01_____interpoler_bilineairement_ou_bicubiquement
                                        );
                                        /* Parametres introduits le 20090720120452 pour le mode "2D=VRAI"...                         */

                         GET_ARGUMENT_L("lineaire2D=""bilineaire2D="
                                       ,FFload_point_coordonnees_01_____utiliser_l_interpolation_bilineaire
                                        );
                         GET_ARGUMENT_N("cubique2D=""bicubique2D="
                                       ,FFload_point_coordonnees_01_____utiliser_l_interpolation_bilineaire
                                        );
                         GET_ARGUMENT_L("pasX_et_pasY2D=""pasXY2D="
                                       ,FFload_point_coordonnees_01_____utiliser_pasX_et_pasY
                                        );
                         GET_ARGUMENT_I("pasX2D=",FFload_point_coordonnees_01_____pasX);
                         GET_ARGUMENT_I("pasY2D=",FFload_point_coordonnees_01_____pasY);
                                        /* Parametres introduits le 20090720120452 pour le mode "2D=VRAI"...                         */

                         GET_ARGUMENT_L("interpoler=""inter=""interpoler3D=""inter3D="
                                       ,FFAload_point_coordonnees_01_____interpoler_bilineairement_ou_bicubiquement
                                        );
                         GET_ARGUMENT_N("ne_pas_interpoler=""ninter=""ne_pas_interpoler3D=""ninter3D="
                                       ,FFAload_point_coordonnees_01_____interpoler_bilineairement_ou_bicubiquement
                                        );
                                        /* Parametres introduits le 20090720120452.                                                  */

                         GET_ARGUMENT_L("lineaire=""bilineaire=""lineaire3D=""bilineaire3D="
                                       ,FFAload_point_coordonnees_01_____utiliser_l_interpolation_bilineaire
                                        );
                         GET_ARGUMENT_N("cubique=""bicubique=""cubique3D=""bicubique3D="
                                       ,FFAload_point_coordonnees_01_____utiliser_l_interpolation_bilineaire
                                        );
                         GET_ARGUMENT_L("pasX_et_pasY_et_pasZ=""pasXYZ=""pasX_et_pasY_et_pasZ3D=""pasXYZ3D="
                                       ,FFAload_point_coordonnees_01_____utiliser_pasX_et_pasY_et_pasZ
                                        );
                         GET_ARGUMENT_I("pasX=""pasX3D=",FFAload_point_coordonnees_01_____pasX);
                         GET_ARGUMENT_I("pasY=""pasY3D=",FFAload_point_coordonnees_01_____pasY);
                         GET_ARGUMENT_I("pasZ=""pasZ3D=",FFAload_point_coordonnees_01_____pasZ);

                         PROCESS_ARGUMENTS_DE_DERIVATION_PARTIELLE_NUMERIQUE;

                         PROCESS_ARGUMENTS_DE_COLORIAGE;

                         PROCESS_ARGUMENTS_DE_VISUALISATION;

                         PROCESS_ARGUMENTS_DE_PERMUTATION_DES_COORDONNEES_ET_DES_DIFFERENTIELLES;
                                        /* Introduit le 20050623090501.                                                              */

                         PROCESS_ARGUMENTS_DE_TRANSFORMATION_DE_u_v_w;
                                        /* Introduit le 20060530144819...                                                            */

                         PROCESS_ARGUMENTS_DE_VISUALISATION_DE_LA_TEXTURE;
                                        /* Introduit le 20050622101102...                                                            */

                         PROCESS_ARGUMENTS_DE_DEFINITION_DES_COORDONNEES_CURVILIGNES;

                         PROCESS_ARGUMENTS_DE_GESTION_DE_LA_RELATIVITE_RESTREINTE;
                         )
                    );

#include  xrs/volumes.12.I"
                                        /* Visualisation et evolution du volume au cours du temps...                                 */

     Test(IL_NE_FAUT_PAS(visualiser_une_variete_tridimensionnelle))
          Bblock
          EGAL(pas_de_w,DIVI(SOUS(maximum_de_w,minimum_de_w),dimZN));
                                        /* Lorsque l'on doit visualiser une (ou plusieurs) variete(s) bidimensionnelle(s), le        */
                                        /* pas de 'w' doit etre force. Ceci fut introduit le 20060504111145...                       */
          EGAL(echantillonnage_de_w,ECHANTILLONNAGE_DE_u_DE_v_ET_DE_w);
          EGAL(translation_de_l_echantillonnage_de_w,TRANSLATION_DE_L_ECHANTILLONNAGE_DE_u_DE_v_ET_DE_w);
          EGAL(diviseur_du_pas_de_w,DIVISEUR_DU_PAS_DE_u_DE_v_ET_DE_w);
          EGAL(diviseur_de_differentiation_de_w,DIVISEUR_DE_DIFFERENTIATION_DE_u_DE_v_ET_DE_w);
                                        /* Mise en place a priori des valeurs par defaut (introduit le 20060509091338 car manquait). */
          Eblock
     ATes
          Bblock
          Eblock
     ETes

     begin_nouveau_block
          Bblock
          BDEFV(albumF,Album_Fx);
          BDEFV(albumF,Album_Fy);
          BDEFV(albumF,Album_Fz);
                                        /* Definition des trois projections.                                                         */

          CALi(dAloadF_album(Album_Fx
                            ,nom_albumFx
                            ,nom_postfixeFx
                            ,premiere_imageFx
                            ,pas_des_imagesFx
                            ,nombre_de_chiffresFx
                            ,FAUX
                            ,UNDEF
                            ,FAUX
                             )
               );
          CALi(dAloadF_album(Album_Fy
                            ,nom_albumFy
                            ,nom_postfixeFy
                            ,premiere_imageFy
                            ,pas_des_imagesFy
                            ,nombre_de_chiffresFy
                            ,FAUX
                            ,UNDEF
                            ,FAUX
                             )
               );
          CALi(dAloadF_album(Album_Fz
                            ,nom_albumFz
                            ,nom_postfixeFz
                            ,premiere_imageFz
                            ,pas_des_imagesFz
                            ,nombre_de_chiffresFz
                            ,FAUX
                            ,UNDEF
                            ,FAUX
                             )
               );
                                        /* L'argument 'Inv' ('FAUX') a ete introduit le 20091125135306...                            */

          VISUALISATION_DU_VOLUME_AVEC_DIFFERENCES_ET_AVEC_TEXTURAGE____(BLOC(VIDE;)
                                                                        ,Fx_Projector3D_1,Fy_Projector3D_1,Fz_Projector3D_1
                                        /* Fonctions definissant parametriquement la surface...                                      */
                                                                        ,Pxyz_Projector3D_1
                                                                        ,BLOC(VIDE;)
                                        /* Il n'y a rien de specifique a calculer pour le point courant...                           */
                                                                         );

          EDEFV(albumF,Album_Fz);
          EDEFV(albumF,Album_Fy);
          EDEFV(albumF,Album_Fx);
                                        /* Definition des trois projections.                                                         */
          Eblock
     end_nouveau_block

     ESaveModifyVariable(Logical,S_ACCELERATEUR__ALOAD_POINT_COORDONNEES_01_____utiliser_l_accelerateur);

     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.