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