/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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   C U B E   A R R O N D I  :                                                                                       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xrs/cube.11$I' :                                                                                               */
/*                                                                                                                                   */
/*                    Jean-Francois Colonna (LACTAMME, 19990519113903).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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/cube.11$K') :                                                                                          */
/*                                                                                                                                   */
/*                    Le cube 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) = R.Dsin(u).Dcos(v)                                                                  */
/*                                       x                                                                                           */
/*                                                                                                                                   */
/*                                      F (u,v) = R.Dsin(u).Dsin(v)                                                                  */
/*                                       y                                                                                           */
/*                                                                                                                                   */
/*                                      F (u,v) = R.Dcos(u)                                                                          */
/*                                       z                                                                                           */
/*                                                                                                                                   */
/*                  avec :                                                                                                           */
/*                                                                                                                                   */
/*                                                    sin(1.t)     sin(3.t)     sin(5.t)     sin(7.t)     sin(9.t)     sin(11.t)     */
/*                                      Dsin(t) = K.[---------- - ---------- + ---------- - ---------- + ---------- - -----------]   */
/*                                                        2            2            2            2            2             2        */
/*                                                       1            3            5            7            9            11         */
/*                                                                                                                                   */
/*                                      Dcos(t) = Dsin(t + (p/2))                                                                    */
/*                                                                                                                                   */
/*                  (voir l'Aide-Memoire de Mathematiques,                                                                           */
/*                  page 840 pour le developpement en Serie                                                                          */
/*                  de Fourier des "Dents de Scie" qui indique                                                                       */
/*                  que 'K' devrait valoir 4/p divise par p/2                                                                        */
/*                  -qui est le maximum de la fonction- ce qui                                                                       */
/*                  est trop, peut-etre parce qu'il n'y a pas                                                                        */
/*                  assez de termes dans le developpement...)                                                                        */
/*                  avec :                                                                                                           */
/*                                                                                                                                   */
/*                                      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   CoefficientNormalisation_Cube_1                                                                                               \
-_-_-_-             coefficient_de_renormalisation
                                        /* Ce coefficient (appele 'K' dans les formules ci-dessus) est determine "experimentalement" */
                                        /* grace au programme 'v $xtc/DentScie.01$c' ; il est egal a :                               */
                                        /*                                                                                           */
                                        /*                  MAX2(ABSO(min),ABSO(max))                                                */
                                        /*                                                                                           */
                                        /* ou {min,max} designent les extrema edites par ce programme...                             */
                                        /*                                                                                           */
                                        /* Jusqu'au 20060526174621, la definition precedente etait :                                 */
                                        /*                                                                                           */
                                        /*                  -define   CoefficientNormalisation_Cube_1                             \  */
                                        /*                  -_-_-_-             PARE(1.1921275137943792)                             */
                                        /*                                                                                           */
                                        /* mais c'est quand meme preferable de le determiner automatiquement. A la date du           */
                                        /* 20060526183847, il vaut 1.1921275137943794...                                             */
-define   DSINX_1_1(t)                                                                                                                  \
-_-_-_-                       NEUT(DIVI(SINX(GRO1(t)),EXP2(UN)))
-define   DSINX_1_3(t)                                                                                                                  \
-_-_-_-                       NEGA(DIVI(SINX(GRO3(t)),EXP2(TROIS)))
-define   DSINX_1_5(t)                                                                                                                  \
-_-_-_-                       NEUT(DIVI(SINX(GRO5(t)),EXP2(CINQ)))
-define   DSINX_1_7(t)                                                                                                                  \
-_-_-_-                       NEGA(DIVI(SINX(GRO7(t)),EXP2(SEPT)))
-define   DSINX_1_9(t)                                                                                                                  \
-_-_-_-                       NEUT(DIVI(SINX(GRO9(t)),EXP2(NEUF)))
-define   DSINX_1_B(t)                                                                                                                  \
-_-_-_-                       NEGA(DIVI(SINX(GRO11(t)),EXP2(ONZE)))
                                        /* Definitions introduites le afin de determiner 'CoefficientNormalisation_Cube_1'           */
                                        /* automatiquement dans 'v $xrs/cube.11$K coefficient_de_renormalisation'.                   */
-define   DSINX_1(t)                                                                                                                    \
-_-_-_-             MUL2(INVE(CoefficientNormalisation_Cube_1)                                                                          \
-_-_-_-                 ,ADD6(DSINX_1_1(t)                                                                                              \
-_-_-_-                      ,DSINX_1_3(t)                                                                                              \
-_-_-_-                      ,DSINX_1_5(t)                                                                                              \
-_-_-_-                      ,DSINX_1_7(t)                                                                                              \
-_-_-_-                      ,DSINX_1_9(t)                                                                                              \
-_-_-_-                      ,DSINX_1_B(t)                                                                                              \
-_-_-_-                       )                                                                                                         \
-_-_-_-                  )
-define   DCOSX_1(t)                                                                                                                    \
-_-_-_-             DSINX_1(ADD2(t,PI_SUR_2))
                                        /* Definition des fonctions 'cos(...)' et 'sin(...)' dites "en Dents de scie". On notera     */
                                        /* qu'il est preferable que le nombre de termes du developpement definissant 'DSINX_1(...)'  */
                                        /* soit pair (ici 6=2*3), et ce afin d'assurer la compatibilite avec le programme de test    */
                                        /* 'v $xtc/DentScie.01$c NTERMES'.                                                           */

-define   Fx_Cube_1(u,v)                                                                                                                \
-_-_-_-             ADD2(MUL2(MUL2(parametre_r,DCOSX_1(v)),DSINX_1(u))                                                                  \
-_-_-_-                 ,FZERO                                                                                                          \
-_-_-_-                  )
                                        /* Definition de la fonction F (u,v).                                                        */
                                        /*                            x                                                              */
-define   Fy_Cube_1(u,v)                                                                                                                \
-_-_-_-             ADD2(MUL2(MUL2(parametre_r,DSINX_1(v)),DSINX_1(u))                                                                  \
-_-_-_-                 ,FZERO                                                                                                          \
-_-_-_-                  )
                                        /* Definition de la fonction F (u,v).                                                        */
                                        /*                            y                                                              */
-define   Fz_Cube_1(u,v)                                                                                                                \
-_-_-_-             ADD2(MUL2(parametre_r,DCOSX_1(u))                                                                                   \
-_-_-_-                 ,FZERO                                                                                                          \
-_-_-_-                  )
                                        /* 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_Cube_1                                                                                                                   \
-_-_-_-             Bblock                                                                                                              \
-_-_-_-             EGAL(minimum_de_u,FZERO);                                                                                           \
-_-_-_-             EGAL(maximum_de_u,CERCLE_TRIGONOMETRIQUE);                                                                          \
-_-_-_-             EGAL(minimum_de_v,FZERO);                                                                                           \
-_-_-_-             EGAL(maximum_de_v,CERCLE_TRIGONOMETRIQUE);                                                                          \
-_-_-_-                                 /* Afin d'assurer la periodicite du champ...                                                 */ \
-_-_-_-             iTRANSFORMAT_31(liste_PARAMETRE_R,FU);                                                                              \
-_-_-_-                                 /* Afin de definir un cube "unite"...                                                        */ \
-_-_-_-             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 20050203092638)...                                  */



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