/*************************************************************************************************************************************/ /* */ /* 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 E S U R F A C E D E H O R N E R " L I N E A I R E " D U Q U A T R I E M E D E G R E : */ /* */ /* */ /* Author of '$xrs/Horner24.11$I' : */ /* */ /* Jean-Francois Colonna (LACTAMME, 20201120102800). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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 de la surface ('v $xrs/Horner24.11$K') : */ /* */ /* La surface 'lineaire' de Horner */ /* est definie 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) = RX.HORNER_2_04(u,v,{pXij}) */ /* x */ /* */ /* F (u,v) = RY.HORNER_2_04(u,v,{pYij}) */ /* y */ /* */ /* F (u,v) = RZ.HORNER_2_04(u,v,{pZij}) */ /* z */ /* */ /* ('v $ximd/operator.1$FON HORNER_2_04') avec : */ /* */ /* {pXij} un ensemble de coefficients (i,j E {0,1,2,3,4}) */ /* {pYij} un ensemble de coefficients (i,j E {0,1,2,3,4}) */ /* {pZij} un ensemble de coefficients (i,j E {0,1,2,3,4}) */ /* */ /* et : */ /* */ /* avec : */ /* */ /* u E [ -1 , +1 ] */ /* */ /* v E [ -1 , +1 ] */ /* */ /* */ /*************************************************************************************************************************************/ /* 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 Fx_Horner24_1(u,v) \ MUL2(parametre_RX \ ,HORNER_2_04(u,v \ ,pX_a44,pX_a43,pX_a42,pX_a41,pX_a40 \ ,pX_a34,pX_a33,pX_a32,pX_a31,pX_a30 \ ,pX_a24,pX_a23,pX_a22,pX_a21,pX_a20 \ ,pX_a14,pX_a13,pX_a12,pX_a11,pX_a10 \ ,pX_a04,pX_a03,pX_a02,pX_a01,pX_a00 \ ) \ ) /* Definition de la fonction F (u,v). */ /* x */ #define Fy_Horner24_1(u,v) \ MUL2(parametre_RY \ ,HORNER_2_04(u,v \ ,pY_a44,pY_a43,pY_a42,pY_a41,pY_a40 \ ,pY_a34,pY_a33,pY_a32,pY_a31,pY_a30 \ ,pY_a24,pY_a23,pY_a22,pY_a21,pY_a20 \ ,pY_a14,pY_a13,pY_a12,pY_a11,pY_a10 \ ,pY_a04,pY_a03,pY_a02,pY_a01,pY_a00 \ ) \ ) /* Definition de la fonction F (u,v). */ /* y */ #define Fz_Horner24_1(u,v) \ MUL2(parametre_RZ \ ,HORNER_2_04(u,v \ ,pZ_a44,pZ_a43,pZ_a42,pZ_a41,pZ_a40 \ ,pZ_a34,pZ_a33,pZ_a32,pZ_a31,pZ_a30 \ ,pZ_a24,pZ_a23,pZ_a22,pZ_a21,pZ_a20 \ ,pZ_a14,pZ_a13,pZ_a12,pZ_a11,pZ_a10 \ ,pZ_a04,pZ_a03,pZ_a02,pZ_a01,pZ_a00 \ ) \ ) /* 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_Horner24_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'... */