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