/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N S   R E L A T I V E S   A   L A   D E R I V A T I O N   F O R M E L L E                                */
/*        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$I' :                                                                                          */
/*                                                                                                                                   */
/*                    Jean-Francois Colonna (LACTAMME, 20050619172156).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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 '  :                                                     */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition ('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)                                                              */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
                                        /* 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 'Fx(u,v,w)' 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...   */

#define   PAGE_COURANTE_D_UN_ALBUM(album,w)                                                                                             \
                    PAGE(album,_cDENORMALISE_OZ(SOUS(w,minimum_de_w)))                                                                  \
                                        /* Acces a la page courante d'un certain album en fonction de la coordonnee courante 'w'.    */ \
                                        /* Ceci fut introduit le 20060504111645...                                                   */

#define   Fx_Projector3D_1(u,v,w)                                                                                                       \
                    AXPB(Album_Fx_amplificateur                                                                                         \
                        ,COND(IL_FAUT(visualiser_une_variete_tridimensionnelle)                                                         \
                             ,gFFAload_point_coordonnees_01(Album_Fx                                                                    \
                                                           ,u                                                                           \
                                                           ,v                                                                           \
                                                           ,w                                                                           \
                                                           ,Album_Fx_periodiser_u                                                       \
                                                           ,Album_Fx_periodiser_v                                                       \
                                                           ,Album_Fx_periodiser_w                                                       \
                                                           ,Album_Fx_symetriser_u                                                       \
                                                           ,Album_Fx_symetriser_v                                                       \
                                                           ,Album_Fx_symetriser_w                                                       \
                                                           ,Album_Fx_prolonger_u                                                        \
                                                           ,Album_Fx_prolonger_v                                                        \
                                                           ,Album_Fx_prolonger_w                                                        \
                                                           ,Album_Fx_niveau_hors_album                                                  \
                                                           ,Album_Fx__interpoler_bilineairement_ou_bicubiquement                        \
                                                           ,Album_Fx__utiliser_l_interpolation_bilineaire                               \
                                                            )                                                                           \
                             ,gFFload_point_coordonnees_01(PAGE_COURANTE_D_UN_ALBUM(Album_Fx,w)                                         \
                                                          ,u                                                                            \
                                                          ,v                                                                            \
                                                          ,Album_Fx_periodiser_u                                                        \
                                                          ,Album_Fx_periodiser_v                                                        \
                                                          ,Album_Fx_symetriser_u                                                        \
                                                          ,Album_Fx_symetriser_v                                                        \
                                                          ,Album_Fx_prolonger_u                                                         \
                                                          ,Album_Fx_prolonger_v                                                         \
                                                          ,Album_Fx_niveau_hors_album                                                   \
                                                          ,Album_Fx__interpoler_bilineairement_ou_bicubiquement                         \
                                                          ,Album_Fx__utiliser_l_interpolation_bilineaire                                \
                                                           )                                                                            \
                              )                                                                                                         \
                        ,Album_Fx_translateur                                                                                           \
                         )                                                                                                              \
                                        /* Definition de la fonction F (u,v,w).                                                      */ \
                                        /*                            x                                                              */
#define   Fy_Projector3D_1(u,v,w)                                                                                                       \
                    AXPB(Album_Fy_amplificateur                                                                                         \
                        ,COND(IL_FAUT(visualiser_une_variete_tridimensionnelle)                                                         \
                             ,gFFAload_point_coordonnees_01(Album_Fy                                                                    \
                                                           ,u                                                                           \
                                                           ,v                                                                           \
                                                           ,w                                                                           \
                                                           ,Album_Fy_periodiser_u                                                       \
                                                           ,Album_Fy_periodiser_v                                                       \
                                                           ,Album_Fy_periodiser_w                                                       \
                                                           ,Album_Fy_symetriser_u                                                       \
                                                           ,Album_Fy_symetriser_v                                                       \
                                                           ,Album_Fy_symetriser_w                                                       \
                                                           ,Album_Fy_prolonger_u                                                        \
                                                           ,Album_Fy_prolonger_v                                                        \
                                                           ,Album_Fy_prolonger_w                                                        \
                                                           ,Album_Fy_niveau_hors_album                                                  \
                                                           ,Album_Fy__interpoler_bilineairement_ou_bicubiquement                        \
                                                           ,Album_Fy__utiliser_l_interpolation_bilineaire                               \
                                                            )                                                                           \
                             ,gFFload_point_coordonnees_01(PAGE_COURANTE_D_UN_ALBUM(Album_Fy,w)                                         \
                                                          ,u                                                                            \
                                                          ,v                                                                            \
                                                          ,Album_Fy_periodiser_u                                                        \
                                                          ,Album_Fy_periodiser_v                                                        \
                                                          ,Album_Fy_symetriser_u                                                        \
                                                          ,Album_Fy_symetriser_v                                                        \
                                                          ,Album_Fy_prolonger_u                                                         \
                                                          ,Album_Fy_prolonger_v                                                         \
                                                          ,Album_Fy_niveau_hors_album                                                   \
                                                          ,Album_Fy__interpoler_bilineairement_ou_bicubiquement                         \
                                                          ,Album_Fy__utiliser_l_interpolation_bilineaire                                \
                                                           )                                                                            \
                              )                                                                                                         \
                        ,Album_Fy_translateur                                                                                           \
                         )                                                                                                              \
                                        /* Definition de la fonction F (u,v,w).                                                      */ \
                                        /*                            y                                                              */
#define   Fz_Projector3D_1(u,v,w)                                                                                                       \
                    AXPB(Album_Fz_amplificateur                                                                                         \
                        ,COND(IL_FAUT(visualiser_une_variete_tridimensionnelle)                                                         \
                             ,gFFAload_point_coordonnees_01(Album_Fz                                                                    \
                                                           ,u                                                                           \
                                                           ,v                                                                           \
                                                           ,w                                                                           \
                                                           ,Album_Fz_periodiser_u                                                       \
                                                           ,Album_Fz_periodiser_v                                                       \
                                                           ,Album_Fz_periodiser_w                                                       \
                                                           ,Album_Fz_symetriser_u                                                       \
                                                           ,Album_Fz_symetriser_v                                                       \
                                                           ,Album_Fz_symetriser_w                                                       \
                                                           ,Album_Fz_prolonger_u                                                        \
                                                           ,Album_Fz_prolonger_v                                                        \
                                                           ,Album_Fz_prolonger_w                                                        \
                                                           ,Album_Fz_niveau_hors_album                                                  \
                                                           ,Album_Fz__interpoler_bilineairement_ou_bicubiquement                        \
                                                           ,Album_Fz__utiliser_l_interpolation_bilineaire                               \
                                                            )                                                                           \
                             ,gFFload_point_coordonnees_01(PAGE_COURANTE_D_UN_ALBUM(Album_Fz,w)                                         \
                                                          ,u                                                                            \
                                                          ,v                                                                            \
                                                          ,Album_Fz_periodiser_u                                                        \
                                                          ,Album_Fz_periodiser_v                                                        \
                                                          ,Album_Fz_symetriser_u                                                        \
                                                          ,Album_Fz_symetriser_v                                                        \
                                                          ,Album_Fz_prolonger_u                                                         \
                                                          ,Album_Fz_prolonger_v                                                         \
                                                          ,Album_Fz_niveau_hors_album                                                   \
                                                          ,Album_Fz__interpoler_bilineairement_ou_bicubiquement                         \
                                                          ,Album_Fz__utiliser_l_interpolation_bilineaire                                \
                                                           )                                                                            \
                              )                                                                                                         \
                        ,Album_Fz_translateur                                                                                           \
                         )                                                                                                              \
                                        /* Definition de la fonction F (u,v,w).                                                      */ \
                                        /*                            z                                                              */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        I N I T I A L I S A T I O N S   R E L A T I V E S   A   L A   P S E U D O - P R O J E C T I O N  :                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Pxyz_Projector3D_1                                                                                                            \
                    Bblock                                                                                                              \
                    BLOC(VIDE;);                                                                                                        \
                    Eblock
                                        /* Initialisations specifiques a cette surface destinees a permettre la reinjection des      */
                                        /* trois pseudo-projections {Projection_de_Fx,Projection_de_Fy,Projection_de_Fz} dans        */
                                        /* 'v $xrs/project3D.11$K' (introduit le 20050628104044)...                                  */



Copyright © Jean-François Colonna, 2019-2021.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / Ecole Polytechnique, 2019-2021.