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