/*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D U Z O O M : */ /* */ /* */ /* Author of '$xrq/nucleon.Le$I' : */ /* */ /* Jean-Francois Colonna (LACTAMME, 1992??????????). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* G E S T I O N D U Z O O M " A U T O M A T I Q U E " : */ /* */ /*************************************************************************************************************************************/ #define ZOOM_AUTOMATIQUE \ FAUX DEFV(Local,DEFV(Logical,INIT(zoom_automatique,ZOOM_AUTOMATIQUE))); /* Cet indicateur indique si le rapport courant du zoom 'rapport_courant_du_zoom' est */ /* celui qui est fourni dans 'liste_ZOOM' ('FAUX'), ou bien s'il est calcule automatiquement */ /* afin qu'une diagonale de l'univers contenue dans le plan Z=0 (par defaut) soit, a epsilon */ /* pres, une diagonale de l'image que l'on genere... */ /* */ /* Je precise donc le 20160506153427 que ce rapport de zoom evalue automatiquement n'a */ /* rien a voir avec les extrema des coordonnees {X,Y,Z}. On aurait pu en effet imaginer */ /* que le rapport de zoom soit calcule de facon a ce que l'ensemble des particules */ /* visualisees tiennent "au plus juste" dans les images calculees, mais cela est evidemment */ /* impossible a faire a priori. Ainsi, par exemple, avec 'v $xrk/rdn_walk.52K', on ne peut */ /* pas savoir, avant d'avoir demarre la simulation, ou seront les particules dans le futur ! */ #define ZOOM_AUTOMATIQUE_MAXIMAL \ FLOT(CENT) DEFV(Local,DEFV(Float,INIT(zoom_automatique_maximal,ZOOM_AUTOMATIQUE_MAXIMAL))); /* Plus grand rapport de zoom considere lors du calcul du zoom automatique. ATTENTION, il */ /* ne faut pas utiliser ici une valeur trop grande afin d'eviter des debordements lors de */ /* conversions flottantes-entieres dans 'NORMALISATION_O?(...)' lors du calcul iteratif */ /* de 'rapport_automatique_du_zoom'... */ #define FINESSE_DE_CALCUL_DU_ZOOM_AUTOMATIQUE \ GRO1(FRA10(FRA10(FU))) DEFV(Local,DEFV(Float,INIT(finesse_de_calcul_du_zoom_automatique,FINESSE_DE_CALCUL_DU_ZOOM_AUTOMATIQUE))); /* "Pas" d'approximation du logarithme du rapport de zoom automatique. */ #define Z_DE_CALCUL_DU_ZOOM_AUTOMATIQUE \ Zcentre_ESPACE DEFV(Local,DEFV(Float,INIT(Z_de_calcul_du_zoom_automatique,Z_DE_CALCUL_DU_ZOOM_AUTOMATIQUE))); /* Coordonnee 'Z' du plan dans lequel faire le calcul de la diagonale de l'Univers. */ DEFV(Local,DEFV(Float,INIT(rapport_automatique_du_zoom,FLOT__UNDEF))); /* Rapport automatique du zoom (lorsqu'il a un sens...). */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* G E S T I O N D U Z O O M : */ /* */ /*************************************************************************************************************************************/ DEFV(Local,DEFV(Float,INIT(rapport_courant_du_zoom,FLOT__UNDEF))); /* Rapport courant du zoom ; celui-ci est destine a calculer le rayon apparent des */ /* particules, et est lui-meme mis a jour au debut de chaque nouvelle iteration dans la */ /* procedure 'CHANGEMENT_DU_POINT_DE_VUE'... */