/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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 S E U D O - T O R E   " E P Y C Y C L O I D A L "   T R I D I M E N S I O N N E L  :                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xrs/epicycloide.11$I' :                                                                                        */
/*                                                                                                                                   */
/*                    Jean-Francois Colonna (LACTAMME, 20161212101434).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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/epicycloide.11$K') :                                                                                   */
/*                                                                                                                                   */
/*                    Le pseudo-tore "epicycloidal 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') :                                                                            */
/*                                                                                                                                   */
/*                                      XPlan(u,v) = B.cos(C.v) - D.cos(E.v)                                                         */
/*                                      YPlan(u,v) = F.sin(G.v) - H.sin(I.v)                                                         */
/*                                                                              Courbe "epicycloidale bidimensionnelle".             */
/*                                                                                                                                   */
/*                                      dXPlan(u,v) = d#XPlan(u,v)                                                                   */
/*                                      dYPlan(u,v) = d#YPlan(u,v)                                                                   */
/*                                                                              La tangente T est donc {+dXPlan(u,v),+dYPlan(u,v).   */
/*                                                                                                                                   */
/*                                      Psi(u,v) = arctg(-dXPlan(u,v),+dYPlan(u,v))                                                  */
/*                                                                              La normale N est orthogonale a la tangente T         */
/*                                                                              et est donc {+dYPlan(u,v),-dXPlan(u,v)}.             */
/*                                                                                                                                   */
/*                                      Xellipse(u,v) = Ra.cos(u)                                                                    */
/*                                      Yellipse(u,v) = 0                                                                            */
/*                                      Zellipse(u,v) = Rb.sin(u)                                                                    */
/*                                                                              Definition d'une ellipse dans le plan {OX,OZ}.       */
/*                                                                                                                                   */
/*                                      F (u,v) = [Xellipse(u,v)*cos(psi)] - [Yellipse(u,v)*sin(psi)] + XPlan(u,v)                   */
/*                                       x                                                                                           */
/*                                                                                                                                   */
/*                                      F (u,v) = [Xellipse(u,v)*sin(psi)] + [Yellipse(u,v)*cos(psi)] + YPlan(u,v)                   */
/*                                       y                                                                                           */
/*                                                                                                                                   */
/*                                      F (u,v) = Zellipse(u,v)                                                                      */
/*                                       z                                                                                           */
/*                                                                              Definition d'une ellipse dont le centre est le point */
/*                                                                              courant {XPlan(u,v),YPlan(u,v),0} et situee dans le  */
/*                                                                              plan {N,OZ}.                                         */
/*                                                                                                                                   */
/*                  et (parametres par defaut) :                                                                                     */
/*                                                                                                                                   */
/*                                      A = +8                                                                                       */
/*                                      a = +1                                                                                       */
/*                                      L = +4                                                                                       */
/*                                                                                                                                   */
/*                                      B = F = A+a         (=+9.0)                                                                  */
/*                                      C = G = 1           (=+1.0)                                                                  */
/*                                      D = H = L.a         (=+4.0)                                                                  */
/*                                      E = I = (A+a)/a     (=+9.0)                                                                  */
/*                                                                                                                                   */
/*                  avec :                                                                                                           */
/*                                                                                                                                   */
/*                                      u E [ 0 , 2.p ]                                                                              */
/*                                                                                                                                   */
/*                                      v E [ 0 , 2.p ]                                                                              */
/*                                                                                                                                   */
/*                  (ou 'p' designe 'pi').                                                                                           */
/*                                                                                                                                   */
/*                    Tout ceci est tres inspire de 'v $xtc/epicycloide.03$c'                                                        */
/*                  en faisant :                                                                                                     */
/*                                                                                                                                   */
/*                                      u = phi                                                                                      */
/*                                      v = theta                                                                                    */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
                                        /* 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...   */

#include  xrs/epicycloide.11.1.I"
                                        /* Definition de l'equation de l'epicycloide dans le plan {OX,OY} :                          */

#define   Psi(u,v)                                                                                                                      \
                    ATAN(NEGA(d1_XPlan_xrs_epicycloide_11(u,v)),NEUT(d1_YPlan_xrs_epicycloide_11(u,v)))
#define   d_Psi(u,v)                                                                                                                    \
                    d_FCONSTANTES
                                        /* Definition de la rotation faisant passer de l'axe 'OX' a la normale N (qui correspond     */
                                        /* a 'T' {d1_X,d1_Y} tourne de 'pi/2', soit une multiplication par '+i').                    */
                                        /*                                                                                           */
                                        /* La notation 'Psi' est compatible avec celles de 'v $ximD/definit.1$DEF 20161201123529'... */
                                        /*                                                                                           */
                                        /* On notera que 'Psi(u,v)' n'est pas derivable ('#define' et non pas '-define') car,        */
                                        /* effet, elle est en quelque sorte une constante locale au point {u,v}.                     */

#include  xrs/referentiel2D.11.I"
                                        /* Definition d'une ellipse dans le plan {OX,OZ} que l'on va ensuite amener dans le plan     */
                                        /* {N,OZ} par une rotation de 'Psi' ci-apres :                                               */

-define   Fx_Epicycloide_1(u,v)                                                                                                         \
-_-_-_-             LIN2(Xellipse(u,v),NEUT(COSX(Psi(u,v)))                                                                             \
-_-_-_-                 ,Yellipse(u,v),NEGA(SINX(Psi(u,v)))                                                                             \
-_-_-_-                 ,XPlan_xrs_epicycloide_11(u,v)                                                                                  \
-_-_-_-                  )
                                        /* Definition de la fonction F (u,v).                                                        */
                                        /*                            x                                                              */
-define   Fy_Epicycloide_1(u,v)                                                                                                         \
-_-_-_-             LIN2(Xellipse(u,v),NEUT(SINX(Psi(u,v)))                                                                             \
-_-_-_-                 ,Yellipse(u,v),NEUT(COSX(Psi(u,v)))                                                                             \
-_-_-_-                 ,YPlan_xrs_epicycloide_11(u,v)                                                                                  \
-_-_-_-                  )
                                        /* Definition de la fonction F (u,v).                                                        */
                                        /*                            y                                                              */
-define   Fz_Epicycloide_1(u,v)                                                                                                         \
-_-_-_-             Zellipse(u,v)
                                        /* 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_Epicycloide_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, 2019-2021.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / Ecole Polytechnique, 2019-2021.