/*************************************************************************************************************************************/ /* */ /* A T T R A C T E U R D E H E N O N : */ /* */ /* */ /* Author of '$xrk/henon.11$K' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 1992??????????). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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_CL_____MODULE_NON_OPTIMISABLE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* F I C H I E R S D ' I N C L U D E S : */ /* */ /*************************************************************************************************************************************/ #include INCLUDES_BASE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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 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. Elles ont ete */ /* obtenues a l'aide du programme '$xtc/henon.01$c'. */ /* */ /* */ /*************************************************************************************************************************************/ #define hXmin_ESPACE \ PARE(-1.30) #define hYmin_ESPACE \ PARE(-1.30) #define hZmin_ESPACE \ PARE(0.0) /* Definition du "coin" inferieur-gauche-arriere de l'espace physique. */ #define hXmax_ESPACE \ PARE(1.30) #define hYmax_ESPACE \ PARE(1.30) #define hZmax_ESPACE \ PARE(1.00) /* Definition du "coin" superieur-droite-avant de l'espace physique. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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 xrk/attractor.1D.I" /* Uniquement pour definir 'renormaliser_arbitrairement_les_differentielles' (inutile...). */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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" /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* G E N E R A T I O N D E S I M A G E S : */ /* */ /*************************************************************************************************************************************/ #define NIVEAU_DE_ROUGE_DE_LA_PARTICULE \ BLANC #define NIVEAU_DE_VERTE_DE_LA_PARTICULE \ BLANC #define NIVEAU_DE_BLEUE_DE_LA_PARTICULE \ BLANC DEFV(Local,DEFV(genere_p,INIT(niveau_de_ROUGE_de_la_particule,NIVEAU_DE_ROUGE_DE_LA_PARTICULE))); DEFV(Local,DEFV(genere_p,INIT(niveau_de_VERTE_de_la_particule,NIVEAU_DE_VERTE_DE_LA_PARTICULE))); DEFV(Local,DEFV(genere_p,INIT(niveau_de_BLEUE_de_la_particule,NIVEAU_DE_BLEUE_DE_LA_PARTICULE))); /* Couleur de materialisation de la particule. */ #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" /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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" #define RAYON_DE_VISUALISATION \ FRA2(FRA10(mhXYZlongueur_ESPACE)) DEFV(Local,DEFV(Float,INIT(rayon_de_visualisation,RAYON_DE_VISUALISATION))); /* Rayon du disque materialisant une iteration. Il fut exprime longtemps sous la */ /* forme : */ /* */ /* FRA2(FRA10(FU)) */ /* */ BFonctionI DEFV(Local,DEFV(FonctionI,memorisation_1_point_04(AXf,AYf,AZf,numero_de_l_iteration_courante))) 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(Int,numero_de_l_iteration_courante)); /* Numero de l'iteration courante afin d'attenuer eventuellement la luminance des points */ /* materialisant chaque iteration en fonction de leur numero (les premieres iterations etant */ /* plus sombres, et les dernieres etant plus lumineuses). */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock #include xrk/attractor.15.I" INIT_ERROR; /*..............................................................................................................................*/ MEMORISATION_DU_POINT_COURANT(______NORMALISE_NIVEAU(niveau_de_ROUGE_de_la_particule) ,______NORMALISE_NIVEAU(niveau_de_VERTE_de_la_particule) ,______NORMALISE_NIVEAU(niveau_de_BLEUE_de_la_particule) ); /* Memorisation du point courant en Noir et Blanc ou en Couleurs, mais uniquement s'il est */ /* visible en fonction des conditions de visualisation... */ RETU_ERROR; Eblock EFonctionI /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L ' A T T R A C T E U R D E H E N O N : */ /* */ /* */ /* Definition : */ /* */ /* Il est classiquement defini par */ /* le systeme d'iterations : */ /* 2 */ /* x = 1.0 + y - 1.4 x */ /* n+1 n n */ /* */ /* y = 0.3 x */ /* n+1 n */ /* */ /* ce que l'on peut generaliser en : */ /* */ /* x = F (x ,y ,z ) */ /* n+1 x n n n */ /* */ /* */ /* = X */ /* */ /* + (X .x + X .y + X .z ) */ /* x n y n z n */ /* */ /* + (X .x .x + X .y .y + X .z .z ) */ /* xx n n yy n n zz n n */ /* */ /* + (X .x .y + X .y .z + X .z .x ) */ /* xy n n yz n n zx n n */ /* */ /* + (X .x .y .z ) */ /* xyz n n n */ /* */ /* */ /* */ /* y = F (x ,y ,z ) */ /* n+1 y n n n */ /* */ /* */ /* = Y */ /* */ /* + (Y .x + Y .y + Y .z ) */ /* x n y n z n */ /* */ /* + (Y .x .x + Y .y .y + Y .z .z ) */ /* xx n n yy n n zz n n */ /* */ /* + (Y .x .y + Y .y .z + Y .z .x ) */ /* xy n n yz n n zx n n */ /* */ /* + (Y .x .y .z ) */ /* xyz n n n */ /* */ /* */ /* */ /* z = F (x ,y ,z ) */ /* n+1 z n n n */ /* */ /* */ /* = Z */ /* */ /* + (Z .x + Z .y + Z .z ) */ /* x n y n z n */ /* */ /* + (Z .x .x + Z .y .y + Z .z .z ) */ /* xx n n yy n n zz n n */ /* */ /* + (Z .x .y + Z .y .z + Z .z .x ) */ /* xy n n yz n n zx n n */ /* */ /* + (Z .x .y .z ) */ /* xyz n n n */ /* */ /* */ /*************************************************************************************************************************************/ #include xrk/attractor.17.I" dfTRANSFORMAT_31(liste_NOMBRE_D_ITERATIONS,fichier_NOMBRE_D_ITERATIONS,NOMBRE_D_ITERATIONS_IMPLICITE,NOMBRE_D_ITERATIONS) /* Definition du fichier des nombres d'iterations. */ #define sNOMBRE_D_ITERATIONS(numero_de_la_periode) \ INTE(sTRANSFORMAT_31(numero_de_la_periode,liste_NOMBRE_D_ITERATIONS)) \ /* Formule generale definissant les variations du nombre d'iterations. */ #define CX \ FU #define CXx \ FZERO #define CXy \ FU #define CXz \ FZERO #define CXxx \ NEGA(FRA10(FLOT(QUATORZE))) #define CXyy \ FZERO #define CXzz \ FZERO #define CXxy \ FZERO #define CXyz \ FZERO #define CXzx \ FZERO #define CXxyz \ FZERO DEFV(Local,DEFV(Float,INIT(X_,CX))); DEFV(Local,DEFV(Float,INIT(Xx,CXx))); DEFV(Local,DEFV(Float,INIT(Xy,CXy))); DEFV(Local,DEFV(Float,INIT(Xz,CXz))); DEFV(Local,DEFV(Float,INIT(Xxx,CXxx))); DEFV(Local,DEFV(Float,INIT(Xyy,CXyy))); DEFV(Local,DEFV(Float,INIT(Xzz,CXzz))); DEFV(Local,DEFV(Float,INIT(Xxy,CXxy))); DEFV(Local,DEFV(Float,INIT(Xyz,CXyz))); DEFV(Local,DEFV(Float,INIT(Xzx,CXzx))); DEFV(Local,DEFV(Float,INIT(Xxyz,CXxyz))); /* Definition des coefficients de la premiere iteration. */ /* */ /* ATTENTION, on notera le 'X_' mis a la place de 'X' le 19970408085621 a cause d'un */ /* conflit avec le 'X' defini dans 'v $xiii/Images$STR'. */ #define CY \ FZERO #define CYx \ FRA10(FLOT(TROIS)) #define CYy \ FZERO #define CYz \ FZERO #define CYxx \ FZERO #define CYyy \ FZERO #define CYzz \ FZERO #define CYxy \ FZERO #define CYyz \ FZERO #define CYzx \ FZERO #define CYxyz \ FZERO DEFV(Local,DEFV(Float,INIT(Y_,CY))); DEFV(Local,DEFV(Float,INIT(Yx,CYx))); DEFV(Local,DEFV(Float,INIT(Yy,CYy))); DEFV(Local,DEFV(Float,INIT(Yz,CYz))); DEFV(Local,DEFV(Float,INIT(Yxx,CYxx))); DEFV(Local,DEFV(Float,INIT(Yyy,CYyy))); DEFV(Local,DEFV(Float,INIT(Yzz,CYzz))); DEFV(Local,DEFV(Float,INIT(Yxy,CYxy))); DEFV(Local,DEFV(Float,INIT(Yyz,CYyz))); DEFV(Local,DEFV(Float,INIT(Yzx,CYzx))); DEFV(Local,DEFV(Float,INIT(Yxyz,CYxyz))); /* Definition des coefficients de la deuxieme iteration. */ /* */ /* ATTENTION, on notera le 'Y_' mis a la place de 'Y' le 19970408085621 a cause d'un */ /* conflit avec le 'Y' defini dans 'v $xiii/Images$STR'. */ #define CZ \ FZERO #define CZx \ FZERO #define CZy \ FZERO #define CZz \ FZERO #define CZxx \ FZERO #define CZyy \ FZERO #define CZzz \ FZERO #define CZxy \ FZERO #define CZyz \ FZERO #define CZzx \ FZERO #define CZxyz \ FZERO DEFV(Local,DEFV(Float,INIT(Z_,CZ))); DEFV(Local,DEFV(Float,INIT(Zx,CZx))); DEFV(Local,DEFV(Float,INIT(Zy,CZy))); DEFV(Local,DEFV(Float,INIT(Zz,CZz))); DEFV(Local,DEFV(Float,INIT(Zxx,CZxx))); DEFV(Local,DEFV(Float,INIT(Zyy,CZyy))); DEFV(Local,DEFV(Float,INIT(Zzz,CZzz))); DEFV(Local,DEFV(Float,INIT(Zxy,CZxy))); DEFV(Local,DEFV(Float,INIT(Zyz,CZyz))); DEFV(Local,DEFV(Float,INIT(Zzx,CZzx))); DEFV(Local,DEFV(Float,INIT(Zxyz,CZxyz))); /* Definition des coefficients de la troisieme iteration. */ /* */ /* ATTENTION, on notera le 'Z_' mis a la place de 'Z' le 19970408085621 a cause d'un */ /* conflit avec le 'Z' defini dans 'v $xiii/Images$STR'. */ #define CX0 \ FZERO DEFV(Local,DEFV(Float,INIT(cx,FLOT__UNDEF))); DEFV(Local,DEFV(Float,INIT(Icx,FLOT__UNDEF))); /* Definition de 'x' et d'une valeur intermediaire due a 'ITERE(...)'. */ #define CY0 \ FZERO DEFV(Local,DEFV(Float,INIT(cy,FLOT__UNDEF))); DEFV(Local,DEFV(Float,INIT(Icy,FLOT__UNDEF))); /* Definition de 'y' et d'une valeur intermediaire due a 'ITERE(...)'. */ #define CZ0 \ FZERO DEFV(Local,DEFV(Float,INIT(cz,FLOT__UNDEF))); DEFV(Local,DEFV(Float,INIT(Icz,FLOT__UNDEF))); /* Definition de 'z' et d'une valeur intermediaire due a 'ITERE(...)'. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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 : */ /* */ /*************************************************************************************************************************************/ dfTRANSFORMAT_31(liste_COEFFICIENT_X,fichier_COEFFICIENT_X,COEFFICIENT_X_IMPLICITE,CX) dfTRANSFORMAT_31(liste_COEFFICIENT_Xx,fichier_COEFFICIENT_Xx,COEFFICIENT_Xx_IMPLICITE,CXx) dfTRANSFORMAT_31(liste_COEFFICIENT_Xy,fichier_COEFFICIENT_Xy,COEFFICIENT_Xy_IMPLICITE,CXy) dfTRANSFORMAT_31(liste_COEFFICIENT_Xz,fichier_COEFFICIENT_Xz,COEFFICIENT_Xz_IMPLICITE,CXz) dfTRANSFORMAT_31(liste_COEFFICIENT_Xxx,fichier_COEFFICIENT_Xxx,COEFFICIENT_Xxx_IMPLICITE,CXxx) dfTRANSFORMAT_31(liste_COEFFICIENT_Xyy,fichier_COEFFICIENT_Xyy,COEFFICIENT_Xyy_IMPLICITE,CXyy) dfTRANSFORMAT_31(liste_COEFFICIENT_Xzz,fichier_COEFFICIENT_Xzz,COEFFICIENT_Xzz_IMPLICITE,CXzz) dfTRANSFORMAT_31(liste_COEFFICIENT_Xxy,fichier_COEFFICIENT_Xxy,COEFFICIENT_Xxy_IMPLICITE,CXxy) dfTRANSFORMAT_31(liste_COEFFICIENT_Xyz,fichier_COEFFICIENT_Xyz,COEFFICIENT_Xyz_IMPLICITE,CXyz) dfTRANSFORMAT_31(liste_COEFFICIENT_Xzx,fichier_COEFFICIENT_Xzx,COEFFICIENT_Xzx_IMPLICITE,CXzx) dfTRANSFORMAT_31(liste_COEFFICIENT_Xxyz,fichier_COEFFICIENT_Xxyz,COEFFICIENT_Xxyz_IMPLICITE,CXxyz) /* Definition des fichiers des coefficients de la premiere iteration. */ #define sCOEFFICIENT_X(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_COEFFICIENT_X)) #define sCOEFFICIENT_Xx(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_COEFFICIENT_Xx)) #define sCOEFFICIENT_Xy(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_COEFFICIENT_Xy)) #define sCOEFFICIENT_Xz(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_COEFFICIENT_Xz)) #define sCOEFFICIENT_Xxx(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_COEFFICIENT_Xxx)) #define sCOEFFICIENT_Xyy(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_COEFFICIENT_Xyy)) #define sCOEFFICIENT_Xzz(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_COEFFICIENT_Xzz)) #define sCOEFFICIENT_Xxy(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_COEFFICIENT_Xxy)) #define sCOEFFICIENT_Xyz(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_COEFFICIENT_Xyz)) #define sCOEFFICIENT_Xzx(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_COEFFICIENT_Xzx)) #define sCOEFFICIENT_Xxyz(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_COEFFICIENT_Xxyz)) /* Formule generale definissant les variations des coefficients de la premiere equation. */ dfTRANSFORMAT_31(liste_COEFFICIENT_Y,fichier_COEFFICIENT_Y,COEFFICIENT_Y_IMPLICITE,CY) dfTRANSFORMAT_31(liste_COEFFICIENT_Yx,fichier_COEFFICIENT_Yx,COEFFICIENT_Yx_IMPLICITE,CYx) dfTRANSFORMAT_31(liste_COEFFICIENT_Yy,fichier_COEFFICIENT_Yy,COEFFICIENT_Yy_IMPLICITE,CYy) dfTRANSFORMAT_31(liste_COEFFICIENT_Yz,fichier_COEFFICIENT_Yz,COEFFICIENT_Yz_IMPLICITE,CYz) dfTRANSFORMAT_31(liste_COEFFICIENT_Yxx,fichier_COEFFICIENT_Yxx,COEFFICIENT_Yxx_IMPLICITE,CYxx) dfTRANSFORMAT_31(liste_COEFFICIENT_Yyy,fichier_COEFFICIENT_Yyy,COEFFICIENT_Yyy_IMPLICITE,CYyy) dfTRANSFORMAT_31(liste_COEFFICIENT_Yzz,fichier_COEFFICIENT_Yzz,COEFFICIENT_Yzz_IMPLICITE,CYzz) dfTRANSFORMAT_31(liste_COEFFICIENT_Yxy,fichier_COEFFICIENT_Yxy,COEFFICIENT_Yxy_IMPLICITE,CYxy) dfTRANSFORMAT_31(liste_COEFFICIENT_Yyz,fichier_COEFFICIENT_Yyz,COEFFICIENT_Yyz_IMPLICITE,CYyz) dfTRANSFORMAT_31(liste_COEFFICIENT_Yzx,fichier_COEFFICIENT_Yzx,COEFFICIENT_Yzx_IMPLICITE,CYzx) dfTRANSFORMAT_31(liste_COEFFICIENT_Yxyz,fichier_COEFFICIENT_Yxyz,COEFFICIENT_Yxyz_IMPLICITE,CYxyz) /* Definition des fichiers des coefficients de la deuxieme iteration. */ #define sCOEFFICIENT_Y(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_COEFFICIENT_Y)) #define sCOEFFICIENT_Yx(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_COEFFICIENT_Yx)) #define sCOEFFICIENT_Yy(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_COEFFICIENT_Yy)) #define sCOEFFICIENT_Yz(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_COEFFICIENT_Yz)) #define sCOEFFICIENT_Yxx(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_COEFFICIENT_Yxx)) #define sCOEFFICIENT_Yyy(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_COEFFICIENT_Yyy)) #define sCOEFFICIENT_Yzz(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_COEFFICIENT_Yzz)) #define sCOEFFICIENT_Yxy(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_COEFFICIENT_Yxy)) #define sCOEFFICIENT_Yyz(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_COEFFICIENT_Yyz)) #define sCOEFFICIENT_Yzx(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_COEFFICIENT_Yzx)) #define sCOEFFICIENT_Yxyz(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_COEFFICIENT_Yxyz)) /* Formule generale definissant les variations des coefficients de la deuxieme equation. */ dfTRANSFORMAT_31(liste_COEFFICIENT_Z,fichier_COEFFICIENT_Z,COEFFICIENT_Z_IMPLICITE,CZ) dfTRANSFORMAT_31(liste_COEFFICIENT_Zx,fichier_COEFFICIENT_Zx,COEFFICIENT_Zx_IMPLICITE,CZx) dfTRANSFORMAT_31(liste_COEFFICIENT_Zy,fichier_COEFFICIENT_Zy,COEFFICIENT_Zy_IMPLICITE,CZy) dfTRANSFORMAT_31(liste_COEFFICIENT_Zz,fichier_COEFFICIENT_Zz,COEFFICIENT_Zz_IMPLICITE,CZz) dfTRANSFORMAT_31(liste_COEFFICIENT_Zxx,fichier_COEFFICIENT_Zxx,COEFFICIENT_Zxx_IMPLICITE,CZxx) dfTRANSFORMAT_31(liste_COEFFICIENT_Zyy,fichier_COEFFICIENT_Zyy,COEFFICIENT_Zyy_IMPLICITE,CZyy) dfTRANSFORMAT_31(liste_COEFFICIENT_Zzz,fichier_COEFFICIENT_Zzz,COEFFICIENT_Zzz_IMPLICITE,CZzz) dfTRANSFORMAT_31(liste_COEFFICIENT_Zxy,fichier_COEFFICIENT_Zxy,COEFFICIENT_Zxy_IMPLICITE,CZxy) dfTRANSFORMAT_31(liste_COEFFICIENT_Zyz,fichier_COEFFICIENT_Zyz,COEFFICIENT_Zyz_IMPLICITE,CZyz) dfTRANSFORMAT_31(liste_COEFFICIENT_Zzx,fichier_COEFFICIENT_Zzx,COEFFICIENT_Zzx_IMPLICITE,CZzx) dfTRANSFORMAT_31(liste_COEFFICIENT_Zxyz,fichier_COEFFICIENT_Zxyz,COEFFICIENT_Zxyz_IMPLICITE,CZxyz) /* Definition des fichiers des coefficients de la troisieme iteration. */ #define sCOEFFICIENT_Z(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_COEFFICIENT_Z)) #define sCOEFFICIENT_Zx(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_COEFFICIENT_Zx)) #define sCOEFFICIENT_Zy(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_COEFFICIENT_Zy)) #define sCOEFFICIENT_Zz(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_COEFFICIENT_Zz)) #define sCOEFFICIENT_Zxx(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_COEFFICIENT_Zxx)) #define sCOEFFICIENT_Zyy(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_COEFFICIENT_Zyy)) #define sCOEFFICIENT_Zzz(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_COEFFICIENT_Zzz)) #define sCOEFFICIENT_Zxy(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_COEFFICIENT_Zxy)) #define sCOEFFICIENT_Zyz(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_COEFFICIENT_Zyz)) #define sCOEFFICIENT_Zzx(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_COEFFICIENT_Zzx)) #define sCOEFFICIENT_Zxyz(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_COEFFICIENT_Zxyz)) /* Formule generale definissant les variations des coefficients de la troisieme equation. */ dfTRANSFORMAT_31(liste_VARIABLE_cx0,fichier_VARIABLE_cx0,VARIABLE_cx0_IMPLICITE,CX0) dfTRANSFORMAT_31(liste_VARIABLE_cy0,fichier_VARIABLE_cy0,VARIABLE_cy0_IMPLICITE,CY0) dfTRANSFORMAT_31(liste_VARIABLE_cz0,fichier_VARIABLE_cz0,VARIABLE_cz0_IMPLICITE,CZ0) /* Definition des fichiers des valeurs initiales des trois variables (x0,y0,z0). */ #define sVARIABLE_cx0(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_VARIABLE_cx0)) #define sVARIABLE_cy0(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_VARIABLE_cy0)) #define sVARIABLE_cz0(numero_de_la_periode) \ FLOT(sTRANSFORMAT_31(numero_de_la_periode,liste_VARIABLE_cz0)) /* Formule generale definissant les variations des valeurs initiales des trois variables. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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 ' : */ /* */ /*************************************************************************************************************************************/ #define Fx(cx,cy,cz) \ ADD5(X_ \ ,LIZ3(Xx,cx,Xy,cy,Xz,cz) \ ,LIZ3(Xxx,MUL2(cx,cx),Xyy,MUL2(cy,cy),Xzz,MUL2(cz,cz)) \ ,LIZ3(Xxy,MUL2(cx,cy),Xyz,MUL2(cy,cz),Xzx,MUL2(cz,cx)) \ ,MUL2(Xxyz,MUL3(cx,cy,cz)) \ ) \ /* Definition de la fonction F (x,y,z). */ \ /* x */ #define Fy(cx,cy,cz) \ ADD5(Y_ \ ,LIZ3(Yx,cx,Yy,cy,Yz,cz) \ ,LIZ3(Yxx,MUL2(cx,cx),Yyy,MUL2(cy,cy),Yzz,MUL2(cz,cz)) \ ,LIZ3(Yxy,MUL2(cx,cy),Yyz,MUL2(cy,cz),Yzx,MUL2(cz,cx)) \ ,MUL2(Yxyz,MUL3(cx,cy,cz)) \ ) \ /* Definition de la fonction F (x,y,z). */ \ /* y */ #define Fz(cx,cy,cz) \ ADD5(Z_ \ ,LIZ3(Zx,cx,Zy,cy,Zz,cz) \ ,LIZ3(Zxx,MUL2(cx,cx),Zyy,MUL2(cy,cy),Zzz,MUL2(cz,cz)) \ ,LIZ3(Zxy,MUL2(cx,cy),Zyz,MUL2(cy,cz),Zzx,MUL2(cz,cx)) \ ,MUL2(Zxyz,MUL3(cx,cy,cz)) \ ) \ /* Definition de la fonction F (x,y,z). */ \ /* z */ #define ITERE(v2,v1,fonction) \ Bblock \ Test(aIFID(v1,v2)) \ Bblock \ PRINT_ERREUR("une coordonnee va etre mise a jour alors que son ancienne valeur peut etre encore utile"); \ /* En effet, lors de l'integration qui va suivre, on calcule : */ \ /* */ \ /* v2 = fonction(v1) */ \ /* */ \ /* or, lorsque 'v1' et 'v2' sont identiques, il y a un risque tres fort que l'ancienne */ \ /* valeur 'v1' soit encore utile par la suite (dans l'evaluation des fonctions F(x,y,z)), */ \ /* il faut donc prevoir une valeur intermediaire... */ \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ EGAL(v2,fonction); \ /* Puis iteration : */ \ /* */ \ /* v2 = fonction(v1). */ \ /* */ \ Eblock \ /* Procedure d'iteration... */ #define MISE_A_JOUR(v12,v11,v22,v21,v32,v31) \ Bblock \ EGAL(v12,v11); \ EGAL(v22,v21); \ EGAL(v32,v31); \ Eblock \ /* Procedure de mise a jour a la suite de 'ITERE(...)' lorsque l'on est dans le cas ou */ \ /* les variables 'v1' et 'v2' sont identiques... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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. On notera bien l'absence de point-virgule apres */ /* 'DONNEES_DE_RECHERCHE_DES_EXTREMA_DES_COORDONNEES'. */ /* */ /* Le 20061211112027 'DONNEES_DE_RECHERCHE_DES_EXTREMA_DES_COORDONNEES' a ete remplace par */ /* 'DONNEES_DE_RECHERCHE_DES_EXTREMA_DES_COORDONNEES_ET_DES_DERIVEES' a cause de la */ /* definition de 'prendre_la_valeur_absolue_des_differentielles' necessaires dans */ /* 'v $xrv/champs_5.1A$I prendre_la_valeur_absolue_des_differentielles'... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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" /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A T T R A C T E U R D E H E N O N : */ /* */ /*************************************************************************************************************************************/ BCommande(nombre_d_arguments,arguments) /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ INITIALISATIONS_GENERALES; /* Initialisations generales faites au tout debut... */ iTRANSFORMAT_31(liste_COEFFICIENT_X,COEFFICIENT_X_IMPLICITE); iTRANSFORMAT_31(liste_COEFFICIENT_Xx,COEFFICIENT_Xx_IMPLICITE); iTRANSFORMAT_31(liste_COEFFICIENT_Xy,COEFFICIENT_Xy_IMPLICITE); iTRANSFORMAT_31(liste_COEFFICIENT_Xz,COEFFICIENT_Xz_IMPLICITE); iTRANSFORMAT_31(liste_COEFFICIENT_Xxy,COEFFICIENT_Xxy_IMPLICITE); iTRANSFORMAT_31(liste_COEFFICIENT_Xxx,COEFFICIENT_Xxx_IMPLICITE); iTRANSFORMAT_31(liste_COEFFICIENT_Xyy,COEFFICIENT_Xyy_IMPLICITE); iTRANSFORMAT_31(liste_COEFFICIENT_Xzz,COEFFICIENT_Xzz_IMPLICITE); iTRANSFORMAT_31(liste_COEFFICIENT_Xyz,COEFFICIENT_Xyz_IMPLICITE); iTRANSFORMAT_31(liste_COEFFICIENT_Xzx,COEFFICIENT_Xzx_IMPLICITE); iTRANSFORMAT_31(liste_COEFFICIENT_Xxyz,COEFFICIENT_Xxyz_IMPLICITE); /* Initialisation des coefficients de la premiere iteration. */ iTRANSFORMAT_31(liste_COEFFICIENT_Y,COEFFICIENT_Y_IMPLICITE); iTRANSFORMAT_31(liste_COEFFICIENT_Yx,COEFFICIENT_Yx_IMPLICITE); iTRANSFORMAT_31(liste_COEFFICIENT_Yy,COEFFICIENT_Yy_IMPLICITE); iTRANSFORMAT_31(liste_COEFFICIENT_Yz,COEFFICIENT_Yz_IMPLICITE); iTRANSFORMAT_31(liste_COEFFICIENT_Yxx,COEFFICIENT_Yxx_IMPLICITE); iTRANSFORMAT_31(liste_COEFFICIENT_Yyy,COEFFICIENT_Yyy_IMPLICITE); iTRANSFORMAT_31(liste_COEFFICIENT_Yzz,COEFFICIENT_Yzz_IMPLICITE); iTRANSFORMAT_31(liste_COEFFICIENT_Yxy,COEFFICIENT_Yxy_IMPLICITE); iTRANSFORMAT_31(liste_COEFFICIENT_Yyz,COEFFICIENT_Yyz_IMPLICITE); iTRANSFORMAT_31(liste_COEFFICIENT_Yzx,COEFFICIENT_Yzx_IMPLICITE); iTRANSFORMAT_31(liste_COEFFICIENT_Yxyz,COEFFICIENT_Yxyz_IMPLICITE); /* Initialisation des coefficients de la deuxieme iteration. */ iTRANSFORMAT_31(liste_COEFFICIENT_Z,COEFFICIENT_Z_IMPLICITE); iTRANSFORMAT_31(liste_COEFFICIENT_Zx,COEFFICIENT_Zx_IMPLICITE); iTRANSFORMAT_31(liste_COEFFICIENT_Zy,COEFFICIENT_Zy_IMPLICITE); iTRANSFORMAT_31(liste_COEFFICIENT_Zz,COEFFICIENT_Zz_IMPLICITE); iTRANSFORMAT_31(liste_COEFFICIENT_Zxx,COEFFICIENT_Zxx_IMPLICITE); iTRANSFORMAT_31(liste_COEFFICIENT_Zyy,COEFFICIENT_Zyy_IMPLICITE); iTRANSFORMAT_31(liste_COEFFICIENT_Zzz,COEFFICIENT_Zzz_IMPLICITE); iTRANSFORMAT_31(liste_COEFFICIENT_Zxy,COEFFICIENT_Zxy_IMPLICITE); iTRANSFORMAT_31(liste_COEFFICIENT_Zyz,COEFFICIENT_Zyz_IMPLICITE); iTRANSFORMAT_31(liste_COEFFICIENT_Zzx,COEFFICIENT_Zzx_IMPLICITE); iTRANSFORMAT_31(liste_COEFFICIENT_Zxyz,COEFFICIENT_Zxyz_IMPLICITE); /* Initialisation des coefficients de la troisieme iteration. */ iTRANSFORMAT_31(liste_VARIABLE_cx0,VARIABLE_cx0_IMPLICITE); iTRANSFORMAT_31(liste_VARIABLE_cy0,VARIABLE_cy0_IMPLICITE); iTRANSFORMAT_31(liste_VARIABLE_cz0,VARIABLE_cz0_IMPLICITE); /* Initialisation des valeurs initiales des trois variables (x0,y0,z0). */ iTRANSFORMAT_31(liste_NOMBRE_D_ITERATIONS,NOMBRE_D_ITERATIONS_IMPLICITE); /* Initialisation du nombre d'iterations. */ #include xrv/champs_5.1A.I" GET_ARGUMENTSv(nombre_d_arguments ,BLOC(PROCESS_ARGUMENTS_GEOMETRIQUES; PROCESS_ARGUMENT_FICHIER("COEFFICIENT_X=" ,fichier_COEFFICIENT_X ,liste_COEFFICIENT_X ,COEFFICIENT_X_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("COEFFICIENT_Xx=" ,fichier_COEFFICIENT_Xx ,liste_COEFFICIENT_Xx ,COEFFICIENT_Xx_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("COEFFICIENT_Xy=" ,fichier_COEFFICIENT_Xy ,liste_COEFFICIENT_Xy ,COEFFICIENT_Xy_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("COEFFICIENT_Xz=" ,fichier_COEFFICIENT_Xz ,liste_COEFFICIENT_Xz ,COEFFICIENT_Xz_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("COEFFICIENT_Xxx=" ,fichier_COEFFICIENT_Xxx ,liste_COEFFICIENT_Xxx ,COEFFICIENT_Xxx_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("COEFFICIENT_Xyy=" ,fichier_COEFFICIENT_Xyy ,liste_COEFFICIENT_Xyy ,COEFFICIENT_Xyy_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("COEFFICIENT_Xzz=" ,fichier_COEFFICIENT_Xzz ,liste_COEFFICIENT_Xzz ,COEFFICIENT_Xzz_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("COEFFICIENT_Xxy=" ,fichier_COEFFICIENT_Xxy ,liste_COEFFICIENT_Xxy ,COEFFICIENT_Xxy_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("COEFFICIENT_Xyz=" ,fichier_COEFFICIENT_Xyz ,liste_COEFFICIENT_Xyz ,COEFFICIENT_Xyz_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("COEFFICIENT_Xzx=" ,fichier_COEFFICIENT_Xzx ,liste_COEFFICIENT_Xzx ,COEFFICIENT_Xzx_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("COEFFICIENT_Xxyz=" ,fichier_COEFFICIENT_Xxyz ,liste_COEFFICIENT_Xxyz ,COEFFICIENT_Xxyz_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("COEFFICIENT_Y=" ,fichier_COEFFICIENT_Y ,liste_COEFFICIENT_Y ,COEFFICIENT_Y_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("COEFFICIENT_Yx=" ,fichier_COEFFICIENT_Yx ,liste_COEFFICIENT_Yx ,COEFFICIENT_Yx_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("COEFFICIENT_Yy=" ,fichier_COEFFICIENT_Yy ,liste_COEFFICIENT_Yy ,COEFFICIENT_Yy_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("COEFFICIENT_Yz=" ,fichier_COEFFICIENT_Yz ,liste_COEFFICIENT_Yz ,COEFFICIENT_Yz_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("COEFFICIENT_Yxx=" ,fichier_COEFFICIENT_Yxx ,liste_COEFFICIENT_Yxx ,COEFFICIENT_Yxx_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("COEFFICIENT_Yyy=" ,fichier_COEFFICIENT_Yyy ,liste_COEFFICIENT_Yyy ,COEFFICIENT_Yyy_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("COEFFICIENT_Yzz=" ,fichier_COEFFICIENT_Yzz ,liste_COEFFICIENT_Yzz ,COEFFICIENT_Yzz_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("COEFFICIENT_Yxy=" ,fichier_COEFFICIENT_Yxy ,liste_COEFFICIENT_Yxy ,COEFFICIENT_Yxy_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("COEFFICIENT_Yyz=" ,fichier_COEFFICIENT_Yyz ,liste_COEFFICIENT_Yyz ,COEFFICIENT_Yyz_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("COEFFICIENT_Yzx=" ,fichier_COEFFICIENT_Yzx ,liste_COEFFICIENT_Yzx ,COEFFICIENT_Yzx_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("COEFFICIENT_Yxyz=" ,fichier_COEFFICIENT_Yxyz ,liste_COEFFICIENT_Yxyz ,COEFFICIENT_Yxyz_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("COEFFICIENT_Z=" ,fichier_COEFFICIENT_Z ,liste_COEFFICIENT_Z ,COEFFICIENT_Z_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("COEFFICIENT_Zx=" ,fichier_COEFFICIENT_Zx ,liste_COEFFICIENT_Zx ,COEFFICIENT_Zx_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("COEFFICIENT_Zy=" ,fichier_COEFFICIENT_Zy ,liste_COEFFICIENT_Zy ,COEFFICIENT_Zy_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("COEFFICIENT_Zz=" ,fichier_COEFFICIENT_Zz ,liste_COEFFICIENT_Zz ,COEFFICIENT_Zz_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("COEFFICIENT_Zxx=" ,fichier_COEFFICIENT_Zxx ,liste_COEFFICIENT_Zxx ,COEFFICIENT_Zxx_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("COEFFICIENT_Zyy=" ,fichier_COEFFICIENT_Zyy ,liste_COEFFICIENT_Zyy ,COEFFICIENT_Zyy_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("COEFFICIENT_Zzz=" ,fichier_COEFFICIENT_Zzz ,liste_COEFFICIENT_Zzz ,COEFFICIENT_Zzz_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("COEFFICIENT_Zxy=" ,fichier_COEFFICIENT_Zxy ,liste_COEFFICIENT_Zxy ,COEFFICIENT_Zxy_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("COEFFICIENT_Zyz=" ,fichier_COEFFICIENT_Zyz ,liste_COEFFICIENT_Zyz ,COEFFICIENT_Zyz_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("COEFFICIENT_Zzx=" ,fichier_COEFFICIENT_Zzx ,liste_COEFFICIENT_Zzx ,COEFFICIENT_Zzx_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("COEFFICIENT_Zxyz=" ,fichier_COEFFICIENT_Zxyz ,liste_COEFFICIENT_Zxyz ,COEFFICIENT_Zxyz_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("VARIABLE_cx0=" ,fichier_VARIABLE_cx0 ,liste_VARIABLE_cx0 ,VARIABLE_cx0_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("VARIABLE_cy0=" ,fichier_VARIABLE_cy0 ,liste_VARIABLE_cy0 ,VARIABLE_cy0_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("VARIABLE_cz0=" ,fichier_VARIABLE_cz0 ,liste_VARIABLE_cz0 ,VARIABLE_cz0_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENT_FICHIER("NOMBRE_D_ITERATIONS=" ,fichier_NOMBRE_D_ITERATIONS ,liste_NOMBRE_D_ITERATIONS ,NOMBRE_D_ITERATIONS_IMPLICITE ,gTRANSFORMAT_31 ); PROCESS_ARGUMENTS_DE_VISUALISATION; GET_ARGUMENT_I("n=""iterations=",nombre_d_iterations); GET_ARGUMENT_P("ROUGE_particule=",niveau_de_ROUGE_de_la_particule); GET_ARGUMENT_P("VERTE_particule=",niveau_de_VERTE_de_la_particule); GET_ARGUMENT_P("BLEUE_particule=",niveau_de_BLEUE_de_la_particule); ) ); #include xrv/champs_5.19.I" /* Pour eviter le message : */ /* */ /* Static function is not referenced. */ /* */ /* sur 'SYSTEME_ES9000_AIX_CC'... */ #include xrk/attractor.19.I" /* Validations et definition de l'espace physique. */ Komp(numero_de_la_periode_courante_de_la_simulation,nombre_de_periodes_de_la_simulation) Bblock INITIALISATIONS_RELATIVES_A_CHAQUE_NOUVELLE_IMAGE(numero_de_la_periode_courante); /* Initialisations necessaires avant le calcul et la generation de chaque nouvelle image. */ EGAL(X_,sCOEFFICIENT_X(numero_de_la_periode_courante)); EGAL(Xx,sCOEFFICIENT_Xx(numero_de_la_periode_courante)); EGAL(Xy,sCOEFFICIENT_Xy(numero_de_la_periode_courante)); EGAL(Xz,sCOEFFICIENT_Xz(numero_de_la_periode_courante)); EGAL(Xxx,sCOEFFICIENT_Xxx(numero_de_la_periode_courante)); EGAL(Xyy,sCOEFFICIENT_Xyy(numero_de_la_periode_courante)); EGAL(Xzz,sCOEFFICIENT_Xzz(numero_de_la_periode_courante)); EGAL(Xxy,sCOEFFICIENT_Xxy(numero_de_la_periode_courante)); EGAL(Xyz,sCOEFFICIENT_Xyz(numero_de_la_periode_courante)); EGAL(Xzx,sCOEFFICIENT_Xzx(numero_de_la_periode_courante)); EGAL(Xxyz,sCOEFFICIENT_Xxyz(numero_de_la_periode_courante)); /* Calcul des coefficients de la premiere iteration. */ EGAL(Y_,sCOEFFICIENT_Y(numero_de_la_periode_courante)); EGAL(Yx,sCOEFFICIENT_Yx(numero_de_la_periode_courante)); EGAL(Yy,sCOEFFICIENT_Yy(numero_de_la_periode_courante)); EGAL(Yz,sCOEFFICIENT_Yz(numero_de_la_periode_courante)); EGAL(Yxx,sCOEFFICIENT_Yxx(numero_de_la_periode_courante)); EGAL(Yyy,sCOEFFICIENT_Yyy(numero_de_la_periode_courante)); EGAL(Yzz,sCOEFFICIENT_Yzz(numero_de_la_periode_courante)); EGAL(Yxy,sCOEFFICIENT_Yxy(numero_de_la_periode_courante)); EGAL(Yyz,sCOEFFICIENT_Yyz(numero_de_la_periode_courante)); EGAL(Yzx,sCOEFFICIENT_Yzx(numero_de_la_periode_courante)); EGAL(Yxyz,sCOEFFICIENT_Yxyz(numero_de_la_periode_courante)); /* Calcul des coefficients de la deuxieme iteration. */ EGAL(Z_,sCOEFFICIENT_Z(numero_de_la_periode_courante)); EGAL(Zx,sCOEFFICIENT_Zx(numero_de_la_periode_courante)); EGAL(Zy,sCOEFFICIENT_Zy(numero_de_la_periode_courante)); EGAL(Zz,sCOEFFICIENT_Zz(numero_de_la_periode_courante)); EGAL(Zxx,sCOEFFICIENT_Zxx(numero_de_la_periode_courante)); EGAL(Zyy,sCOEFFICIENT_Zyy(numero_de_la_periode_courante)); EGAL(Zzz,sCOEFFICIENT_Zzz(numero_de_la_periode_courante)); EGAL(Zxy,sCOEFFICIENT_Zxy(numero_de_la_periode_courante)); EGAL(Zyz,sCOEFFICIENT_Zyz(numero_de_la_periode_courante)); EGAL(Zzx,sCOEFFICIENT_Zzx(numero_de_la_periode_courante)); EGAL(Zxyz,sCOEFFICIENT_Zxyz(numero_de_la_periode_courante)); /* Calcul des coefficients de la troisieme iteration. */ EGAL(cx,sVARIABLE_cx0(numero_de_la_periode_courante)); EGAL(cy,sVARIABLE_cy0(numero_de_la_periode_courante)); EGAL(cz,sVARIABLE_cz0(numero_de_la_periode_courante)); /* Calcul des valeurs initiales des trois variables (x0,y0,z0). */ vTRANSFORMAT_31(nombre_d_iterations,sNOMBRE_D_ITERATIONS,numero_de_la_periode_courante,fichier_NOMBRE_D_ITERATIONS); /* Calcul du nombre d'iterations lorsqu'il est variable. */ Komp(numero_de_l_iteration_courante,nombre_d_iterations) Bblock RECHERCHE_DES_EXTREMA_DES_COORDONNEES; /* On notera que cette recherche n'est pas conditionnee par 'editer_les_extrema', car les */ /* extrema pourraient etre utilises pour la visualisation... */ Test(IFOU(IL_FAUT(visualiser_le_fantome) ,IFGE(numero_de_l_iteration_courante,PREMIERE_ITERATION_VISUALISEE) ) ) Bblock CALS(memorisation_1_point_04(SOUS(cx,Xcentre_ESPACE) ,SOUS(cy,Ycentre_ESPACE) ,SOUS(cz,Zcentre_ESPACE) ,numero_de_l_iteration_courante ) ); /* Memorisation de l'iteration courante... */ Eblock ATes Bblock Eblock ETes ITERE(Icx,cx,Fx(cx,cy,cz)); ITERE(Icy,cy,Fy(cx,cy,cz)); ITERE(Icz,cz,Fz(cx,cy,cz)); MISE_A_JOUR(cx,Icx,cy,Icy,cz,Icz); /* Iteration... */ Eblock EKom #include xrk/attractor.1A.I" GENERATION_D_UNE_IMAGE_ET_PASSAGE_A_LA_SUIVANTE(BLOC(VIDE;)); /* Generation de l'image courante... */ Eblock EKom EDITION_DES_EXTREMA_DES_COORDONNEES; /* Edition facultative des extrema des coordonnees. */ RETU_Commande; Eblock ECommande