/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N */
/* D ' U N E V A R I E T E D E H O R N E R " L I N E A I R E " D U T R O I S I E M E D E G R E : */
/* */
/* */
/* Author of '$xrs/Horner33.11$K' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 20201121115548). */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* I N T E R F A C E ' listG ' : */
/* */
/* */
/* :Debut_listG: */
/* :Fin_listG: */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D I R E C T I V E S S P E C I F I Q U E S D E C O M P I L A T I O N : */
/* */
/*************************************************************************************************************************************/
@define PRAGMA_CPP_____MODULE_NON_DERIVABLE
#nodefine PRAGMA_CPP_____AUTORISER_LE_GooF
#nodefine PRAGMA_CPP_____SI_LE_GooF_EST_ACTIVABLE_ALORS_FAIRE_DE_L_ARITHMETIQUE_ETENDUE_DES_NOMBRES_FLOTTANTS
/* L'arithmetique etendue a peu d'interet avec la procedure 'HORNER_3_03(...)' car, en */
/* effet, elle ne contient que des 'ADD2(...)'s et des 'MUL2(...)'s ; changer leur */
/* definition ne provoquerait donc pas des petites modifications subtiles..., tout en etant */
/* interminable au niveau pre-processing avec 'GooF'... */
@define PRAGMA_CL_____MODULE_NON_OPTIMISABLE
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* F I C H I E R S D ' I N C L U D E S : */
/* */
/*************************************************************************************************************************************/
#include INCLUDES_BASE
#include image_image_IMAGESF_EXT
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N S D E B A S E E T U N I V E R S E L L E S : */
/* */
/*************************************************************************************************************************************/
#include xrv/dimensionnement.01.vv.I"
#include xrk/attractor.11.I"
#include xrv/particule.41.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* 3 */
/* D E F I N I T I O N D E L ' E S P A C E P H Y S I Q U E D A N S R ( D E B U T ) : */
/* */
/* */
/* Nota : */
/* */
/* Les extrema des coordonnees {x,y,z} */
/* ainsi que ceux de leurs differentielles */
/* {dx,dy,dz} sont fixees un peu arbitrairement */
/* et sans etre parametrees. */
/* */
/* */
/*************************************************************************************************************************************/
#include xrs/Horner33.18.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* 3 */
/* D E F I N I T I O N D E L ' E S P A C E P H Y S I Q U E D A N S R ( D E B U T ) : */
/* */
/*************************************************************************************************************************************/
#include xrk/attractor.12.I"
#include xrs/Horner33.19.I"
/*===================================================================================================================================*/
/* :Debut_listMN_HORNER33_11: */
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N */
/* D ' U N E V A R I E T E D E H O R N E R " L I N E A I R E " D U T R O I S I E M E D E G R E : */
/* */
/* */
/* Definition de la variete ('v $xrs/Horner33.11$K') : */
/* */
/* Elle est definie parametriquement */
/* en fonction des trois parametres 'u', */
/* 'v' et 'W' : */
/* */
/* F (u,v,w) = RX.HORNER_3_03(u,v,w,{pXijk}) */
/* x */
/* */
/* F (u,v,w) = RY.HORNER_3_03(u,v,w,{pYijk}) */
/* y */
/* */
/* F (u,v,w) = RZ.HORNER_3_03(u,v,w,{pZijk}) */
/* z */
/* */
/* ('v $ximd/operator.1$FON HORNER_3_03') avec : */
/* */
/* {pXijk} un ensemble de coefficients (i,j,k E {0,1,2,3}) */
/* {pYijk} un ensemble de coefficients (i,j,k E {0,1,2,3}) */
/* {pZijk} un ensemble de coefficients (i,j,k E {0,1,2,3}) */
/* */
/* et : */
/* */
/* avec : */
/* */
/* u E [ -1 , +1 ] */
/* */
/* v E [ -1 , +1 ] */
/* */
/* w E [ -1 , +1 ] */
/* */
/* */
/*************************************************************************************************************************************/
/* :Fin_listMN_HORNER33_11: */
#define SI_L_ARITHMETIQUE_ETENDUE_DES_NOMBRES_FLOTTANTS_EST_ACTIVABLE_ALORS_L_UTILISER_AUSSI_POUR_LES_DERIVEES
#include xrs/Horner33.12.I"
#include xrs/Horner33.14.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* F O N C T I O N S D E V I S U A L I S A T I O N E T D ' I N T E R P O L A T I O N : */
/* */
/*************************************************************************************************************************************/
#include xrs/volumes.21.I"
#define EDITER_LES_EXTREMA_S_ILS_SONT_HORS_PREVISIONS \
FAUX \
/* En consequence de quoi, le message d'erreur relatif aux extrema de {x,y,z} et/ou de */ \
/* {dx,dy,dz} n'a plus de sens. */
#include xci/sequence.01.I"
/* ATTENTION, on definit ainsi le symbole 'DERNIERE_IMAGE' qui ne sert a rien ici, puisque */
/* c'est en effet 'Zmax' qui joue ce role... */
#include xrs/Horner33.13.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* 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 ' : */
/* */
/*************************************************************************************************************************************/
#include xrs/Horner33.11.I"
/* 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 'RAYON(h,theta)' 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... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* P O U R D E S R A I S O N S D E C O M P A T I B I L I T E : */
/* */
/*************************************************************************************************************************************/
#include xrk/integr.1B.vv.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N D E S I N I T I A L I S A T I O N S : */
/* */
/*************************************************************************************************************************************/
#include xrk/attractor.18.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N */
/* D ' U N E V A R I E T E D E H O R N E R " L I N E A I R E " D U T R O I S I E M E D E G R E : */
/* */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
Bblock
#include xrs/volumes.41.I"
#include xrs/volumes.22.I"
/*..............................................................................................................................*/
INITIALISATIONS_GENERALES;
/* Initialisations generales faites au tout debut... */
#include xrv/champs_5.1A.I"
#include xrs/volumes.13.I"
GET_ARGUMENTSv(nombre_d_arguments
,BLOC(PROCESS_ARGUMENTS_GEOMETRIQUES;
GET_ARGUMENT_F("RX=",parametre_RX);
GET_ARGUMENT_F("pX333=",pX_a333);
GET_ARGUMENT_F("pX332=",pX_a332);
GET_ARGUMENT_F("pX331=",pX_a331);
GET_ARGUMENT_F("pX330=",pX_a330);
GET_ARGUMENT_F("pX323=",pX_a323);
GET_ARGUMENT_F("pX322=",pX_a322);
GET_ARGUMENT_F("pX321=",pX_a321);
GET_ARGUMENT_F("pX320=",pX_a320);
GET_ARGUMENT_F("pX313=",pX_a313);
GET_ARGUMENT_F("pX312=",pX_a312);
GET_ARGUMENT_F("pX311=",pX_a311);
GET_ARGUMENT_F("pX310=",pX_a310);
GET_ARGUMENT_F("pX303=",pX_a303);
GET_ARGUMENT_F("pX302=",pX_a302);
GET_ARGUMENT_F("pX301=",pX_a301);
GET_ARGUMENT_F("pX300=",pX_a300);
GET_ARGUMENT_F("pX233=",pX_a233);
GET_ARGUMENT_F("pX232=",pX_a232);
GET_ARGUMENT_F("pX231=",pX_a231);
GET_ARGUMENT_F("pX230=",pX_a230);
GET_ARGUMENT_F("pX223=",pX_a223);
GET_ARGUMENT_F("pX222=",pX_a222);
GET_ARGUMENT_F("pX221=",pX_a221);
GET_ARGUMENT_F("pX220=",pX_a220);
GET_ARGUMENT_F("pX213=",pX_a213);
GET_ARGUMENT_F("pX212=",pX_a212);
GET_ARGUMENT_F("pX211=",pX_a211);
GET_ARGUMENT_F("pX210=",pX_a210);
GET_ARGUMENT_F("pX203=",pX_a203);
GET_ARGUMENT_F("pX202=",pX_a202);
GET_ARGUMENT_F("pX201=",pX_a201);
GET_ARGUMENT_F("pX200=",pX_a200);
GET_ARGUMENT_F("pX133=",pX_a133);
GET_ARGUMENT_F("pX132=",pX_a132);
GET_ARGUMENT_F("pX131=",pX_a131);
GET_ARGUMENT_F("pX130=",pX_a130);
GET_ARGUMENT_F("pX123=",pX_a123);
GET_ARGUMENT_F("pX122=",pX_a122);
GET_ARGUMENT_F("pX121=",pX_a121);
GET_ARGUMENT_F("pX120=",pX_a120);
GET_ARGUMENT_F("pX113=",pX_a113);
GET_ARGUMENT_F("pX112=",pX_a112);
GET_ARGUMENT_F("pX111=",pX_a111);
GET_ARGUMENT_F("pX110=",pX_a110);
GET_ARGUMENT_F("pX103=",pX_a103);
GET_ARGUMENT_F("pX102=",pX_a102);
GET_ARGUMENT_F("pX101=",pX_a101);
GET_ARGUMENT_F("pX100=",pX_a100);
GET_ARGUMENT_F("pX033=",pX_a033);
GET_ARGUMENT_F("pX032=",pX_a032);
GET_ARGUMENT_F("pX031=",pX_a031);
GET_ARGUMENT_F("pX030=",pX_a030);
GET_ARGUMENT_F("pX023=",pX_a023);
GET_ARGUMENT_F("pX022=",pX_a022);
GET_ARGUMENT_F("pX021=",pX_a021);
GET_ARGUMENT_F("pX020=",pX_a020);
GET_ARGUMENT_F("pX013=",pX_a013);
GET_ARGUMENT_F("pX012=",pX_a012);
GET_ARGUMENT_F("pX011=",pX_a011);
GET_ARGUMENT_F("pX010=",pX_a010);
GET_ARGUMENT_F("pX003=",pX_a003);
GET_ARGUMENT_F("pX002=",pX_a002);
GET_ARGUMENT_F("pX001=",pX_a001);
GET_ARGUMENT_F("pX000=",pX_a000);
GET_ARGUMENT_F("RY=",parametre_RY);
GET_ARGUMENT_F("pY333=",pY_a333);
GET_ARGUMENT_F("pY332=",pY_a332);
GET_ARGUMENT_F("pY331=",pY_a331);
GET_ARGUMENT_F("pY330=",pY_a330);
GET_ARGUMENT_F("pY323=",pY_a323);
GET_ARGUMENT_F("pY322=",pY_a322);
GET_ARGUMENT_F("pY321=",pY_a321);
GET_ARGUMENT_F("pY320=",pY_a320);
GET_ARGUMENT_F("pY313=",pY_a313);
GET_ARGUMENT_F("pY312=",pY_a312);
GET_ARGUMENT_F("pY311=",pY_a311);
GET_ARGUMENT_F("pY310=",pY_a310);
GET_ARGUMENT_F("pY303=",pY_a303);
GET_ARGUMENT_F("pY302=",pY_a302);
GET_ARGUMENT_F("pY301=",pY_a301);
GET_ARGUMENT_F("pY300=",pY_a300);
GET_ARGUMENT_F("pY233=",pY_a233);
GET_ARGUMENT_F("pY232=",pY_a232);
GET_ARGUMENT_F("pY231=",pY_a231);
GET_ARGUMENT_F("pY230=",pY_a230);
GET_ARGUMENT_F("pY223=",pY_a223);
GET_ARGUMENT_F("pY222=",pY_a222);
GET_ARGUMENT_F("pY221=",pY_a221);
GET_ARGUMENT_F("pY220=",pY_a220);
GET_ARGUMENT_F("pY213=",pY_a213);
GET_ARGUMENT_F("pY212=",pY_a212);
GET_ARGUMENT_F("pY211=",pY_a211);
GET_ARGUMENT_F("pY210=",pY_a210);
GET_ARGUMENT_F("pY203=",pY_a203);
GET_ARGUMENT_F("pY202=",pY_a202);
GET_ARGUMENT_F("pY201=",pY_a201);
GET_ARGUMENT_F("pY200=",pY_a200);
GET_ARGUMENT_F("pY133=",pY_a133);
GET_ARGUMENT_F("pY132=",pY_a132);
GET_ARGUMENT_F("pY131=",pY_a131);
GET_ARGUMENT_F("pY130=",pY_a130);
GET_ARGUMENT_F("pY123=",pY_a123);
GET_ARGUMENT_F("pY122=",pY_a122);
GET_ARGUMENT_F("pY121=",pY_a121);
GET_ARGUMENT_F("pY120=",pY_a120);
GET_ARGUMENT_F("pY113=",pY_a113);
GET_ARGUMENT_F("pY112=",pY_a112);
GET_ARGUMENT_F("pY111=",pY_a111);
GET_ARGUMENT_F("pY110=",pY_a110);
GET_ARGUMENT_F("pY103=",pY_a103);
GET_ARGUMENT_F("pY102=",pY_a102);
GET_ARGUMENT_F("pY101=",pY_a101);
GET_ARGUMENT_F("pY100=",pY_a100);
GET_ARGUMENT_F("pY033=",pY_a033);
GET_ARGUMENT_F("pY032=",pY_a032);
GET_ARGUMENT_F("pY031=",pY_a031);
GET_ARGUMENT_F("pY030=",pY_a030);
GET_ARGUMENT_F("pY023=",pY_a023);
GET_ARGUMENT_F("pY022=",pY_a022);
GET_ARGUMENT_F("pY021=",pY_a021);
GET_ARGUMENT_F("pY020=",pY_a020);
GET_ARGUMENT_F("pY013=",pY_a013);
GET_ARGUMENT_F("pY012=",pY_a012);
GET_ARGUMENT_F("pY011=",pY_a011);
GET_ARGUMENT_F("pY010=",pY_a010);
GET_ARGUMENT_F("pY003=",pY_a003);
GET_ARGUMENT_F("pY002=",pY_a002);
GET_ARGUMENT_F("pY001=",pY_a001);
GET_ARGUMENT_F("pY000=",pY_a000);
GET_ARGUMENT_F("RZ=",parametre_RZ);
GET_ARGUMENT_F("pZ333=",pZ_a333);
GET_ARGUMENT_F("pZ332=",pZ_a332);
GET_ARGUMENT_F("pZ331=",pZ_a331);
GET_ARGUMENT_F("pZ330=",pZ_a330);
GET_ARGUMENT_F("pZ323=",pZ_a323);
GET_ARGUMENT_F("pZ322=",pZ_a322);
GET_ARGUMENT_F("pZ321=",pZ_a321);
GET_ARGUMENT_F("pZ320=",pZ_a320);
GET_ARGUMENT_F("pZ313=",pZ_a313);
GET_ARGUMENT_F("pZ312=",pZ_a312);
GET_ARGUMENT_F("pZ311=",pZ_a311);
GET_ARGUMENT_F("pZ310=",pZ_a310);
GET_ARGUMENT_F("pZ303=",pZ_a303);
GET_ARGUMENT_F("pZ302=",pZ_a302);
GET_ARGUMENT_F("pZ301=",pZ_a301);
GET_ARGUMENT_F("pZ300=",pZ_a300);
GET_ARGUMENT_F("pZ233=",pZ_a233);
GET_ARGUMENT_F("pZ232=",pZ_a232);
GET_ARGUMENT_F("pZ231=",pZ_a231);
GET_ARGUMENT_F("pZ230=",pZ_a230);
GET_ARGUMENT_F("pZ223=",pZ_a223);
GET_ARGUMENT_F("pZ222=",pZ_a222);
GET_ARGUMENT_F("pZ221=",pZ_a221);
GET_ARGUMENT_F("pZ220=",pZ_a220);
GET_ARGUMENT_F("pZ213=",pZ_a213);
GET_ARGUMENT_F("pZ212=",pZ_a212);
GET_ARGUMENT_F("pZ211=",pZ_a211);
GET_ARGUMENT_F("pZ210=",pZ_a210);
GET_ARGUMENT_F("pZ203=",pZ_a203);
GET_ARGUMENT_F("pZ202=",pZ_a202);
GET_ARGUMENT_F("pZ201=",pZ_a201);
GET_ARGUMENT_F("pZ200=",pZ_a200);
GET_ARGUMENT_F("pZ133=",pZ_a133);
GET_ARGUMENT_F("pZ132=",pZ_a132);
GET_ARGUMENT_F("pZ131=",pZ_a131);
GET_ARGUMENT_F("pZ130=",pZ_a130);
GET_ARGUMENT_F("pZ123=",pZ_a123);
GET_ARGUMENT_F("pZ122=",pZ_a122);
GET_ARGUMENT_F("pZ121=",pZ_a121);
GET_ARGUMENT_F("pZ120=",pZ_a120);
GET_ARGUMENT_F("pZ113=",pZ_a113);
GET_ARGUMENT_F("pZ112=",pZ_a112);
GET_ARGUMENT_F("pZ111=",pZ_a111);
GET_ARGUMENT_F("pZ110=",pZ_a110);
GET_ARGUMENT_F("pZ103=",pZ_a103);
GET_ARGUMENT_F("pZ102=",pZ_a102);
GET_ARGUMENT_F("pZ101=",pZ_a101);
GET_ARGUMENT_F("pZ100=",pZ_a100);
GET_ARGUMENT_F("pZ033=",pZ_a033);
GET_ARGUMENT_F("pZ032=",pZ_a032);
GET_ARGUMENT_F("pZ031=",pZ_a031);
GET_ARGUMENT_F("pZ030=",pZ_a030);
GET_ARGUMENT_F("pZ023=",pZ_a023);
GET_ARGUMENT_F("pZ022=",pZ_a022);
GET_ARGUMENT_F("pZ021=",pZ_a021);
GET_ARGUMENT_F("pZ020=",pZ_a020);
GET_ARGUMENT_F("pZ013=",pZ_a013);
GET_ARGUMENT_F("pZ012=",pZ_a012);
GET_ARGUMENT_F("pZ011=",pZ_a011);
GET_ARGUMENT_F("pZ010=",pZ_a010);
GET_ARGUMENT_F("pZ003=",pZ_a003);
GET_ARGUMENT_F("pZ002=",pZ_a002);
GET_ARGUMENT_F("pZ001=",pZ_a001);
GET_ARGUMENT_F("pZ000=",pZ_a000);
PROCESS_ARGUMENTS_DE_DERIVATION_PARTIELLE_NUMERIQUE;
PROCESS_ARGUMENTS_DE_COLORIAGE;
PROCESS_ARGUMENTS_DE_VISUALISATION;
PROCESS_ARGUMENTS_DE_PERMUTATION_DES_COORDONNEES_ET_DES_DIFFERENTIELLES;
PROCESS_ARGUMENTS_DE_TRANSFORMATION_DE_u_v_w;
/* Introduit le 20221221185212... */
PROCESS_ARGUMENTS_DE_PROJECTION_DU_VOLUME;
PROCESS_ARGUMENTS_DE_DEFINITION_DES_COORDONNEES_CURVILIGNES;
)
);
#include xrs/volumes.12.I"
/* Visualisation et evolution de la variete au cours du temps... */
VISUALISATION_DU_VOLUME_AVEC_DIFFERENCES____(BLOC(BLOC(VIDE;)
)
,Fx_Horner33_1,Fy_Horner33_1,Fz_Horner33_1
/* Fonctions definissant parametriquement la variete... */
,Pxyz_Horner33_1
,BLOC(VIDE;)
/* Il n'y a rien de specifique a calculer pour le point courant... */
);
RETU_Commande;
Eblock
ECommande