/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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 E   S U R F A C E   D E   H O R N E R   " C I R C U L A I R E "   D U   D E U X I E M E   D E G R E  :             */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xrs/Horner42.11$I' :                                                                                           */
/*                                                                                                                                   */
/*                    Jean-Francois Colonna (LACTAMME, 20201012122312).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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 de la surface ('v $xrs/Horner42.11$K') :                                                                        */
/*                                                                                                                                   */
/*                    La surface 'circulaire' de Horner                                                                              */
/*                  est definie 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) = RX.HORNER_4_02(cos(u),sin(u),cos(v),sin(v),{pXijkl})                               */
/*                                       x                                                                                           */
/*                                                                                                                                   */
/*                                      F (u,v) = RY.HORNER_4_02(cos(u),sin(u),cos(v),sin(v),{pYijkl})                               */
/*                                       y                                                                                           */
/*                                                                                                                                   */
/*                                      F (u,v) = RZ.HORNER_4_02(cos(u),sin(u),cos(v),sin(v),{pZijkl})                               */
/*                                       z                                                                                           */
/*                                                                                                                                   */
/*                  ('v $ximd/operator.1$FON HORNER_4_02') avec :                                                                    */
/*                                                                                                                                   */
/*                                      {pXijkl} un ensemble de coefficients (i,j,k,l E {0,1,2})                                     */
/*                                      {pYijkl} un ensemble de coefficients (i,j,k,l E {0,1,2})                                     */
/*                                      {pZijkl} un ensemble de coefficients (i,j,k,l E {0,1,2})                                     */
/*                                                                                                                                   */
/*                  et :                                                                                                             */
/*                                      u E [ 0 , p ]                                                                                */
/*                                                                                                                                   */
/*                                      v E [ 0 , 2.p ]                                                                              */
/*                                                                                                                                   */
/*                  (ou 'p' designe 'pi').                                                                                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
                                        /* 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...   */

#define   Fx_Horner42_1(u,v)                                                                                                            \
                    MUL2(parametre_RX                                                                                                   \
                        ,HORNER_4_02(COSX(u),SINX(u),COSX(v),SINX(v)                                                                    \
                                    ,pX_a2222,pX_a2221,pX_a2220,pX_a2212,pX_a2211,pX_a2210,pX_a2202,pX_a2201,pX_a2200                   \
                                    ,pX_a2122,pX_a2121,pX_a2120,pX_a2112,pX_a2111,pX_a2110,pX_a2102,pX_a2101,pX_a2100                   \
                                    ,pX_a2022,pX_a2021,pX_a2020,pX_a2012,pX_a2011,pX_a2010,pX_a2002,pX_a2001,pX_a2000                   \
                                    ,pX_a1222,pX_a1221,pX_a1220,pX_a1212,pX_a1211,pX_a1210,pX_a1202,pX_a1201,pX_a1200                   \
                                    ,pX_a1122,pX_a1121,pX_a1120,pX_a1112,pX_a1111,pX_a1110,pX_a1102,pX_a1101,pX_a1100                   \
                                    ,pX_a1022,pX_a1021,pX_a1020,pX_a1012,pX_a1011,pX_a1010,pX_a1002,pX_a1001,pX_a1000                   \
                                    ,pX_a0222,pX_a0221,pX_a0220,pX_a0212,pX_a0211,pX_a0210,pX_a0202,pX_a0201,pX_a0200                   \
                                    ,pX_a0122,pX_a0121,pX_a0120,pX_a0112,pX_a0111,pX_a0110,pX_a0102,pX_a0101,pX_a0100                   \
                                    ,pX_a0022,pX_a0021,pX_a0020,pX_a0012,pX_a0011,pX_a0010,pX_a0002,pX_a0001,pX_a0000                   \
                                     )                                                                                                  \
                         )
                                        /* Definition de la fonction F (u,v).                                                        */
                                        /*                            x                                                              */
#define   Fy_Horner42_1(u,v)                                                                                                            \
                    MUL2(parametre_RY                                                                                                   \
                        ,HORNER_4_02(COSX(u),SINX(u),COSX(v),SINX(v)                                                                    \
                                    ,pY_a2222,pY_a2221,pY_a2220,pY_a2212,pY_a2211,pY_a2210,pY_a2202,pY_a2201,pY_a2200                   \
                                    ,pY_a2122,pY_a2121,pY_a2120,pY_a2112,pY_a2111,pY_a2110,pY_a2102,pY_a2101,pY_a2100                   \
                                    ,pY_a2022,pY_a2021,pY_a2020,pY_a2012,pY_a2011,pY_a2010,pY_a2002,pY_a2001,pY_a2000                   \
                                    ,pY_a1222,pY_a1221,pY_a1220,pY_a1212,pY_a1211,pY_a1210,pY_a1202,pY_a1201,pY_a1200                   \
                                    ,pY_a1122,pY_a1121,pY_a1120,pY_a1112,pY_a1111,pY_a1110,pY_a1102,pY_a1101,pY_a1100                   \
                                    ,pY_a1022,pY_a1021,pY_a1020,pY_a1012,pY_a1011,pY_a1010,pY_a1002,pY_a1001,pY_a1000                   \
                                    ,pY_a0222,pY_a0221,pY_a0220,pY_a0212,pY_a0211,pY_a0210,pY_a0202,pY_a0201,pY_a0200                   \
                                    ,pY_a0122,pY_a0121,pY_a0120,pY_a0112,pY_a0111,pY_a0110,pY_a0102,pY_a0101,pY_a0100                   \
                                    ,pY_a0022,pY_a0021,pY_a0020,pY_a0012,pY_a0011,pY_a0010,pY_a0002,pY_a0001,pY_a0000                   \
                                     )                                                                                                  \
                         )
                                        /* Definition de la fonction F (u,v).                                                        */
                                        /*                            y                                                              */
#define   Fz_Horner42_1(u,v)                                                                                                            \
                    MUL2(parametre_RZ                                                                                                   \
                        ,HORNER_4_02(COSX(u),SINX(u),COSX(v),SINX(v)                                                                    \
                                    ,pZ_a2222,pZ_a2221,pZ_a2220,pZ_a2212,pZ_a2211,pZ_a2210,pZ_a2202,pZ_a2201,pZ_a2200                   \
                                    ,pZ_a2122,pZ_a2121,pZ_a2120,pZ_a2112,pZ_a2111,pZ_a2110,pZ_a2102,pZ_a2101,pZ_a2100                   \
                                    ,pZ_a2022,pZ_a2021,pZ_a2020,pZ_a2012,pZ_a2011,pZ_a2010,pZ_a2002,pZ_a2001,pZ_a2000                   \
                                    ,pZ_a1222,pZ_a1221,pZ_a1220,pZ_a1212,pZ_a1211,pZ_a1210,pZ_a1202,pZ_a1201,pZ_a1200                   \
                                    ,pZ_a1122,pZ_a1121,pZ_a1120,pZ_a1112,pZ_a1111,pZ_a1110,pZ_a1102,pZ_a1101,pZ_a1100                   \
                                    ,pZ_a1022,pZ_a1021,pZ_a1020,pZ_a1012,pZ_a1011,pZ_a1010,pZ_a1002,pZ_a1001,pZ_a1000                   \
                                    ,pZ_a0222,pZ_a0221,pZ_a0220,pZ_a0212,pZ_a0211,pZ_a0210,pZ_a0202,pZ_a0201,pZ_a0200                   \
                                    ,pZ_a0122,pZ_a0121,pZ_a0120,pZ_a0112,pZ_a0111,pZ_a0110,pZ_a0102,pZ_a0101,pZ_a0100                   \
                                    ,pZ_a0022,pZ_a0021,pZ_a0020,pZ_a0012,pZ_a0011,pZ_a0010,pZ_a0002,pZ_a0001,pZ_a0000                   \
                                     )                                                                                                  \
                         )
                                        /* Definition de la fonction F (u,v).                                                        */
                                        /*                            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_Horner42_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'...                                                                */



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