/*************************************************************************************************************************************/ /* */ /* 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 E L ' I N F L A T I O N : */ /* */ /* */ /* Author of '$xrs/inflation.11$I' : */ /* */ /* Jean-Francois Colonna (LACTAMME, 20130220081000). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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/inflation.11$K') : */ /* */ /* Le cylindre 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') : */ /* */ /* pA+tanh(pB.(u-pD)+pE) */ /* R1(u,v) = ----------------------- */ /* pF */ /* */ /* pH */ /* R2(u,v) = pI.(pG.(u-pC)) */ /* */ /* 2 1 */ /* R3(u,v) = pJ.(pK.u + pL.u + pM) */ /* */ /* R(u,v) = R3(u,v).R1(u,v) si u<pC */ /* = R3(u,v).(R1(pC,v)+R2(u,v)) si u>=pC */ /* */ /* F (u,v) = R(u,v).cos(v) */ /* x */ /* */ /* F (u,v) = R(u,v).sin(v) */ /* y */ /* */ /* pO */ /* F (u,v) = pN.u */ /* z */ /* */ /* avec : */ /* */ /* u E [ 0 , 1 ] */ /* */ /* v E [ 0 , 2.p ] */ /* */ /* (ou 'p' designe 'pi'). */ /* */ /* Ces formules ont ete mises au point et */ /* testees grace a 'v $xtc/inflation.11$c'. */ /* */ /* */ /*************************************************************************************************************************************/ /* 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 Rayon1_Inflation_1(u,v) \ -_-_-_- DIVI(ADD2(parametre_a \ -_-_-_- ,TANH(AXPB(parametre_b,SOUS(u,parametre_d),parametre_e)) \ -_-_-_- ) \ -_-_-_- ,parametre_f \ -_-_-_- ) -define Rayon2_Inflation_1(u,v) \ -_-_-_- MUL2(parametre_i \ -_-_-_- ,PUIX(MUL2(parametre_g,SOUS(u,parametre_c)),parametre_h) \ -_-_-_- ) -define Rayon3_Inflation_1(u,v) \ -_-_-_- MUL2(parametre_j,HORNER_1_02(u,parametre_k,parametre_l,parametre_m)) -define Rayon__Inflation_1(u,v) \ -_-_-_- MUL2(Rayon3_Inflation_1(u,v) \ -_-_-_- ,COND(IFLT(u,parametre_c) \ -_-_-_- ,Rayon1_Inflation_1(u,v) \ -_-_-_- ,ADD2(Rayon1_Inflation_1(parametre_c,v),Rayon2_Inflation_1(u,v)) \ -_-_-_- ) \ -_-_-_- ) /* Definition du rayon... */ /* */ /* On notera qu'on utilise 'TANH(...)' (et non pas 'TAHX(...)' plus logique a cause de */ /* la derivation formelle...) pour des raisons de performance (compilation...). */ -define Fx_Inflation_1(u,v) \ -_-_-_- Xcartesienne_2D(Rayon__Inflation_1(u,v) \ -_-_-_- ,v \ -_-_-_- ) /* Definition de la fonction F (u,v). */ /* x */ -define Fy_Inflation_1(u,v) \ -_-_-_- Ycartesienne_2D(Rayon__Inflation_1(u,v) \ -_-_-_- ,v \ -_-_-_- ) /* Definition de la fonction F (u,v). */ /* y */ -define Fz_Inflation_1(u,v) \ -_-_-_- MUL2(parametre_n,PUIX(u,parametre_o)) /* 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_Inflation_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' (introduit le 20050203090301)... */