/*************************************************************************************************************************************/
/* */
/* 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.21$I' : */
/* */
/* Jean-Francois Colonna (LACTAMME, 20161230092413). */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* 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.21$K') : */
/* */
/* Le pseudo-tore "epicycloidal tridimensionnel" */
/* 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') : */
/* */
/* XEspace(u,v) = B.cos(C.v) - D.cos(E.v) */
/* YEspace(u,v) = F.sin(G.v) - H.sin(I.v) */
/* ZEspace(u,v) = M.sin(N.v) - O.sin(P.v) */
/* Courbe "epicycloidale tridimensionnelle". */
/* */
/* dXEspace(u,v) = d#XEspace(u,v) */
/* dYEspace(u,v) = d#YEspace(u,v) */
/* dZEspace(u,v) = d#ZEspace(u,v) */
/* */
/* Le vecteur {dXEspace(u,v),dYEspace(u,v),dZEspace(u,v)} defini un nouveau */
/* referentiel {{X1,X2,X3},{Y1,Y2,Y3},{Z1,Z2,Z3}} */
/* */
/* Xellipse(u,v) = Ra.cos(u) */
/* Yellipse(u,v) = Rb.sin(u) */
/* Zellipse(u,v) = 0 */
/* Definition d'une ellipse dans le plan {OX,OY}. */
/* */
/* F (u,v) = [Xellipse(u,v)*X1] + [Yellipse(u,v)*Y1] + [Zellipse(u,v)*Z1] + XEspace(u,v) */
/* x */
/* */
/* F (u,v) = [Xellipse(u,v)*X2] + [Yellipse(u,v)*Y2] + [Zellipse(u,v)*Z2] + YEspace(u,v) */
/* y */
/* */
/* F (u,v) = [Xellipse(u,v)*X3] + [Yellipse(u,v)*Y3] + [Zellipse(u,v)*Z3] + ZEspace(u,v) */
/* z */
/* Definition d'une ellipse dont le centre est le point */
/* courant {XEspace(u,v),YEspace(u,v),ZEspace(u,v)} et */
/* situee dans {Alpha(u,v),Beta_(u,v),Gamma(u,v)}. */
/* */
/* et (parametres par defaut) : */
/* */
/* A = +8 */
/* a = +1 */
/* L = +4 */
/* */
/* B = F = M = A+a (=+9.0) */
/* C = G = N = 1 (=+1.0) */
/* D = H = O = L.a (=+4.0) */
/* E = I = P = (A+a)/a (=+9.0) */
/* */
/* avec : */
/* */
/* u E [ 0 , 2.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 d1_XEspace_Courbe(u,v) \
d1_XEspace_xrs_epicycloide_21(u,v)
#define d1_YEspace_Courbe(u,v) \
d1_YEspace_xrs_epicycloide_21(u,v)
#define d1_ZEspace_Courbe(u,v) \
d1_ZEspace_xrs_epicycloide_21(u,v)
#include xrs/epicycloide.21.1.I"
/* Definition de l'equation de l'epicycloide generalisee. */
#include xrs/referentiel3D.11.I"
/* Definition du referentiel au point {u,v} de l'epicycloide generalisee. */
-define Fx_Epicycloide_2(u,v) \
-_-_-_- LIN3(Xellipse(u,v),Composante_X1(u,v) \
-_-_-_- ,Yellipse(u,v),Composante_Y1(u,v) \
-_-_-_- ,Zellipse(u,v),Composante_Z1(u,v) \
-_-_-_- ,XEspace_xrs_epicycloide_21(u,v) \
-_-_-_- )
/* Definition de la fonction F (u,v). */
/* x */
-define Fy_Epicycloide_2(u,v) \
-_-_-_- LIN3(Xellipse(u,v),Composante_X2(u,v) \
-_-_-_- ,Yellipse(u,v),Composante_Y2(u,v) \
-_-_-_- ,Zellipse(u,v),Composante_Z2(u,v) \
-_-_-_- ,YEspace_xrs_epicycloide_21(u,v) \
-_-_-_- )
/* Definition de la fonction F (u,v). */
/* y */
-define Fz_Epicycloide_2(u,v) \
-_-_-_- LIN3(Xellipse(u,v),Composante_X3(u,v) \
-_-_-_- ,Yellipse(u,v),Composante_Y3(u,v) \
-_-_-_- ,Zellipse(u,v),Composante_Z3(u,v) \
-_-_-_- ,ZEspace_xrs_epicycloide_21(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_2 \
-_-_-_- 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'. */