/*************************************************************************************************************************************/
/* */
/* 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)... */