/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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   B I D I M E N S I O N N E L  :                                                               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xrs/project2D.11$I' :                                                                                          */
/*                                                                                                                                   */
/*                    Jean-Francois Colonna (LACTAMME, 20041107112321).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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/project2D.11$K') :                                                                                     */
/*                                                                                                                                   */
/*                    Le projector bidimensionnel est defini parametriquement                                                        */
/*                  en fonction des deux parametres 'u'                                                                              */
/*                  (appele aussi 'distance polaire' ou                                                                              */
/*                  'theta' ou encore 'latitude') et 'v'                                                                             */
/*                  (appele aussi 'longitude' ou 'phi') :                                                                            */
/*                                                                                                                                   */
/*                                      F (u,v) = A .ImageX(u,v) + T                                                                 */
/*                                       x         x                x                                                                */
/*                                                                                                                                   */
/*                                      F (u,v) = A .ImageY(u,v) + T                                                                 */
/*                                       y         y                y                                                                */
/*                                                                                                                                   */
/*                                      F (u,v) = A .ImageZ(u,v) + T                                                                 */
/*                                       z         z                z                                                                */
/*                                                                                                                                   */
/*                  (ou 'Image?(u,v)' sont des images flottantes indexees                                                            */
/*                  par (u,v) -coordonnees flottantes {Xf,Yf} respectivement-                                                        */
/*                  a l'aide d'une procedure d'interpolation bicubique)                                                              */
/*                                                                                                                                   */
/*                  avec :                                                                                                           */
/*                                                                                                                                   */
/*                                      u E [ 0 , 1 ]       (--O--> Xf)                                                              */
/*                                                                                                                                   */
/*                                      v E [ 0 , 1 ]       (--O--> Yf)                                                              */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
                                        /* 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)' 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...   */

                                        /* Nota : les noms '*_Projector_1' ont ete changes en '*_Projector_2' le 20050619170106,     */
                                        /* puis en '*_Projector2D_1' le 20050620102241...                                            */

#define   Fx_Projector2D_1(u,v)                                                                                                         \
                    AXPB(Image_Fx_amplificateur                                                                                         \
                        ,gFFload_point_coordonnees_01(Image_Fx                                                                          \
                                                     ,u                                                                                 \
                                                     ,v                                                                                 \
                                                     ,Image_Fx_periodiser_u                                                             \
                                                     ,Image_Fx_periodiser_v                                                             \
                                                     ,Image_Fx_symetriser_u                                                             \
                                                     ,Image_Fx_symetriser_v                                                             \
                                                     ,Image_Fx_prolonger_u                                                              \
                                                     ,Image_Fx_prolonger_v                                                              \
                                                     ,Image_Fx_niveau_hors_image                                                        \
                                                     ,Image_Fx__interpoler_bilineairement_ou_bicubiquement                              \
                                                     ,Image_Fx__utiliser_l_interpolation_bilineaire                                     \
                                                      )                                                                                 \
                        ,Image_Fx_translateur                                                                                           \
                         )                                                                                                              \
                                        /* Definition de la fonction F (u,v).                                                        */ \
                                        /*                            x                                                              */ \
                                        /*                                                                                           */ \
                                        /* Le 20041113111928, j'ai voulu remplacer {u,v} par {u_NORMALISEE,v_NORMALISEE}, mais       */ \
                                        /* cela ne marche evidemment pas car, en effet, on veut pouvoir n'exploiter qu'une partie    */ \
                                        /* d'une image 'Image_F?'. C'est par exemple le cas dans 'v $xiirs/.PROJ.11.1.$U Mu=0.5'     */ \
                                        /* et une 'NORM(...)' sur {u,v} ferait perdre cette possibilite...                           */
#define   Fy_Projector2D_1(u,v)                                                                                                         \
                    AXPB(Image_Fy_amplificateur                                                                                         \
                        ,gFFload_point_coordonnees_01(Image_Fy                                                                          \
                                                     ,u                                                                                 \
                                                     ,v                                                                                 \
                                                     ,Image_Fy_periodiser_u                                                             \
                                                     ,Image_Fy_periodiser_v                                                             \
                                                     ,Image_Fy_symetriser_u                                                             \
                                                     ,Image_Fy_symetriser_v                                                             \
                                                     ,Image_Fy_prolonger_u                                                              \
                                                     ,Image_Fy_prolonger_v                                                              \
                                                     ,Image_Fy_niveau_hors_image                                                        \
                                                     ,Image_Fy__interpoler_bilineairement_ou_bicubiquement                              \
                                                     ,Image_Fy__utiliser_l_interpolation_bilineaire                                     \
                                                      )                                                                                 \
                        ,Image_Fy_translateur                                                                                           \
                         )                                                                                                              \
                                        /* Definition de la fonction F (u,v).                                                        */ \
                                        /*                            y                                                              */ \
                                        /*                                                                                           */ \
                                        /* Le 20041113111928, j'ai voulu remplacer {u,v} par {u_NORMALISEE,v_NORMALISEE}, mais       */ \
                                        /* cela ne marche evidemment pas car, en effet, on veut pouvoir n'exploiter qu'une partie    */ \
                                        /* d'une image 'Image_F?'. C'est par exemple le cas dans 'v $xiirs/.PROJ.11.1.$U Mu=0.5'     */ \
                                        /* et une 'NORM(...)' sur {u,v} ferait perdre cette possibilite...                           */
#define   Fz_Projector2D_1(u,v)                                                                                                         \
                    AXPB(Image_Fz_amplificateur                                                                                         \
                        ,gFFload_point_coordonnees_01(Image_Fz                                                                          \
                                                     ,u                                                                                 \
                                                     ,v                                                                                 \
                                                     ,Image_Fz_periodiser_u                                                             \
                                                     ,Image_Fz_periodiser_v                                                             \
                                                     ,Image_Fz_symetriser_u                                                             \
                                                     ,Image_Fz_symetriser_v                                                             \
                                                     ,Image_Fz_prolonger_u                                                              \
                                                     ,Image_Fz_prolonger_v                                                              \
                                                     ,Image_Fz_niveau_hors_image                                                        \
                                                     ,Image_Fz__interpoler_bilineairement_ou_bicubiquement                              \
                                                     ,Image_Fz__utiliser_l_interpolation_bilineaire                                     \
                                                      )                                                                                 \
                        ,Image_Fz_translateur                                                                                           \
                         )                                                                                                              \
                                        /* Definition de la fonction F (u,v).                                                        */ \
                                        /*                            z                                                              */ \
                                        /*                                                                                           */ \
                                        /* Le 20041113111928, j'ai voulu remplacer {u,v} par {u_NORMALISEE,v_NORMALISEE}, mais       */ \
                                        /* cela ne marche evidemment pas car, en effet, on veut pouvoir n'exploiter qu'une partie    */ \
                                        /* d'une image 'Image_F?'. C'est par exemple le cas dans 'v $xiirs/.PROJ.11.1.$U Mu=0.5'     */ \
                                        /* et une 'NORM(...)' sur {u,v} ferait perdre cette possibilite...                           */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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_Projector2D_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/project2D.11$K' (introduit le 20050203103720)...                                  */



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