/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N S G E N E R A L E S D E V I S U A L I S A T I O N : */
/* */
/* */
/* Author of '$xrs/hyper_hyper_volumes.14$I' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 20230225140048). */
/* */
/*************************************************************************************************************************************/
#include xrk/attractor.1D.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N D E S D I F F E R E N T S E S P A C E S E T D E L ' E F F E T D E B R U M E : */
/* */
/*************************************************************************************************************************************/
#include xrk/attractor.13.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* A I D E A U C A D R A G E D E S I M A G E S : */
/* */
/*************************************************************************************************************************************/
#include xrk/attractor.1C.I"
DONNEES_DE_RECHERCHE_DES_EXTREMA_DES_COORDONNEES_ET_DES_DERIVEES
/* Definition des extrema des coordonnees et des derivees. On notera bien l'absence de */
/* point-virgule apres 'DONNEES_DE_RECHERCHE_DES_EXTREMA_DES_COORDONNEES_ET_DES_DERIVEES'. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* G E N E R A T I O N D E S I M A G E S : */
/* */
/*************************************************************************************************************************************/
#include xrv/champs_5.14.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N S G E N E R A L E S R E L A T I V E S A L A V I S U A L I S A T I O N : */
/* */
/*************************************************************************************************************************************/
#include xrk/attractor.14.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* E C H A N T I L L O N N A G E D E L ' H Y P E R - H Y P E R - V O L U M E : */
/* */
/* */
/* Definition : */
/* */
/* Un dispositif permet */
/* de visualiser le maillage suivant les */
/* paralleles et les meridiens de l'hyper-hyper-hyper_volume. */
/* Notons (suivant 'v $xrs/hyper_hyper_volumes.13$I PROCESS_ARGUMENTS_DE_DEFINITION_DES_COORDONNEES_CURVILIGNES') : */
/* */
/* pu = pas_de_u */
/* eu = echantillonnage_de_u */
/* dpu = diviseur_du_pas_de_u */
/* */
/* pv = pas_de_v */
/* ev = echantillonnage_de_v */
/* dpv = diviseur_du_pas_de_v */
/* */
/* pw = pas_de_w */
/* ew = echantillonnage_de_w */
/* dpw = diviseur_du_pas_de_w */
/* */
/* pt = pas_de_t */
/* et = echantillonnage_de_t */
/* dpt = diviseur_du_pas_de_t */
/* */
/* */
/* Les pas effectifs en 'u', 'v', 'w' et 't' sont donc : */
/* */
/* pu/dpu */
/* pv/dpv */
/* pw/dpw */
/* pt/dpt */
/* */
/* respectivement. Les meridiens seront espaces */
/* de 'ev' points et les paralleles de 'eu' points. */
/* Ainsi, par exemple si : */
/* */
/* eu == dpu */
/* ev == dpv */
/* */
/* les meridiens et les paralleles seront espaces */
/* de 'pv' et 'pu' respectivement. Mais, en general, */
/* {eu,ev} et {dpu,dpv} ne seront pas "correles"... */
/* */
/* */
/* A 'w' 't' constants, une surface {u,v} du */
/* volume va alors etre visualisee de */
/* la facon suivante : */
/* */
/* */
/* 'ev' points */
/* <-------------------> */
/* */
/* pv/dpv */
/* <----> */
/* */
/* . . . . * . . . . * . . . . * . . */
/* | | | */
/* | u =constante | | */
/* *----*----*----*----*----*----*----*----*----*----*----*----*----*----*----*----* */
/* /|\ /|\ | ("paralleles") | v | " */
/* | pu/dpu | | | = | m */
/* | \|/. . . . * . . . . * . . . . c * e . . */
/* 'eu' | | | o | r */
/* | | | n | i */
/* points | . . . . * . . . . * . . . . s * d . . */
/* | | | t | i */
/* | | | a | e */
/* \|/ . . . . * . . . . * . . . . n * n . . */
/* | | t | s */
/* | | e | " */
/* *----*----*----*----*----*----*----*----*----*----*----*----*----*----*----*----* */
/* | | | */
/* | | | */
/* . . . . * . . . . * . . . . * . . */
/* */
/* */
/* ou les caracteres "*" materialisent les */
/* points reellement visualises de l'hyper-hyper-hyper_volume. */
/* Les caracteres "-" et "|" ne sont la que pour */
/* materialiser les paralleles et les meridiens */
/* respectivement, alors que les caracteres "." */
/* montrent l'echantillonnage effectif de la */
/* surface. */
/* */
/* */
/*************************************************************************************************************************************/
DEFV(Local,DEFV(Float,INIT(minimum_de_w1,MINIMUM_DE_W1)));
DEFV(Local,DEFV(Float,INIT(maximum_de_w1,MAXIMUM_DE_W1)));
DEFV(Local,DEFV(Float,INIT(pas_de_w1,PAS_DE_W1)));
/* Definition de la coordonnee parametrique 'w1' de l'hyper-hyper-hyper_volume. */
DEFV(Local,DEFV(Float,INIT(minimum_de_w2,MINIMUM_DE_W2)));
DEFV(Local,DEFV(Float,INIT(maximum_de_w2,MAXIMUM_DE_W2)));
DEFV(Local,DEFV(Float,INIT(pas_de_w2,PAS_DE_W2)));
/* Definition de la coordonnee parametrique 'w2' de l'hyper-hyper-hyper_volume. */
DEFV(Local,DEFV(Float,INIT(minimum_de_w3,MINIMUM_DE_W3)));
DEFV(Local,DEFV(Float,INIT(maximum_de_w3,MAXIMUM_DE_W3)));
DEFV(Local,DEFV(Float,INIT(pas_de_w3,PAS_DE_W3)));
/* Definition de la coordonnee parametrique 'w3' de l'hyper-hyper-hyper_volume. */
DEFV(Local,DEFV(Float,INIT(minimum_de_w4,MINIMUM_DE_W4)));
DEFV(Local,DEFV(Float,INIT(maximum_de_w4,MAXIMUM_DE_W4)));
DEFV(Local,DEFV(Float,INIT(pas_de_w4,PAS_DE_W4)));
/* Definition de la coordonnee parametrique 'w4' de l'hyper-hyper-hyper_volume. */
DEFV(Local,DEFV(Float,INIT(minimum_de_w5,MINIMUM_DE_W5)));
DEFV(Local,DEFV(Float,INIT(maximum_de_w5,MAXIMUM_DE_W5)));
DEFV(Local,DEFV(Float,INIT(pas_de_w5,PAS_DE_W5)));
/* Definition de la coordonnee parametrique 'w5' de l'hyper-hyper-hyper_volume. */
DEFV(Local,DEFV(Float,INIT(minimum_de_w6,MINIMUM_DE_W6)));
DEFV(Local,DEFV(Float,INIT(maximum_de_w6,MAXIMUM_DE_W6)));
DEFV(Local,DEFV(Float,INIT(pas_de_w6,PAS_DE_W6)));
/* Definition de la coordonnee parametrique 'w6' de l'hyper-hyper-hyper_volume. */
DEFV(Local,DEFV(Float,INIT(minimum_de_w7,MINIMUM_DE_W7)));
DEFV(Local,DEFV(Float,INIT(maximum_de_w7,MAXIMUM_DE_W7)));
DEFV(Local,DEFV(Float,INIT(pas_de_w7,PAS_DE_W7)));
/* Definition de la coordonnee parametrique 'w7' de l'hyper-hyper-hyper_volume. */
DEFV(Local,DEFV(Float,INIT(minimum_de_w8,MINIMUM_DE_W8)));
DEFV(Local,DEFV(Float,INIT(maximum_de_w8,MAXIMUM_DE_W8)));
DEFV(Local,DEFV(Float,INIT(pas_de_w8,PAS_DE_W8)));
/* Definition de la coordonnee parametrique 'w8' de l'hyper-hyper-hyper_volume. */
#define LISTER_LES_COORDONNEES_w1_w2_w3_w4_w5_w6_w7_w8_DES_POINTS \
FAUX
DEFV(Local,DEFV(Logical,INIT(lister_les_coordonnees_w1_w2_w3_w4_w5_w6_w7_w8_des_points
,LISTER_LES_COORDONNEES_w1_w2_w3_w4_w5_w6_w7_w8_DES_POINTS
)
)
);
#define ECHANTILLONNAGE_w1_w2_w3_w4_w5_w6_w7_w8 \
UN
DEFV(Local,DEFV(Int,INIT(echantillonnage_de_w1,ECHANTILLONNAGE_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Int,INIT(echantillonnage_de_w2,ECHANTILLONNAGE_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Int,INIT(echantillonnage_de_w3,ECHANTILLONNAGE_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Int,INIT(echantillonnage_de_w4,ECHANTILLONNAGE_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Int,INIT(echantillonnage_de_w5,ECHANTILLONNAGE_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Int,INIT(echantillonnage_de_w6,ECHANTILLONNAGE_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Int,INIT(echantillonnage_de_w7,ECHANTILLONNAGE_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Int,INIT(echantillonnage_de_w8,ECHANTILLONNAGE_w1_w2_w3_w4_w5_w6_w7_w8)));
#define TRANSLATION_DE_L_ECHANTILLONNAGE_w1_w2_w3_w4_w5_w6_w7_w8 \
ZERO
DEFV(Local,DEFV(Int,INIT(translation_de_l_echantillonnage_de_w1,TRANSLATION_DE_L_ECHANTILLONNAGE_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Int,INIT(translation_de_l_echantillonnage_de_w2,TRANSLATION_DE_L_ECHANTILLONNAGE_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Int,INIT(translation_de_l_echantillonnage_de_w3,TRANSLATION_DE_L_ECHANTILLONNAGE_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Int,INIT(translation_de_l_echantillonnage_de_w4,TRANSLATION_DE_L_ECHANTILLONNAGE_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Int,INIT(translation_de_l_echantillonnage_de_w5,TRANSLATION_DE_L_ECHANTILLONNAGE_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Int,INIT(translation_de_l_echantillonnage_de_w6,TRANSLATION_DE_L_ECHANTILLONNAGE_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Int,INIT(translation_de_l_echantillonnage_de_w7,TRANSLATION_DE_L_ECHANTILLONNAGE_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Int,INIT(translation_de_l_echantillonnage_de_w8,TRANSLATION_DE_L_ECHANTILLONNAGE_w1_w2_w3_w4_w5_w6_w7_w8)));
/* Dispositif qui permet, par sa variation (0, 1, 2,...) de faire "glisser" la grille */
/* d'echantillonnage dans l'hyper-hyper_volume... */
#define DIVISEUR_DU_PAS_w1_w2_w3_w4_w5_w6_w7_w8 \
FU
DEFV(Local,DEFV(Float,INIT(diviseur_du_pas_de_w1,DIVISEUR_DU_PAS_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Float,INIT(diviseur_du_pas_de_w2,DIVISEUR_DU_PAS_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Float,INIT(diviseur_du_pas_de_w3,DIVISEUR_DU_PAS_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Float,INIT(diviseur_du_pas_de_w4,DIVISEUR_DU_PAS_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Float,INIT(diviseur_du_pas_de_w5,DIVISEUR_DU_PAS_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Float,INIT(diviseur_du_pas_de_w6,DIVISEUR_DU_PAS_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Float,INIT(diviseur_du_pas_de_w7,DIVISEUR_DU_PAS_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Float,INIT(diviseur_du_pas_de_w8,DIVISEUR_DU_PAS_w1_w2_w3_w4_w5_w6_w7_w8)));
/* Dispositif permettant d'utiliser le dispositif precedent d'echantillonnage precedent */
/* et ce sans avoir a toucher aux pas des coordonnees {w1,w2,w3,w4,w5,w6,w7,w8}. Il suffira, */
/* par exemple, d'utiliser des diviseurs egaux aux echantillonnages... */
#define LE_PAS_DE_w1_w2_w3_w4_w5_w6_w7_w8_DE_DIFFERENTIATION_EST_HOMOTHETIQUE \
VRAI
DEFV(Local,DEFV(Logical,INIT(le_pas_de_w1_de_differentiation_est_homothetique
,LE_PAS_DE_w1_w2_w3_w4_w5_w6_w7_w8_DE_DIFFERENTIATION_EST_HOMOTHETIQUE
)
)
);
DEFV(Local,DEFV(Logical,INIT(le_pas_de_w2_de_differentiation_est_homothetique
,LE_PAS_DE_w1_w2_w3_w4_w5_w6_w7_w8_DE_DIFFERENTIATION_EST_HOMOTHETIQUE
)
)
);
DEFV(Local,DEFV(Logical,INIT(le_pas_de_w3_de_differentiation_est_homothetique
,LE_PAS_DE_w1_w2_w3_w4_w5_w6_w7_w8_DE_DIFFERENTIATION_EST_HOMOTHETIQUE
)
)
);
DEFV(Local,DEFV(Logical,INIT(le_pas_de_w4_de_differentiation_est_homothetique
,LE_PAS_DE_w1_w2_w3_w4_w5_w6_w7_w8_DE_DIFFERENTIATION_EST_HOMOTHETIQUE
)
)
);
DEFV(Local,DEFV(Logical,INIT(le_pas_de_w5_de_differentiation_est_homothetique
,LE_PAS_DE_w1_w2_w3_w4_w5_w6_w7_w8_DE_DIFFERENTIATION_EST_HOMOTHETIQUE
)
)
);
DEFV(Local,DEFV(Logical,INIT(le_pas_de_w6_de_differentiation_est_homothetique
,LE_PAS_DE_w1_w2_w3_w4_w5_w6_w7_w8_DE_DIFFERENTIATION_EST_HOMOTHETIQUE
)
)
);
DEFV(Local,DEFV(Logical,INIT(le_pas_de_w7_de_differentiation_est_homothetique
,LE_PAS_DE_w1_w2_w3_w4_w5_w6_w7_w8_DE_DIFFERENTIATION_EST_HOMOTHETIQUE
)
)
);
DEFV(Local,DEFV(Logical,INIT(le_pas_de_w8_de_differentiation_est_homothetique
,LE_PAS_DE_w1_w2_w3_w4_w5_w6_w7_w8_DE_DIFFERENTIATION_EST_HOMOTHETIQUE
)
)
);
/* Ce dispositif permet de faire que le pas de differentiation en {w1,w2,w3,w4,w5,w6,w7,w8} */
/* est homothetique ('VRAI'), c'est-a-dire qu'il est alors calcule a partir des pas */
/* effectifs ou bien ('FAUX') a partir des pas... */
#define DIVISEUR_DE_DIFFERENTIATION_DE_w1_w2_w3_w4_w5_w6_w7_w8 \
FU
DEFV(Local,DEFV(Float,INIT(diviseur_de_differentiation_de_w1,DIVISEUR_DE_DIFFERENTIATION_DE_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Float,INIT(diviseur_de_differentiation_de_w2,DIVISEUR_DE_DIFFERENTIATION_DE_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Float,INIT(diviseur_de_differentiation_de_w3,DIVISEUR_DE_DIFFERENTIATION_DE_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Float,INIT(diviseur_de_differentiation_de_w4,DIVISEUR_DE_DIFFERENTIATION_DE_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Float,INIT(diviseur_de_differentiation_de_w5,DIVISEUR_DE_DIFFERENTIATION_DE_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Float,INIT(diviseur_de_differentiation_de_w6,DIVISEUR_DE_DIFFERENTIATION_DE_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Float,INIT(diviseur_de_differentiation_de_w7,DIVISEUR_DE_DIFFERENTIATION_DE_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Float,INIT(diviseur_de_differentiation_de_w8,DIVISEUR_DE_DIFFERENTIATION_DE_w1_w2_w3_w4_w5_w6_w7_w8)));
#define FACILITER_LE_PARAMETRAGE_DE_w1_w2_w3_w4_w5_w6_w7_w8 \
FAUX
#define NOMBRE_D_INTERS_w1 \
UN
#define NOMBRE_D_INTERS_w2 \
UN
#define NOMBRE_D_INTERS_w3 \
UN
#define NOMBRE_D_INTERS_w4 \
UN
#define NOMBRE_D_INTERS_w5 \
UN
#define NOMBRE_D_INTERS_w6 \
UN
#define NOMBRE_D_INTERS_w7 \
UN
#define NOMBRE_D_INTERS_w8 \
UN
#define NOMBRE_DE_POINTS_DANS_UN_INTER_w1 \
UN
#define NOMBRE_DE_POINTS_DANS_UN_INTER_w2 \
UN
#define NOMBRE_DE_POINTS_DANS_UN_INTER_w3 \
UN
#define NOMBRE_DE_POINTS_DANS_UN_INTER_w4 \
UN
#define NOMBRE_DE_POINTS_DANS_UN_INTER_w5 \
UN
#define NOMBRE_DE_POINTS_DANS_UN_INTER_w6 \
UN
#define NOMBRE_DE_POINTS_DANS_UN_INTER_w7 \
UN
#define NOMBRE_DE_POINTS_DANS_UN_INTER_w8 \
UN
DEFV(Local,DEFV(Logical,INIT(faciliter_le_parametrage_de_w1_w2_w3_w4_w5_w6_w7_w8
,FACILITER_LE_PARAMETRAGE_DE_w1_w2_w3_w4_w5_w6_w7_w8
)
)
);
DEFV(Local,DEFV(Int,INIT(nombre_d_inters_w1,NOMBRE_D_INTERS_w1)));
DEFV(Local,DEFV(Int,INIT(nombre_de_points_dans_un_inter_w1,NOMBRE_DE_POINTS_DANS_UN_INTER_w1)));
DEFV(Local,DEFV(Int,INIT(nombre_d_inters_w2,NOMBRE_D_INTERS_w2)));
DEFV(Local,DEFV(Int,INIT(nombre_de_points_dans_un_inter_w2,NOMBRE_DE_POINTS_DANS_UN_INTER_w2)));
DEFV(Local,DEFV(Int,INIT(nombre_d_inters_w3,NOMBRE_D_INTERS_w3)));
DEFV(Local,DEFV(Int,INIT(nombre_de_points_dans_un_inter_w3,NOMBRE_DE_POINTS_DANS_UN_INTER_w3)));
DEFV(Local,DEFV(Int,INIT(nombre_d_inters_w4,NOMBRE_D_INTERS_w4)));
DEFV(Local,DEFV(Int,INIT(nombre_de_points_dans_un_inter_w4,NOMBRE_DE_POINTS_DANS_UN_INTER_w4)));
DEFV(Local,DEFV(Int,INIT(nombre_d_inters_w5,NOMBRE_D_INTERS_w5)));
DEFV(Local,DEFV(Int,INIT(nombre_de_points_dans_un_inter_w5,NOMBRE_DE_POINTS_DANS_UN_INTER_w5)));
DEFV(Local,DEFV(Int,INIT(nombre_d_inters_w6,NOMBRE_D_INTERS_w6)));
DEFV(Local,DEFV(Int,INIT(nombre_de_points_dans_un_inter_w6,NOMBRE_DE_POINTS_DANS_UN_INTER_w6)));
DEFV(Local,DEFV(Int,INIT(nombre_d_inters_w7,NOMBRE_D_INTERS_w7)));
DEFV(Local,DEFV(Int,INIT(nombre_de_points_dans_un_inter_w7,NOMBRE_DE_POINTS_DANS_UN_INTER_w7)));
DEFV(Local,DEFV(Int,INIT(nombre_d_inters_w8,NOMBRE_D_INTERS_w8)));
DEFV(Local,DEFV(Int,INIT(nombre_de_points_dans_un_inter_w8,NOMBRE_DE_POINTS_DANS_UN_INTER_w8)));
/* Afin de faciliter la definition du maillage en {w1,w2,w3,w4,w5,w6,w7,w8} des */
/* hyper-hyper_volumes. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* T R A N S F O R M A T I O N D E S C O R D O N N E E S ' u ' . ' v ' , ' w ' E T ' t ' : */
/* */
/*************************************************************************************************************************************/
#define GESTION_TORIQUE_DE_w1_w2_w3_w4_w5_w6_w7_w8 \
FAUX
DEFV(Local,DEFV(Logical,INIT(gestion_torique_de_w1,GESTION_TORIQUE_DE_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Logical,INIT(gestion_torique_de_w2,GESTION_TORIQUE_DE_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Logical,INIT(gestion_torique_de_w3,GESTION_TORIQUE_DE_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Logical,INIT(gestion_torique_de_w4,GESTION_TORIQUE_DE_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Logical,INIT(gestion_torique_de_w5,GESTION_TORIQUE_DE_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Logical,INIT(gestion_torique_de_w6,GESTION_TORIQUE_DE_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Logical,INIT(gestion_torique_de_w7,GESTION_TORIQUE_DE_w1_w2_w3_w4_w5_w6_w7_w8)));
DEFV(Local,DEFV(Logical,INIT(gestion_torique_de_w8,GESTION_TORIQUE_DE_w1_w2_w3_w4_w5_w6_w7_w8)));
/* Afin de savoir s'il faut proceder a une gestion "torique" des coordonnees effectives */
/* {w1,w2,w3,w4,w5,w6,w7,w8} c'est-a-dire apres leur transformation eventuelle... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* P E R M U T A T I O N E V E N T U E L L E D E S C O O R D O N N E E S */
/* E T D E S D I F F E R E N T I E L L E S : */
/* */
/*************************************************************************************************************************************/
#define PERMUTER_LES_COORDONNEES_ET_LES_DIFFERENTIELLES \
FAUX
DEFV(Local,DEFV(Logical,INIT(permuter_les_coordonnees_et_les_differentielles,PERMUTER_LES_COORDONNEES_ET_LES_DIFFERENTIELLES)));
/* Permuter ('VRAI') ou pas les coordonnees et les differentielles ('FAUX'). */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* F O N C T I O N D E M E M O R I S A T I O N D U P O I N T C O U R A N T : */
/* */
/*************************************************************************************************************************************/
#include xrk/attractor.16.I"
#TestADef RAYON_DE_VISUALISATION \
FRA2(FRA10(FU))
DEFV(Local,DEFV(Float,INIT(rayon_de_visualisation,RAYON_DE_VISUALISATION)));
/* Rayon du disque materialisant une iteration. */
#define GROSSISSEMENT_DU_RAYON_DE_VISUALISATION_AUX_INTERSECTIONS_DES_LIGNES_DE_COORDONNEES \
FU
DEFV(Local,DEFV(Float,INIT(grossissement_du_rayon_de_visualisation_aux_intersections_des_lignes_de_coordonnees
,GROSSISSEMENT_DU_RAYON_DE_VISUALISATION_AUX_INTERSECTIONS_DES_LIGNES_DE_COORDONNEES
)
)
);
/* Facteur de grossissement du rayon de visualisation aux intersections des lignes de */
/* coordonnees. */
#define IGNORER_LES_POINTS_TROP_LOINTAINS \
FAUX
DEFV(Local,DEFV(Logical,INIT(ignorer_les_points_trop_lointains,IGNORER_LES_POINTS_TROP_LOINTAINS)));
#define DISTANCE_DES_POINTS_TROP_LOINTAINS \
F_INFINI
DEFV(Local,DEFV(Float,INIT(distance_des_points_trop_lointains,DISTANCE_DES_POINTS_TROP_LOINTAINS)));
/* Introduit le 20120606143939 par symetrie avec 'v $xrs/surfaces.14$I 20120606143945'... */
BFonctionI
DEFV(Local,DEFV(FonctionI,memorisation_1_point_06(AXf,AYf,AZf,AdXf,AdYf,AdZf)))
DEFV(Argument,DEFV(Float,AXf));
DEFV(Argument,DEFV(Float,AYf));
DEFV(Argument,DEFV(Float,AZf));
/* Definition de la position {x,y,z} de l'iteration courante. */
DEFV(Argument,DEFV(Float,AdXf));
DEFV(Argument,DEFV(Float,AdYf));
DEFV(Argument,DEFV(Float,AdZf));
/* Definition des differentielles {dx,dy,dz} de la position de l'iteration courante. */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
Bblock
INIT_ERROR;
/*..............................................................................................................................*/
Test(IFOU(IL_NE_FAUT_PAS(ignorer_les_points_trop_lointains)
,IFET(IL_FAUT(ignorer_les_points_trop_lointains)
,IFLT(RdisF3D(AXf,AYf,AZf,FXorigine,FYorigine,FZorigine),distance_des_points_trop_lointains)
)
)
)
Bblock
DEFV(Int,INIT(numero_de_l_iteration_courante,UNDEF));
/* Pour des raisons de compatibilite avec 'ATTENUATION(...)'. */
#include xrk/attractor.15.I"
EGAL(nombre_d_iterations_visualisees,NOMBRE_D_ITERATIONS_VISUALISEES);
EGAL(attenuation_de_la_premiere_iteration,ATTENUATION_DE_LA_PREMIERE_ITERATION);
EGAL(attenuation_de_la_derniere_iteration,ATTENUATION_DE_LA_DERNIERE_ITERATION);
/* Pour des raisons de compatibilite avec 'ATTENUATION(...)'. */
MEMORISATION_DU_POINT_COURANT(X_DERIVEE_DANS_01(AdXf)
,Y_DERIVEE_DANS_01(AdYf)
,Z_DERIVEE_DANS_01(AdZf)
);
/* Memorisation du point courant en Noir et Blanc ou en Couleurs, mais uniquement s'il est */
/* visible en fonction des conditions de visualisation... */
Eblock
ATes
Bblock
Eblock
ETes
RETU_ERROR;
Eblock
#undef DISTANCE_DES_POINTS_TROP_LOINTAINS
#undef IGNORER_LES_POINTS_TROP_LOINTAINS
EFonctionI
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D O N N E E S D E D E R I V A T I O N P A R T I E L L E N U M E R I Q U E : */
/* */
/*************************************************************************************************************************************/
#define FACTEUR_x_DE_PAS_DE_w1 \
FU
#define FACTEUR_x_DE_PAS_DE_w2 \
FZERO
#define FACTEUR_x_DE_PAS_DE_w3 \
FZERO
#define FACTEUR_x_DE_PAS_DE_w4 \
FZERO
#define FACTEUR_x_DE_PAS_DE_w5 \
FZERO
#define FACTEUR_x_DE_PAS_DE_w6 \
FZERO
#define FACTEUR_x_DE_PAS_DE_w7 \
FZERO
#define FACTEUR_x_DE_PAS_DE_w8 \
FZERO
DEFV(Local,DEFV(Float,INIT(facteur_x_de_pas_de_w1,FACTEUR_x_DE_PAS_DE_w1)));
DEFV(Local,DEFV(Float,INIT(facteur_x_de_pas_de_w2,FACTEUR_x_DE_PAS_DE_w2)));
DEFV(Local,DEFV(Float,INIT(facteur_x_de_pas_de_w3,FACTEUR_x_DE_PAS_DE_w3)));
DEFV(Local,DEFV(Float,INIT(facteur_x_de_pas_de_w4,FACTEUR_x_DE_PAS_DE_w4)));
DEFV(Local,DEFV(Float,INIT(facteur_x_de_pas_de_w5,FACTEUR_x_DE_PAS_DE_w5)));
DEFV(Local,DEFV(Float,INIT(facteur_x_de_pas_de_w6,FACTEUR_x_DE_PAS_DE_w6)));
DEFV(Local,DEFV(Float,INIT(facteur_x_de_pas_de_w7,FACTEUR_x_DE_PAS_DE_w7)));
DEFV(Local,DEFV(Float,INIT(facteur_x_de_pas_de_w8,FACTEUR_x_DE_PAS_DE_w8)));
/* Donnees de derivation partielle numerique de 'Fx(w1,w2,w3,w4,w5,w6,w7,w8)'. */
#define FACTEUR_y_DE_PAS_DE_w1 \
FZERO
#define FACTEUR_y_DE_PAS_DE_w2 \
FU
#define FACTEUR_y_DE_PAS_DE_w3 \
FZERO
#define FACTEUR_y_DE_PAS_DE_w4 \
FZERO
#define FACTEUR_y_DE_PAS_DE_w5 \
FZERO
#define FACTEUR_y_DE_PAS_DE_w6 \
FZERO
#define FACTEUR_y_DE_PAS_DE_w7 \
FZERO
#define FACTEUR_y_DE_PAS_DE_w8 \
FZERO
DEFV(Local,DEFV(Float,INIT(facteur_y_de_pas_de_w1,FACTEUR_y_DE_PAS_DE_w1)));
DEFV(Local,DEFV(Float,INIT(facteur_y_de_pas_de_w2,FACTEUR_y_DE_PAS_DE_w2)));
DEFV(Local,DEFV(Float,INIT(facteur_y_de_pas_de_w3,FACTEUR_y_DE_PAS_DE_w3)));
DEFV(Local,DEFV(Float,INIT(facteur_y_de_pas_de_w4,FACTEUR_y_DE_PAS_DE_w4)));
DEFV(Local,DEFV(Float,INIT(facteur_y_de_pas_de_w5,FACTEUR_y_DE_PAS_DE_w5)));
DEFV(Local,DEFV(Float,INIT(facteur_y_de_pas_de_w6,FACTEUR_y_DE_PAS_DE_w6)));
DEFV(Local,DEFV(Float,INIT(facteur_y_de_pas_de_w7,FACTEUR_y_DE_PAS_DE_w7)));
DEFV(Local,DEFV(Float,INIT(facteur_y_de_pas_de_w8,FACTEUR_y_DE_PAS_DE_w8)));
/* Donnees de derivation partielle numerique de 'Fy(w1,w2,w3,w4,w5,w6,w7,w8)'. */
#define FACTEUR_z_DE_PAS_DE_w1 \
FU
#define FACTEUR_z_DE_PAS_DE_w2 \
FZERO
#define FACTEUR_z_DE_PAS_DE_w3 \
FU
#define FACTEUR_z_DE_PAS_DE_w4 \
FZERO
#define FACTEUR_z_DE_PAS_DE_w5 \
FZERO
#define FACTEUR_z_DE_PAS_DE_w6 \
FZERO
#define FACTEUR_z_DE_PAS_DE_w7 \
FZERO
#define FACTEUR_z_DE_PAS_DE_w8 \
FZERO
DEFV(Local,DEFV(Float,INIT(facteur_z_de_pas_de_w1,FACTEUR_z_DE_PAS_DE_w1)));
DEFV(Local,DEFV(Float,INIT(facteur_z_de_pas_de_w2,FACTEUR_z_DE_PAS_DE_w2)));
DEFV(Local,DEFV(Float,INIT(facteur_z_de_pas_de_w3,FACTEUR_z_DE_PAS_DE_w3)));
DEFV(Local,DEFV(Float,INIT(facteur_z_de_pas_de_w4,FACTEUR_z_DE_PAS_DE_w4)));
DEFV(Local,DEFV(Float,INIT(facteur_z_de_pas_de_w5,FACTEUR_z_DE_PAS_DE_w5)));
DEFV(Local,DEFV(Float,INIT(facteur_z_de_pas_de_w6,FACTEUR_z_DE_PAS_DE_w6)));
DEFV(Local,DEFV(Float,INIT(facteur_z_de_pas_de_w7,FACTEUR_z_DE_PAS_DE_w7)));
DEFV(Local,DEFV(Float,INIT(facteur_z_de_pas_de_w8,FACTEUR_z_DE_PAS_DE_w8)));
/* Donnees de derivation partielle numerique de 'Fz(w1,w2,w3,w4,w5,w6,w7,w8)'. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D O N N E E S D E C O L O R I A G E : */
/* */
/*************************************************************************************************************************************/
#define PONDERATION__x_____DANS_dx \
FZERO
#define PONDERATION__y_____DANS_dx \
FZERO
#define PONDERATION__z_____DANS_dx \
FZERO
#define PONDERATION__w1_____DANS_dx \
FZERO
#define PONDERATION__w2_____DANS_dx \
FZERO
#define PONDERATION__w3_____DANS_dx \
FZERO
#define PONDERATION__w4_____DANS_dx \
FZERO
#define PONDERATION__w5_____DANS_dx \
FZERO
#define PONDERATION__w6_____DANS_dx \
FZERO
#define PONDERATION__w7_____DANS_dx \
FZERO
#define PONDERATION__w8_____DANS_dx \
FZERO
#define PONDERATION_dx_____DANS_dx \
FU
#define PONDERATION_dy_____DANS_dx \
FZERO
#define PONDERATION_dz_____DANS_dx \
FZERO
DEFV(Local,DEFV(Float,INIT(ponderation_de__x_____dans_dx,PONDERATION__x_____DANS_dx)));
DEFV(Local,DEFV(Float,INIT(ponderation_de__y_____dans_dx,PONDERATION__y_____DANS_dx)));
DEFV(Local,DEFV(Float,INIT(ponderation_de__z_____dans_dx,PONDERATION__z_____DANS_dx)));
DEFV(Local,DEFV(Float,INIT(ponderation_de__w1_____dans_dx,PONDERATION__w1_____DANS_dx)));
DEFV(Local,DEFV(Float,INIT(ponderation_de__w2_____dans_dx,PONDERATION__w2_____DANS_dx)));
DEFV(Local,DEFV(Float,INIT(ponderation_de__w3_____dans_dx,PONDERATION__w3_____DANS_dx)));
DEFV(Local,DEFV(Float,INIT(ponderation_de__w4_____dans_dx,PONDERATION__w4_____DANS_dx)));
DEFV(Local,DEFV(Float,INIT(ponderation_de__w5_____dans_dx,PONDERATION__w5_____DANS_dx)));
DEFV(Local,DEFV(Float,INIT(ponderation_de__w6_____dans_dx,PONDERATION__w6_____DANS_dx)));
DEFV(Local,DEFV(Float,INIT(ponderation_de__w7_____dans_dx,PONDERATION__w7_____DANS_dx)));
DEFV(Local,DEFV(Float,INIT(ponderation_de__w8_____dans_dx,PONDERATION__w8_____DANS_dx)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_dx_____dans_dx,PONDERATION_dx_____DANS_dx)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_dy_____dans_dx,PONDERATION_dy_____DANS_dx)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_dz_____dans_dx,PONDERATION_dz_____DANS_dx)));
/* Donnees de coloriage 'dcx'. */
#define PONDERATION__x_____DANS_dy \
FZERO
#define PONDERATION__y_____DANS_dy \
FZERO
#define PONDERATION__z_____DANS_dy \
FZERO
#define PONDERATION__w1_____DANS_dy \
FZERO
#define PONDERATION__w2_____DANS_dy \
FZERO
#define PONDERATION__w3_____DANS_dy \
FZERO
#define PONDERATION__w4_____DANS_dy \
FZERO
#define PONDERATION__w5_____DANS_dy \
FZERO
#define PONDERATION__w6_____DANS_dy \
FZERO
#define PONDERATION__w7_____DANS_dy \
FZERO
#define PONDERATION__w8_____DANS_dy \
FZERO
#define PONDERATION_dx_____DANS_dy \
FZERO
#define PONDERATION_dy_____DANS_dy \
FU
#define PONDERATION_dz_____DANS_dy \
FZERO
DEFV(Local,DEFV(Float,INIT(ponderation_de__x_____dans_dy,PONDERATION__x_____DANS_dy)));
DEFV(Local,DEFV(Float,INIT(ponderation_de__y_____dans_dy,PONDERATION__y_____DANS_dy)));
DEFV(Local,DEFV(Float,INIT(ponderation_de__z_____dans_dy,PONDERATION__z_____DANS_dy)));
DEFV(Local,DEFV(Float,INIT(ponderation_de__w1_____dans_dy,PONDERATION__w1_____DANS_dy)));
DEFV(Local,DEFV(Float,INIT(ponderation_de__w2_____dans_dy,PONDERATION__w2_____DANS_dy)));
DEFV(Local,DEFV(Float,INIT(ponderation_de__w3_____dans_dy,PONDERATION__w3_____DANS_dy)));
DEFV(Local,DEFV(Float,INIT(ponderation_de__w4_____dans_dy,PONDERATION__w4_____DANS_dy)));
DEFV(Local,DEFV(Float,INIT(ponderation_de__w5_____dans_dy,PONDERATION__w5_____DANS_dy)));
DEFV(Local,DEFV(Float,INIT(ponderation_de__w6_____dans_dy,PONDERATION__w6_____DANS_dy)));
DEFV(Local,DEFV(Float,INIT(ponderation_de__w7_____dans_dy,PONDERATION__w7_____DANS_dy)));
DEFV(Local,DEFV(Float,INIT(ponderation_de__w8_____dans_dy,PONDERATION__w8_____DANS_dy)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_dx_____dans_dy,PONDERATION_dx_____DANS_dy)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_dy_____dans_dy,PONDERATION_dy_____DANS_dy)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_dz_____dans_dy,PONDERATION_dz_____DANS_dy)));
/* Donnees de coloriage 'dcy'. */
#define PONDERATION__x_____DANS_dz \
FZERO
#define PONDERATION__y_____DANS_dz \
FZERO
#define PONDERATION__z_____DANS_dz \
FZERO
#define PONDERATION__w1_____DANS_dz \
FZERO
#define PONDERATION__w2_____DANS_dz \
FZERO
#define PONDERATION__w3_____DANS_dz \
FZERO
#define PONDERATION__w4_____DANS_dz \
FZERO
#define PONDERATION__w5_____DANS_dz \
FZERO
#define PONDERATION__w6_____DANS_dz \
FZERO
#define PONDERATION__w7_____DANS_dz \
FZERO
#define PONDERATION__w8_____DANS_dz \
FZERO
#define PONDERATION_dx_____DANS_dz \
FZERO
#define PONDERATION_dy_____DANS_dz \
FZERO
#define PONDERATION_dz_____DANS_dz \
FU
DEFV(Local,DEFV(Float,INIT(ponderation_de__x_____dans_dz,PONDERATION__x_____DANS_dz)));
DEFV(Local,DEFV(Float,INIT(ponderation_de__y_____dans_dz,PONDERATION__y_____DANS_dz)));
DEFV(Local,DEFV(Float,INIT(ponderation_de__z_____dans_dz,PONDERATION__z_____DANS_dz)));
DEFV(Local,DEFV(Float,INIT(ponderation_de__w1_____dans_dz,PONDERATION__w1_____DANS_dz)));
DEFV(Local,DEFV(Float,INIT(ponderation_de__w2_____dans_dz,PONDERATION__w2_____DANS_dz)));
DEFV(Local,DEFV(Float,INIT(ponderation_de__w3_____dans_dz,PONDERATION__w3_____DANS_dz)));
DEFV(Local,DEFV(Float,INIT(ponderation_de__w4_____dans_dz,PONDERATION__w4_____DANS_dz)));
DEFV(Local,DEFV(Float,INIT(ponderation_de__w5_____dans_dz,PONDERATION__w5_____DANS_dz)));
DEFV(Local,DEFV(Float,INIT(ponderation_de__w6_____dans_dz,PONDERATION__w6_____DANS_dz)));
DEFV(Local,DEFV(Float,INIT(ponderation_de__w7_____dans_dz,PONDERATION__w7_____DANS_dz)));
DEFV(Local,DEFV(Float,INIT(ponderation_de__w8_____dans_dz,PONDERATION__w8_____DANS_dz)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_dx_____dans_dz,PONDERATION_dx_____DANS_dz)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_dy_____dans_dz,PONDERATION_dy_____DANS_dz)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_dz_____dans_dz,PONDERATION_dz_____DANS_dz)));
/* Donnees de coloriage 'dcz'. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* 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 xrk/attractor.17.I"
Copyright © Jean-François COLONNA, 2023-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2023-2024.