/*************************************************************************************************************************************/
/* */
/* C A L C U L D E S E N S E M B L E S " I T E R A T I F S " D A N S L E P L A N C O M P L E X E , */
/* D A N S L E C O R P S D E S Q U A T E R N I O N S ( O U " H Y P E R - C O M P L E X E " ) , */
/* E T D A N S L E C O R P S D E S O C T O N I O N S ( O U " H Y P E R - H Y P E R - C O M P L E X E " ) : */
/* */
/* */
/* Nota : */
/* */
/* Lorsqu'un parametre peut prendre deux */
/* valeurs 'M' et 'J' suivant que l'on */
/* calcule l'ensemble de Mandelbrot ou un */
/* ensemble de Julia, on le note : */
/* */
/* (M,J), avec */
/* */
/* donc dans l'ordre Mandelbrot, puis Julia... */
/* */
/* */
/* Author of '$ximcf/iterations$DEF' : */
/* */
/* Jean-Francois Colonna (LACTAMME, 19890000000000). */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* F O N C T I O N S D E C H A N G E M E N T D E F O R M A T D E S */
/* F E N E T R E S D E C A L C U L E N F O N C T I O N D E S */
/* P R O P O R T I O N S D E L ' I M A G E A G E N E R E R : */
/* */
/*************************************************************************************************************************************/
#define gVARIABLES_RELATIVES_A_LA_NECESSITE_D_HOMOTHETIE(choix_de_l_ajustement) \
DEFV(Logical \
,INIT(ajuster_la_definition_de_la_fenetre_de_calcul_au_rapport_dimX_sur_dimY \
,choix_de_l_ajustement \
) \
); \
/* L'ajustement de la proportion des dimensions des fenetres au rapport dimX/dimY est-il */ \
/* necessaire (introduit le 20091124124351 et transfere en partie ici le 20091126090816 */ \
/* depuis 'v $ximcf/iterations$FON 20091126090842' afin de pouvoir etre utilisee dans */ \
/* certains '$K's ('v $xrc/julia.02$K VARIABLES_RELATIVES_A_LA_NECESSITE_D_HOMOTHETIE' */ \
/* exemple...) ? */
#define CHANGEMENT_HOMOTHETIQUE_D_ABSCISSE(gauche,droite,fonction) \
fonction(MOYE(gauche,droite) \
,MOIT(CARRE_OX_PAR_RAPPORT_A_OY(SOUS(droite,gauche))) \
)
#define CHANGEMENT_HOMOTHETIQUE_D_ABSCISSE_GAUCHE(gauche,droite) \
COND(IL_FAUT(ajuster_la_definition_de_la_fenetre_de_calcul_au_rapport_dimX_sur_dimY) \
,CHANGEMENT_HOMOTHETIQUE_D_ABSCISSE(gauche,droite,SOUS) \
,gauche \
)
#define CHANGEMENT_HOMOTHETIQUE_D_ABSCISSE_DROITE(gauche,droite) \
COND(IL_FAUT(ajuster_la_definition_de_la_fenetre_de_calcul_au_rapport_dimX_sur_dimY) \
,CHANGEMENT_HOMOTHETIQUE_D_ABSCISSE(gauche,droite,ADD2) \
,droite \
)
/* Fonctions de modification homothetique des abscisses d'une fenetre de calcul. On trouve */
/* d'abord la fonction generale, puis celles qui concernent respectivement les coins de */
/* de gauche et de droite d'une fenetre. */
/* */
/* La conditionnalite de l'ajustement de la fenetre a ete introduit le 20091124125720... */
#define CHANGEMENT_HOMOTHETIQUE_D_ORDONNEE(bas,haut,fonction) \
fonction(bas,haut)
#define CHANGEMENT_HOMOTHETIQUE_D_ORDONNEE_BAS(bas,haut) \
COND(IL_FAUT(ajuster_la_definition_de_la_fenetre_de_calcul_au_rapport_dimX_sur_dimY) \
,CHANGEMENT_HOMOTHETIQUE_D_ORDONNEE(bas,haut,SE12) \
,bas \
)
#define CHANGEMENT_HOMOTHETIQUE_D_ORDONNEE_HAUT(bas,haut) \
COND(IL_FAUT(ajuster_la_definition_de_la_fenetre_de_calcul_au_rapport_dimX_sur_dimY) \
,CHANGEMENT_HOMOTHETIQUE_D_ORDONNEE(bas,haut,SE22) \
,haut \
)
/* Fonctions de modification homothetique des ordonnees d'une fenetre de calcul. On trouve */
/* d'abord la fonction generale, puis celles qui concernent respectivement les coins de */
/* du bas et du haut d'une fenetre. */
/* */
/* La conditionnalite de l'ajustement de la fenetre a ete introduit le 20091124125720... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* F O N C T I O N S P O S S I B L E S D E V I S U A L I S A T I O N : */
/* */
/*************************************************************************************************************************************/
Denumer05(INIS(_VISUALISATION_DU_NOMBRE_D_ITERATIONS,UN)
/* Visualisation du nombre d'iterations en fin d'iterations, */
,_VISUALISATION_DE_L_ARGUMENT_DE_SORTIE
/* Visualisation de la valeur de l'argument de SUITE(N) en fin d'iterations, */
,_VISUALISATION_DES_ORBITES
/* Tentative de visualisation de l'orbite des points par deformation d'une image Argument, */
,_VISUALISATION_DES_DISTANCES
/* Visualisation de la fonction d(z). */
,DERNIER_MODE_DE_VISUALISATION
,liste_des_modes_de_visualisation_des_fractales
);
/* Liste des modes de visualisation des ensembles de Mandelbrot et Julia. */
#define VISUALISATION_DU_NOMBRE_D_ITERATIONS \
ENUM(_VISUALISATION_DU_NOMBRE_D_ITERATIONS) \
/* Ce qui donne pour l'ensemble de Mandelbrot : */ \
/* */ \
/* *: */ \
/* ***** */ \
/* ***** */ \
/* .:. *+********* * */ \
/* ******************* ** */ \
/* ********************** */ \
/* *************************: */ \
/* **************************** */ \
/* *.****:. ****************************. */ \
/* ***********. ****************************: */ \
/* . ************.***************************- */ \
/* ********************************************************** */ \
/* . ************.***************************- */ \
/* ***********. ****************************: */ \
/* *.****:. ****************************. */ \
/* **************************** */ \
/* *************************: */ \
/* ********************** */ \
/* ******************* ** */ \
/* .:. *+********* * */ \
/* ***** */ \
/* ***** */ \
/* *: */ \
/* */
#define VISUALISATION_DE_L_ARGUMENT_DE_SORTIE \
ENUM(_VISUALISATION_DE_L_ARGUMENT_DE_SORTIE) \
/* Ce qui donne pour l'ensemble de Mandelbrot : */ \
/* */ \
/* ++++-------:::::...... @@:::.. @@**oo+-.@+: @o+-::.. @ooo */ \
/* ++++++------::::::..... +++---::.. @@. @*@. :*:@+:.@. @@**oo */ \
/* o+++++++-----::::::...**ooo++---::...o+-::.o+-.- @:@-*o+-@@**oo+ */ \
/* ooo++++++------::: @@***ooo++---: @@*o++:. :+. -. +@+--:. oo++- */ \
/* ooooo++++++----:... @@@**ooo++--:. @ @*o+ :.**:+++ * *o @*o+-- */ \
/* *oooooo+++++---::... @@@**@@*o++-:@o-:o-.+.-*--:..o*+*+-. *-:. */ \
/* ***ooooo+oo+++--::... -::. @*o*o+-@o+o@.:-*@+o*@ . .*-:o:@o+.o */ \
/* *****oo@**ooo++--::@**o+-::. +-:.+-o- . o@@.*********+@@o****@+ */ \
/* @**** @@***oo+++:. @*o++:.@*o+-. :o*@o @@**************o-**oo*. */ \
/* @@@... @@** @*oo:*-.@*+-.o-.@** - *@@@@@*************ooo:++@+ */ \
/* @--::... @-:. - :+- -*:::*- *+.-- @@@@@@@@***********ooooo-@-o */ \
/* +++--::.*oo+-: @*@-o.* -@ o @o o.@*@@@@@@@@@@*********ooooooo@@+ */ \
/* oo++-:. @**oo+:@o- * :@ @@@@- @:- @@@@@@@@@@@@@******oooooooo... */ \
/* @*@*o-:.o-. @ @@-:@@@@@@@@@@@@+-@@@@@@@@@@@@@@@****ooooooooo- - */ \
/* o-.+.*:+ o.@*:++:-@.@@@@@@@@@@@@:@@@@@@@@@@@@@@@@@**oo++++++- :@ */ \
/* -@@-@@---@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@------------ */ \
/* :+*-*.o-@:* .o--o+ * o ..::------+@o */ \
/* . .:-o*:+o@ @@ +o -+ ...:::::::::+@+ */ \
/* ::--+o*@ ..::-o :+@.@o @ +@ o-@ .....::::::::*o* */ \
/* ---++oo*.::-+o@ . +:* *+ @:* .@:* .........:::::: - */ \
/* ++ooo**@@ +o*@@+@+-+@+.ooo.+@.-o++@ ..........::::+ +: */ \
/* o**@@@ ..@ .::o.+* .-+*:+* ..@-@@. .............:o-- - */ \
/* ...@@ ..::-:-+*@ .:--o* .:-+*@o:. :@ .............+..:: * */ \
/* .....:: ..:::--++oo .:-+oo*@-+o*-+:+@*@: o.........- :.... -@ */ \
/* ...::::::::---++ooo**@@+oo*@@ ...:-+ :-. *o+. ::. @*@*.++:o ::*: */ \
/* .::::::------++ooo**@@ .. .::-+o :-o:+*-*+.-+o**:.-.:+*@.+o*@ */ \
/* :::::------++++o***@@ ..:::---+o*@@ @ .:-@o*. o--:*.@.:@ .:-++ */ \
/* ::::------+++++ooo@@ ..:::--+++o@ .:--o*@o:**+*@: -++o*@::--- */ \
/* ::------++++++ooooo***..:::--+++oo***:-+oo*:-+o+@ o +.:-- ..::- */ \
/* ------++++++oooooo*****@@:--+++oo***@@ *@ . *@o.o -o* *@@ ...: */ \
/* -----++++++oooooo*****@@@@@ +oo***@@ ..::-+* -o@ :-+oo**@@ ::: */ \
/* @--+++++++oooooo*****@@@@@ ..*@@ ..::-++o*@ ..:--+oo*...::: */ \
/* */
#define VISUALISATION_DES_ORBITES \
ENUM(_VISUALISATION_DES_ORBITES)
#define VISUALISATION_DES_DISTANCES \
ENUM(_VISUALISATION_DES_DISTANCES)
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* E S P A C E D E L Y A P U N O V : */
/* */
/*************************************************************************************************************************************/
DenumeT07(TAUX_DE_CROISSANCE_R1_DANS_L_ESPACE_DE_LYAPUNOV
,TAUX_DE_CROISSANCE_R2_DANS_L_ESPACE_DE_LYAPUNOV
,TAUX_DE_CROISSANCE_R3_DANS_L_ESPACE_DE_LYAPUNOV
,TAUX_DE_CROISSANCE_R4_DANS_L_ESPACE_DE_LYAPUNOV
,TAUX_DE_CROISSANCE_R5_DANS_L_ESPACE_DE_LYAPUNOV
,TAUX_DE_CROISSANCE_R6_DANS_L_ESPACE_DE_LYAPUNOV
,TAUX_DE_CROISSANCE_R7_DANS_L_ESPACE_DE_LYAPUNOV
,choix_du_taux_de_croissance_dans_l_espace_de_Lyapunov
)
/* Types possibles des taux de croissance afin de definir le contenu d'une periode, et donc */
/* de definir le contenu du tableau 'suite_des_taux_de_croissance'. ATTENTION, on notera */
/* qu'il n'y a pas de ";" a la suite de cette directive, car sinon, il se trouverait colle */
/* a la derniere definition... */
/* */
/* Le 20151006091226 furent introduits 'R4' et 'R5'... */
/* */
/* Le 20151007092702 furent introduits 'R6' et 'R7'... */
#define PREMIERE_ITERATION_DANS_L_ESPACE_DE_LYAPUNOV \
INDEX0 \
/* Numero de la premiere iteration... */
Denumer03(INIS(_CALCUL_DE_L_EXPOSANT_DE_LYAPUNOV_A_PARTIR_DE_LA_PARTIE_REELLE_DE_LA_DERIVEE,UN)
,_CALCUL_DE_L_EXPOSANT_DE_LYAPUNOV_A_PARTIR_DE_LA_PARTIE_IMAGINAIRE_DE_LA_DERIVEE
,_CALCUL_DE_L_EXPOSANT_DE_LYAPUNOV_A_PARTIR_DU_MODULE_DE_LA_DERIVEE
,choix_du_mode_de_calcul_de_l_exposant_de_Lyapunov
);
#define CALCUL_DE_L_EXPOSANT_DE_LYAPUNOV_A_PARTIR_DE_LA_PARTIE_REELLE_DE_LA_DERIVEE \
ENUM(_CALCUL_DE_L_EXPOSANT_DE_LYAPUNOV_A_PARTIR_DE_LA_PARTIE_REELLE_DE_LA_DERIVEE)
#define CALCUL_DE_L_EXPOSANT_DE_LYAPUNOV_A_PARTIR_DE_LA_PARTIE_IMAGINAIRE_DE_LA_DERIVEE \
ENUM(_CALCUL_DE_L_EXPOSANT_DE_LYAPUNOV_A_PARTIR_DE_LA_PARTIE_IMAGINAIRE_DE_LA_DERIVEE)
#define CALCUL_DE_L_EXPOSANT_DE_LYAPUNOV_A_PARTIR_DU_MODULE_DE_LA_DERIVEE \
ENUM(_CALCUL_DE_L_EXPOSANT_DE_LYAPUNOV_A_PARTIR_DU_MODULE_DE_LA_DERIVEE)
/* Definition des trois facons de calculer l'exposant de Lyapunov a partir de la derivee de */
/* la fonction iteree... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C A L C U L D E L A F O N C T I O N ' zeta ' D E R I E M A N N : */
/* */
/*************************************************************************************************************************************/
#define PREMIER_ELEMENT_DE_LA_FONCTION_ZETA_DE_RIEMANN \
POSI(UN) \
/* Numero de la premiere iteration... */