/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N S G E N E R A L E S D E V I S U A L I S A T I O N : */
/* */
/* */
/* Author of '$xrs/surfaces.14$I' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 19990120132005). */
/* */
/*************************************************************************************************************************************/
#include xrk/attractor.1D.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N D E S D I F F E R E N T S E S P A C E S E T D E L ' E F F E T D E B R U M E : */
/* */
/*************************************************************************************************************************************/
#include xrk/attractor.13.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* A I D E A U C A D R A G E D E S I M A G E S : */
/* */
/*************************************************************************************************************************************/
#include xrk/attractor.1C.I"
DONNEES_DE_RECHERCHE_DES_EXTREMA_DES_COORDONNEES_ET_DES_DERIVEES
/* Definition des extrema des coordonnees et des derivees. On notera bien l'absence de */
/* point-virgule apres 'DONNEES_DE_RECHERCHE_DES_EXTREMA_DES_COORDONNEES_ET_DES_DERIVEES'. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* G E N E R A T I O N D E S I M A G E S : */
/* */
/*************************************************************************************************************************************/
#include xrv/champs_5.14.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N S G E N E R A L E S R E L A T I V E S A L A V I S U A L I S A T I O N : */
/* */
/*************************************************************************************************************************************/
#include xrk/attractor.14.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* E C H A N T I L L O N N A G E D E L A S U R F A C E : */
/* */
/* */
/* Definition : */
/* */
/* Le 20021008094407 et le 20021009095952 */
/* a ete introduit un dispositif permettant */
/* de visualiser le maillage suivant les */
/* paralleles et les meridiens de la surface. */
/* Notons (suivant 'v $xrs/surfaces.13$I PROCESS_ARGUMENTS_DE_DEFINITION_DES_COORDONNEES_CURVILIGNES') : */
/* */
/* pu = pas_de_u */
/* eu = echantillonnage_de_u */
/* dpu = diviseur_du_pas_de_u */
/* */
/* pv = pas_de_v */
/* ev = echantillonnage_de_v */
/* dpv = diviseur_du_pas_de_v */
/* */
/* */
/* Les pas effectifs en 'u' (latitude) et 'v' (longitude) sont donc : */
/* */
/* pu/dpu */
/* pv/dpv */
/* */
/* respectivement. Les meridiens seront espaces */
/* de 'ev' points et les paralleles de 'eu' points. */
/* Ainsi, par exemple si : */
/* */
/* eu == dpu */
/* ev == dpv */
/* */
/* les meridiens et les paralleles seront espaces */
/* de 'pv' et 'pu' respectivement. Mais, en general, */
/* {eu,ev} et {dpu,dpv} ne seront pas "correles"... */
/* */
/* */
/* La surface va alors etre visualisee de */
/* la facon suivante : */
/* */
/* */
/* 'ev' points */
/* <-------------------> */
/* */
/* pv/dpv */
/* <----> */
/* */
/* . . . . * . . . . * . . . . * . . */
/* | | | */
/* | u == constante | | */
/* *----*----*----*----*----*----*----*----*----*----*----*----*----*----*----*----* */
/* /|\ | ("paralleles") | v | " */
/* | | | = | m */
/* | . . . . * . . . . * . . . . c * e . . */
/* 'eu' | /|\ | | o | r */
/* | pu/dpu | | | n | i */
/* points | \|/. . . . * . . . . * . . . . s * d . . */
/* | | | t | i */
/* | | | a | e */
/* \|/ . . . . * . . . . * . . . . n * n . . */
/* | | t | s */
/* | | e | " */
/* *----*----*----*----*----*----*----*----*----*----*----*----*----*----*----*----* */
/* | | | */
/* | | | */
/* . . . . * . . . . * . . . . * . . */
/* */
/* */
/* ou les caracteres "*" materialisent les */
/* points reellement visualises de la surface. */
/* Les caracteres "-" et "|" ne sont la que pour */
/* materialiser les paralleles et les meridiens */
/* respectivement, alors que les caracteres "." */
/* montrent l'echantillonnage effectif de la */
/* surface. */
/* */
/* */
/* Le 20041112104457 on notera donc bien (car */
/* il apparait que cela n'etait pas tres clair) */
/* que : */
/* */
/* echantillonnage horizontal : pv/dpv */
/* echantillonnage vertical : pu/dpu */
/* */
/* meridiens espaces de : ev.(pv/dpv) */
/* paralleles espaces de : eu.(pu/dpu) */
/* */
/* Cela signifie que si, par exemple, seuls {dpu,dpv} */
/* sont modifies (et augmentes), les pas {pu/dpu,pv/dpv} */
/* sont reduits et donc les meridiens et les paralleles */
/* sont rapproches. Pour les eloigner, il faudra modifier */
/* (augmenter dans l'exemple precedent) {eu,ev} comme */
/* l'ont ete {dpu,dpv} (dans le meme rapport...). */
/* */
/* */
/* Ainsi, par exemple : */
/* */
/* pu=1 dpu=1024 eu=64 */
/* pv=1 dpv=1024 ev=64 */
/* */
/* fera dans l'expace {u,v} un quadrillage de 16x16 */
/* (16=1024/64) carres dont les cotes mesurent 64 points. */
/* */
/* D'une maniere generale, on aura interet a choisir : */
/* */
/* p?=1 dp?=NCxTC e?=TC */
/* */
/* ou 'TC' designe la taille des cotes en nombre de points */
/* et 'NC' designe le nombre de carres suivant la direction */
/* horizontale et/ou verticale... */
/* */
/* */
/* Je rappelle le 20191015170625 qu'une nouvelle */
/* simplification a ete introduite le 20160414104726 */
/* dans 'v $xrs/surfaces.13$I 20160414104726'. Alors, */
/* il suffit de definir dans cet ordre (en effet, */
/* "faciliter_parametrage_u_v=VRAI" doit apparaitre */
/* apres la definition du parametrage de 'u' et de */
/* 'v' afin de declencher le calcul des parametres */
/* effectifs...) : */
/* */
/* nombre_inter_paralleles=... (coordonnee 'u') */
/* nombre_points_entre_deux_paralleles=... (coordonnee 'u') */
/* */
/* nombre_inter_meridiens=... (coordonnee 'v') */
/* nombre_points_entre_deux_meridiens=... (coordonnee 'v') */
/* */
/* faciliter_parametrage_u_v=VRAI */
/* */
/* pour parametrer plus facilement l'espace {u,v}... */
/* */
/* */
/*************************************************************************************************************************************/
DEFV(Logical,INIT(c_est_le_calcul_de__cx__cy__cz,LUNDEF));
DEFV(Logical,INIT(c_est_le_calcul_de__differentielle_x__differentielle_y__differentielle_z,LUNDEF));
DEFV(Logical,INIT(c_est_le_calcul_de__dXdu__dYdu__dZdu,LUNDEF));
DEFV(Logical,INIT(c_est_le_calcul_de__dXdv__dYdv__dZdv,LUNDEF));
/* Indicateurs introduits le 20170308111116 afin d'eliminer des appels a certaines */
/* fonctions (par exemple dans 'v $xrs/referentiel3D.11$I c_est_le_calcul_de__cx__cy__cz'. */
#define MAJORATION_DU_MAXIMUM_DES_COORDONNEES_u_v_____COMPATIBILITE_20160414 \
FAUX
DEFV(Local,DEFV(Logical,INIT(majoration_du_maximum_des_coordonnees_u_v_____compatibilite_20160414
,MAJORATION_DU_MAXIMUM_DES_COORDONNEES_u_v_____COMPATIBILITE_20160414
)
)
);
#define EPSILON_DE_MAJORATION_DU_MAXIMUM_DES_COORDONNEES_u_v \
gEPSILON
DEFV(Local,DEFV(Float,INIT(epsilon_de_majoration_du_maximum_des_coordonnees_u_v
,EPSILON_DE_MAJORATION_DU_MAXIMUM_DES_COORDONNEES_u_v
)
)
);
/* Afin d'assurer la compatibilite avec les resultats obtenus anterieurement a la date */
/* du 20160414100813... */
/* */
/* Ceci a ete introduit a cette date apres avoir note que les 'v $xrs/surfaces.12$I FDoIn' */
/* n'atteignent pas toujours le maximum. Ainsi, par exemple : */
/* */
/* FDoIn(uv,-0.5,+0.5,0.050) ==> 'uv' atteint +0.5 */
/* */
/* alors que : */
/* */
/* FDoIn(uv,-0.5,+0.5,0.025) ==> 'uv' n'atteint que +0.475000 */
/* */
/* (voir a ce propos 'v $xtc/test_for_flottant.01$c'). */
/* */
/* L'espilon parametrable a ete introduit le 20160414144922... */
/* */
/* Au passage, faire : */
/* */
/* epsilon = 0 */
/* */
/* est une autre facon d'assurer la "compatibilite_20160414"... */
#ifndef MINIMUM_DE_U
# define MINIMUM_DE_U \
FLOT__UNDEF \
/* Introduit le 20060824085027 a cause de 'v $xrq/diffract.21$K .include..xrs.surfaces.11.I' */ \
/* (de meme que 'v $xrq/f_propres.11$K' et 'v $xrq/synapse.11$K'...). */
#Aifndef MINIMUM_DE_U
#Eifndef MINIMUM_DE_U
#ifndef MAXIMUM_DE_U
# define MAXIMUM_DE_U \
FLOT__UNDEF \
/* Introduit le 20060824085027 a cause de 'v $xrq/diffract.21$K .include..xrs.surfaces.11.I' */ \
/* (de meme que 'v $xrq/f_propres.11$K' et 'v $xrq/synapse.11$K'...). */
#Aifndef MAXIMUM_DE_U
#Eifndef MAXIMUM_DE_U
#ifndef PAS_DE_U
# define PAS_DE_U \
FLOT__UNDEF \
/* Introduit le 20060824085027 a cause de 'v $xrq/diffract.21$K .include..xrs.surfaces.11.I' */ \
/* (de meme que 'v $xrq/f_propres.11$K' et 'v $xrq/synapse.11$K'...). */
#Aifndef PAS_DE_U
#Eifndef PAS_DE_U
#ifndef MINIMUM_DE_V
# define MINIMUM_DE_V \
FLOT__UNDEF \
/* Introduit le 20060824085027 a cause de 'v $xrq/diffract.21$K .include..xrs.surfaces.11.I' */ \
/* (de meme que 'v $xrq/f_propres.11$K' et 'v $xrq/synapse.11$K'...). */
#Aifndef MINIMUM_DE_V
#Eifndef MINIMUM_DE_V
#ifndef MAXIMUM_DE_V
# define MAXIMUM_DE_V \
FLOT__UNDEF \
/* Introduit le 20060824085027 a cause de 'v $xrq/diffract.21$K .include..xrs.surfaces.11.I' */ \
/* (de meme que 'v $xrq/f_propres.11$K' et 'v $xrq/synapse.11$K'...). */
#Aifndef MAXIMUM_DE_V
#Eifndef MAXIMUM_DE_V
#ifndef PAS_DE_V
# define PAS_DE_V \
FLOT__UNDEF \
/* Introduit le 20060824085027 a cause de 'v $xrq/diffract.21$K .include..xrs.surfaces.11.I' */ \
/* (de meme que 'v $xrq/f_propres.11$K' et 'v $xrq/synapse.11$K'...). */
#Aifndef PAS_DE_V
#Eifndef PAS_DE_V
/* Le 20060818091921, a cause de l'introduction de la possibilite de tracer sur la */
/* surface une droite du plan {u,v}, les definitions des coordonnees {u,v} ont ete */
/* Le 20060818091921, a cause de l'introduction de la possibilite de tracer sur la */
/* surface une droite du plan {u,v}, les definitions des coordonnees {u,v} ont ete */
/* mises en commun alors qu'anterieurement elles etaient definies specifiquement pour */
/* chaque surface dans le fichier '$xrs/*.14$I' (par exemple 'v $xrs/tore.14$I'). Cela */
/* a permis de simplifier l'introduction des extrema de {u,v} definissant le domaine de */
/* definition d'une eventuelle droite dans le plan {u,v}... */
DEFV(Local,DEFV(Float,INIT(minimum_de_u,MINIMUM_DE_U)));
DEFV(Local,DEFV(Float,INIT(minimum_de_u_du_domaine_d_une_droite_du_plan_uv,MINIMUM_DE_U)));
DEFV(Local,DEFV(Float,INIT(maximum_de_u,MAXIMUM_DE_U)));
DEFV(Local,DEFV(Float,INIT(maximum_de_u_du_domaine_d_une_droite_du_plan_uv,MAXIMUM_DE_U)));
DEFV(Local,DEFV(Float,INIT(pas_de_u,PAS_DE_U)));
DEFV(Local,DEFV(Float,INIT(d_u,d_FVARIABLES_DE_DERIVATION)));
DEFV(Local,DEFV(Float,INIT(d_pas_de_u_de_differentiation,d_FVARIABLES_DE_DERIVATION)));
/* Definition de la coordonnee parametrique 'u' de la surface (appelee aussi 'distance */
/* polaire' ou 'theta'). */
/* */
/* Le 20161202114030, 'd_pas_de_u_de_differentiation' a ete introduit a cause de */
/* 'v $xrs/huit.11$K VISUALISATION_DE_LA_SURFACE_AVEC_DIFFERENCES____' qui, bien que */
/* n'utilisant donc pas la derivation formelle pour visualiser la surface, fait malgre */
/* tout de la derivation formelle ('v $xrs/huit.11$I d#') dans la definition de la */
/* surface... */
DEFV(Local,DEFV(Float,INIT(minimum_de_v,MINIMUM_DE_V)));
DEFV(Local,DEFV(Float,INIT(minimum_de_v_du_domaine_d_une_droite_du_plan_uv,MINIMUM_DE_V)));
DEFV(Local,DEFV(Float,INIT(maximum_de_v,MAXIMUM_DE_V)));
DEFV(Local,DEFV(Float,INIT(maximum_de_v_du_domaine_d_une_droite_du_plan_uv,MAXIMUM_DE_V)));
DEFV(Local,DEFV(Float,INIT(pas_de_v,PAS_DE_V)));
DEFV(Local,DEFV(Float,INIT(d_v,d_FVARIABLES_DE_DERIVATION)));
DEFV(Local,DEFV(Float,INIT(d_pas_de_v_de_differentiation,d_FVARIABLES_DE_DERIVATION)));
/* Definition de la coordonnee parametrique 'v' de la surface (appelee aussi 'longitude' */
/* ou 'phi'). */
/* */
/* Le 20161202114030, 'd_pas_de_v_de_differentiation' a ete introduit a cause de */
/* 'v $xrs/huit.11$K VISUALISATION_DE_LA_SURFACE_AVEC_DIFFERENCES____' qui, bien que */
/* n'utilisant donc pas la derivation formelle pour visualiser la surface, fait malgre */
/* tout de la derivation formelle ('v $xrs/huit.11$I d#') dans la definition de la */
/* surface... */
#define VISUALISER_LES_POINTS_DU_MAILLAGE_UV \
VRAI
DEFV(Local,DEFV(Logical,INIT(visualiser_les_points_du_maillage_uv,VISUALISER_LES_POINTS_DU_MAILLAGE_UV)));
/* Ceci fut introduit le 20060814185311 en complement de l'indicateur (introduit le */
/* 20060813110846) 'tracer_une_droite_du_plan_uv' afin de permettre de ne tracer que */
/* cette droite dans le plan {u,v}... */
#define LISTER_LES_COORDONNEES_u_v_DES_POINTS \
FAUX
DEFV(Local,DEFV(Logical,INIT(lister_les_coordonnees_u_v_des_points,LISTER_LES_COORDONNEES_u_v_DES_POINTS)));
/* Ceci fut introduit le 20060410111049 car, en effet, a de nombreux endroits on teste */
/* "^periode=" en sortie d'un programme de '$xrs' ('v $xiirv/$Fnota periode='). Il faut */
/* que l'edition de {u,v} soit facultative et inhibee par defaut, puisque {u,v} sont */
/* avant "periode=" ('v $xrs/surfaces.12$I LISTER_LA_LISTE_DES_COULEURS_DES_POINTS'). */
#define ECHANTILLONNAGE_DE_u_ET_DE_v \
UN
DEFV(Local,DEFV(Int,INIT(echantillonnage_de_u,ECHANTILLONNAGE_DE_u_ET_DE_v)));
DEFV(Local,DEFV(Int,INIT(echantillonnage_de_v,ECHANTILLONNAGE_DE_u_ET_DE_v)));
/* Ce dispositif introduit le 20021008094407 permet d'echantillonner la surface ce qui */
/* permet donc de mieux materialiser les lignes {u=constante} et {v=constante}, ce que */
/* l'on peut appeler : */
/* */
/* u=constante : "paralleles", */
/* v=constante : "meridiens". */
/* */
/* Pour cela, il suffit par exemple de prendre un pas pour 'u' et 'v' qui soit 'N' fois plus */
/* petit qu'habituellement, puis de prendre comme echantillonnage en 'u' et 'v' la valeur */
/* 'N'. On notera qu'avec la valeur 'UN' par defaut, la compatibilite anterieure est */
/* assuree... */
#define TRANSLATION_DE_L_ECHANTILLONNAGE_DE_u_ET_DE_v \
ZERO
DEFV(Local,DEFV(Int,INIT(translation_de_l_echantillonnage_de_u,TRANSLATION_DE_L_ECHANTILLONNAGE_DE_u_ET_DE_v)));
DEFV(Local,DEFV(Int,INIT(translation_de_l_echantillonnage_de_v,TRANSLATION_DE_L_ECHANTILLONNAGE_DE_u_ET_DE_v)));
/* Dispositif introduit le 20040330111844 qui permet, par sa variation (0, 1, 2,...) de */
/* faire "glisser" la grille d'echantillonnage sur la surface... */
#define DIVISEUR_DU_PAS_DE_u_ET_DE_v \
FU
DEFV(Local,DEFV(Float,INIT(diviseur_du_pas_de_u,DIVISEUR_DU_PAS_DE_u_ET_DE_v)));
DEFV(Local,DEFV(Float,INIT(diviseur_du_pas_de_v,DIVISEUR_DU_PAS_DE_u_ET_DE_v)));
/* Ce dispositif introduit le 20021009095952 permet d'utiliser le dispositif precedent */
/* d'echantillonnage precedent et ce sans avoir a toucher aux pas des coordonnees {u,v}. */
/* Il suffira, par exemple, d'utiliser des diviseurs egaux aux echantillonnages... */
#define LE_PAS_DE_u_ET_DE_v_DE_DIFFERENTIATION_EST_HOMOTHETIQUE \
VRAI
DEFV(Local,DEFV(Logical,INIT(le_pas_de_u_de_differentiation_est_homothetique
,LE_PAS_DE_u_ET_DE_v_DE_DIFFERENTIATION_EST_HOMOTHETIQUE
)
)
);
DEFV(Local,DEFV(Logical,INIT(le_pas_de_v_de_differentiation_est_homothetique
,LE_PAS_DE_u_ET_DE_v_DE_DIFFERENTIATION_EST_HOMOTHETIQUE
)
)
);
/* Ce dispositif introduit le 20041119145430 permet de faire que le pas de differentiation */
/* en {u,v} est homothetique ('VRAI'), c'est-a-dire qu'il est alors calcule a partir de */
/* {pas_de_u_effectif,pas_de_v_effectif} ou bien ('FAUX') a partir de {pas_de_u,pas_de_v}. */
#define DIVISEUR_DE_DIFFERENTIATION_DE_u_ET_DE_v \
FU
DEFV(Local,DEFV(Float,INIT(diviseur_de_differentiation_de_u,DIVISEUR_DE_DIFFERENTIATION_DE_u_ET_DE_v)));
DEFV(Local,DEFV(Float,INIT(diviseur_de_differentiation_de_v,DIVISEUR_DE_DIFFERENTIATION_DE_u_ET_DE_v)));
/* Ce dispositif introduit le 20041107150057 ne sert que lorsque la differentiation */
/* est approchee (dans 'GENERATION_D_UNE_IMAGE_DE_LA_SURFACE_AVEC_DIFFERENCES____(...)'). */
#define ZERO_D_UNE_DROITE_DU_PLAN_UV \
FZERO
#define TRACER_UNE_DROITE_DU_PLAN_UV \
FAUX
DEFV(Local,DEFV(Logical,INIT(tracer_une_droite_du_plan_uv,TRACER_UNE_DROITE_DU_PLAN_UV)));
/* Ce dispositif introduit le 20060813110846 permet de tracer sur la surface une droite */
/* definie dans le plan {u,v}. Voir a ce propos 'v $xrs/surfaces.12$I 20060813111731' qui */
/* donne de precieuses informations sur les contraintes a respecter entre les coefficients */
/* {A,B,C}, les pas de {u,v} et les extremas {Um,UM} et {Vm,VM}... */
#define TRACER_UNE_DROITE_DU_PLAN_UV_____COMPATIBILITE_20170130 \
FAUX
DEFV(Local,DEFV(Logical,INIT(tracer_une_droite_du_plan_uv_____compatibilite_20170130
,TRACER_UNE_DROITE_DU_PLAN_UV_____COMPATIBILITE_20170130
)
)
);
/* Introduit le 20170130143255 lors des experiences d'helices autour de 'v $xiirs/HELI.11'. */
#define COEFFICIENT_A_D_UNE_DROITE_DU_PLAN_UV \
NEUT(FU)
#define COEFFICIENT_B_D_UNE_DROITE_DU_PLAN_UV \
NEGA(FU)
#define COEFFICIENT_C_D_UNE_DROITE_DU_PLAN_UV \
FZERO
#define COEFFICIENT_F_D_UNE_DROITE_DU_PLAN_UV \
FZERO
#define COEFFICIENT_G_D_UNE_DROITE_DU_PLAN_UV \
FZERO
#define COEFFICIENT_H_D_UNE_DROITE_DU_PLAN_UV \
FZERO
#define EPSILON_DE_DEFINITION_D_UNE_DROITE_DU_PLAN_UV \
mgEPSILON
DEFV(Local,DEFV(Float,INIT(coefficient_A_d_une_droite_du_plan_uv,COEFFICIENT_A_D_UNE_DROITE_DU_PLAN_UV)));
DEFV(Local,DEFV(Float,INIT(coefficient_B_d_une_droite_du_plan_uv,COEFFICIENT_B_D_UNE_DROITE_DU_PLAN_UV)));
DEFV(Local,DEFV(Float,INIT(coefficient_C_d_une_droite_du_plan_uv,COEFFICIENT_C_D_UNE_DROITE_DU_PLAN_UV)));
DEFV(Local,DEFV(Float,INIT(coefficient_F_d_une_droite_du_plan_uv,COEFFICIENT_F_D_UNE_DROITE_DU_PLAN_UV)));
DEFV(Local,DEFV(Float,INIT(coefficient_G_d_une_droite_du_plan_uv,COEFFICIENT_G_D_UNE_DROITE_DU_PLAN_UV)));
DEFV(Local,DEFV(Float,INIT(coefficient_H_d_une_droite_du_plan_uv,COEFFICIENT_H_D_UNE_DROITE_DU_PLAN_UV)));
DEFV(Local,DEFV(Float,INIT(epsilon_de_definition_d_une_droite_du_plan_uv,EPSILON_DE_DEFINITION_D_UNE_DROITE_DU_PLAN_UV)));
/* Definition d'une droite dans le plan {u,v} (introduite le 20060813110846) sous la */
/* forme : */
/* */
/* A.u + B.v + C = 0 */
/* */
/* a "epsilon pres" ('v $xrs/surfaces.12$I 20060813111731'). */
/* */
/* Le 20170124105849, cette droite a ete "generalisee" de la facon suivante : */
/* */
/* 2 2 */
/* A.u + B.v + C + F.u + G.u.v + H.v = 0 */
/* */
/* avec, par defaut, une "vraie" droite (F=G=H=0). */
DEFV(Local,DEFV(CHAR,INIT(POINTERc(nom_imageA_Droite_uv),NOM_PIPE_Local)));
/* Nom de l'image donnant eventuellement une initialisation arbitraire de la "droite" */
/* dans le plan {u,v} (qui n'est donc plus necessairement une droite... */
#define VISUALISER_LA_DROITE_TRACEE_DANS_LE_PLAN_UV \
FAUX
DEFV(Local,DEFV(Logical,INIT(visualiser_la_droite_tracee_dans_le_plan_uv,VISUALISER_LA_DROITE_TRACEE_DANS_LE_PLAN_UV)));
DEFV(Local,DEFV(CHAR,INIT(POINTERc(nom_imageR_Droite_uv),NOM_PIPE_Local)));
/* Nom de l'image de la droite dans le plan {u,v} s'il faut la visualiser. Ceci fut */
/* introduit le 20060817180327. */
/* */
/* ATTENTION : ceci ne peut se faire que si les trois conditions : */
/* */
/* IL_FAUT(generer_les_trois_projections_de_la_surface) */
/* */
/* (a cause de 'v $xrs/surfaces.12$I ._de_projection') et : */
/* */
/* IL_FAUT(visualiser_les_points_du_maillage_uv) */
/* */
/* et enfin : */
/* */
/* IL_FAUT(forcer_les_extrema_de_u_v_lors_de_la_projection_de_la_surface) */
/* */
/* sont reunies. */
/* */
/* Le 20170210125603, 'nom_imageDroite_uv' a ete remplace par 'nom_imageR_Droite_uv' suite */
/* a l'introduction de 'nom_imageA_Droite_uv' a cette date... */
#define FACTEUR_DE_LA_TRANSLATION_DE_u_v_EFFECTIFS_LORS_D_UN_LISTER \
FZERO
DEFV(Local,DEFV(Float,INIT(facteur_de_la_translation_de_u_effectif_lors_d_un_lister
,FACTEUR_DE_LA_TRANSLATION_DE_u_v_EFFECTIFS_LORS_D_UN_LISTER
)
)
);
DEFV(Local,DEFV(Float,INIT(facteur_de_la_translation_de_v_effectif_lors_d_un_lister
,FACTEUR_DE_LA_TRANSLATION_DE_u_v_EFFECTIFS_LORS_D_UN_LISTER
)
)
);
/* Introduit le 20091102091133 pour des programmes tel 'v $xrs/CalabiYau.12$K' dans lequel */
/* un meme couple {u,v} reapparaissait plusieurs fois rendant le travail de la commande */
/* 'v $xrs/SurfParti.01$Z' impossible. La valeur par defaut garantit la compatibilite */
/* anterieure... */
/* */
/* Je note le 20091113181227 grace a 'v $xiirs/CAYA.A1.5x5.6' qu'il semble que l'on passe */
/* d'un patch a son voisin par une rotation de pi/2. Donc plus que de translater les */
/* coordonnees {u,v}, il conviendrait de les permuter, mais malheureusement, elles ne */
/* sont pas definies dans le meme segment : */
/* */
/* u E [0 , p/2] */
/* v E [-1 , +1]. */
/* */
/* d'ou un gros probleme, mais de toutes facons, est-ce aussi simple ? */
#define FACILITER_LE_PARAMETRAGE_DE_u_v \
FAUX
#define NOMBRE_D_INTERS_u \
NEGA(UN)
#define NOMBRE_D_INTERS_v \
NEGA(UN)
#define NOMBRE_DE_POINTS_DANS_UN_INTER_u \
NEGA(UN)
#define NOMBRE_DE_POINTS_DANS_UN_INTER_v \
NEGA(UN)
DEFV(Local,DEFV(Logical,INIT(faciliter_le_parametrage_de_u_v,FACILITER_LE_PARAMETRAGE_DE_u_v)));
DEFV(Local,DEFV(Int,INIT(nombre_d_inters_u,NOMBRE_D_INTERS_u)));
DEFV(Local,DEFV(Int,INIT(nombre_de_points_dans_un_inter_u,NOMBRE_DE_POINTS_DANS_UN_INTER_u)));
DEFV(Local,DEFV(Int,INIT(nombre_d_inters_v,NOMBRE_D_INTERS_v)));
DEFV(Local,DEFV(Int,INIT(nombre_de_points_dans_un_inter_v,NOMBRE_DE_POINTS_DANS_UN_INTER_v)));
/* Ceci a ete introduit le 20160414104726 afin de faciliter la definition du maillage */
/* en {u,v} des surfaces. */
/* */
/* Les valeurs par defaut 'UN' ont ete remplaces par 'NEGA(UN)' (une valeur impossible */
/* a priori) le 20220611094319 afin de forcer leur definition lors de l'appel des '$X's */
/* correspondants... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* U T I L I S A T I O N E V E N T U E L L E D U " GooF ' : */
/* */
/*************************************************************************************************************************************/
#ifdef PRAGMA_CPP_____AUTORISER_LE_GooF
# define UTILISER_L_ARITHMETIQUE_ETENDUE_ET_NON_BASIQUE \
FAUX
DEFV(Local,DEFV(Logical,INIT(Fx_Fy_Fz_____utiliser_l_arithmetique_etendue_au_lieu_de_l_arithmetique_de_base
,UTILISER_L_ARITHMETIQUE_ETENDUE_ET_NON_BASIQUE
)
)
);
DEFV(Local,DEFV(Logical,INIT(dFx_dFy_dFz_____utiliser_l_arithmetique_etendue_au_lieu_de_l_arithmetique_de_base
,UTILISER_L_ARITHMETIQUE_ETENDUE_ET_NON_BASIQUE
)
)
);
/* Indicateurs introduits le 20080126082946 et mis dans ce fichier le 20080126100708, la */
/* situation anterieure dans 'v $xrs/surfaces.12$I USe_GooF______CONDITIONNEL' n'etant pas */
/* compatible evidemment avec leurs references dans 'v $xrs/surfaces.13$I 20080126083600'... */
#Aifdef PRAGMA_CPP_____AUTORISER_LE_GooF
#Eifdef PRAGMA_CPP_____AUTORISER_LE_GooF
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D I F F E R E N T I A T I O N P A R D I F F E R E N C E S D E L A S U R F A C E : */
/* */
/*************************************************************************************************************************************/
#define CALCUL_DES_DIFFERENTIELLES_AVEC_u_v_____COMPATIBILITE_2009110217 \
FAUX
DEFV(Local,DEFV(Logical,INIT(calcul_des_differentielles_avec_u_v_____compatibilite_2009110217
,CALCUL_DES_DIFFERENTIELLES_AVEC_u_v_____COMPATIBILITE_2009110217
)
)
);
/* Afin d'assurer la compatibilite avec les resultats obtenus anterieurement a la date */
/* du 20091102174157... */
#define PONDERATION_DE__u_____DANS_dx \
FZERO
#define PONDERATION_DE__v_____DANS_dx \
FZERO
DEFV(Local,DEFV(Float,INIT(ponderation_de__u_____dans_dx,PONDERATION_DE__u_____DANS_dx)));
DEFV(Local,DEFV(Float,INIT(ponderation_de__v_____dans_dx,PONDERATION_DE__v_____DANS_dx)));
/* Introduit le 20090723220632... */
#define PONDERATION_DE_Fx_____DANS_dx \
FZERO
#define PONDERATION_DE_Fx_u___DANS_dx \
FZERO
#define PONDERATION_DE_Fx___v_DANS_dx \
FZERO
#define PONDERATION_DE_Fx_u_v_DANS_dx \
FU
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fx_____dans_dx,PONDERATION_DE_Fx_____DANS_dx)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fx_u___dans_dx,PONDERATION_DE_Fx_u___DANS_dx)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fx___v_dans_dx,PONDERATION_DE_Fx___v_DANS_dx)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fx_u_v_dans_dx,PONDERATION_DE_Fx_u_v_DANS_dx)));
#define PONDERATION_DE_Fy_____DANS_dx \
FZERO
#define PONDERATION_DE_Fy_u___DANS_dx \
FZERO
#define PONDERATION_DE_Fy___v_DANS_dx \
FZERO
#define PONDERATION_DE_Fy_u_v_DANS_dx \
FZERO
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fy_____dans_dx,PONDERATION_DE_Fy_____DANS_dx)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fy_u___dans_dx,PONDERATION_DE_Fy_u___DANS_dx)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fy___v_dans_dx,PONDERATION_DE_Fy___v_DANS_dx)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fy_u_v_dans_dx,PONDERATION_DE_Fy_u_v_DANS_dx)));
#define PONDERATION_DE_Fz_____DANS_dx \
FZERO
#define PONDERATION_DE_Fz_u___DANS_dx \
FZERO
#define PONDERATION_DE_Fz___v_DANS_dx \
FZERO
#define PONDERATION_DE_Fz_u_v_DANS_dx \
FZERO
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fz_____dans_dx,PONDERATION_DE_Fz_____DANS_dx)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fz_u___dans_dx,PONDERATION_DE_Fz_u___DANS_dx)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fz___v_dans_dx,PONDERATION_DE_Fz___v_DANS_dx)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fz_u_v_dans_dx,PONDERATION_DE_Fz_u_v_DANS_dx)));
#define PONDERATION_DE__u_____DANS_dy \
FZERO
#define PONDERATION_DE__v_____DANS_dy \
FZERO
DEFV(Local,DEFV(Float,INIT(ponderation_de__u_____dans_dy,PONDERATION_DE__u_____DANS_dy)));
DEFV(Local,DEFV(Float,INIT(ponderation_de__v_____dans_dy,PONDERATION_DE__v_____DANS_dy)));
/* Introduit le 20090723220632... */
#define PONDERATION_DE_Fx_____DANS_dy \
FZERO
#define PONDERATION_DE_Fx_u___DANS_dy \
FZERO
#define PONDERATION_DE_Fx___v_DANS_dy \
FZERO
#define PONDERATION_DE_Fx_u_v_DANS_dy \
FZERO
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fx_____dans_dy,PONDERATION_DE_Fx_____DANS_dy)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fx_u___dans_dy,PONDERATION_DE_Fx_u___DANS_dy)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fx___v_dans_dy,PONDERATION_DE_Fx___v_DANS_dy)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fx_u_v_dans_dy,PONDERATION_DE_Fx_u_v_DANS_dy)));
#define PONDERATION_DE_Fy_____DANS_dy \
FZERO
#define PONDERATION_DE_Fy_u___DANS_dy \
FZERO
#define PONDERATION_DE_Fy___v_DANS_dy \
FZERO
#define PONDERATION_DE_Fy_u_v_DANS_dy \
FU
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fy_____dans_dy,PONDERATION_DE_Fy_____DANS_dy)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fy_u___dans_dy,PONDERATION_DE_Fy_u___DANS_dy)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fy___v_dans_dy,PONDERATION_DE_Fy___v_DANS_dy)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fy_u_v_dans_dy,PONDERATION_DE_Fy_u_v_DANS_dy)));
#define PONDERATION_DE_Fz_____DANS_dy \
FZERO
#define PONDERATION_DE_Fz_u___DANS_dy \
FZERO
#define PONDERATION_DE_Fz___v_DANS_dy \
FZERO
#define PONDERATION_DE_Fz_u_v_DANS_dy \
FZERO
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fz_____dans_dy,PONDERATION_DE_Fz_____DANS_dy)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fz_u___dans_dy,PONDERATION_DE_Fz_u___DANS_dy)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fz___v_dans_dy,PONDERATION_DE_Fz___v_DANS_dy)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fz_u_v_dans_dy,PONDERATION_DE_Fz_u_v_DANS_dy)));
#define PONDERATION_DE__u_____DANS_dz \
FZERO
#define PONDERATION_DE__v_____DANS_dz \
FZERO
DEFV(Local,DEFV(Float,INIT(ponderation_de__u_____dans_dz,PONDERATION_DE__u_____DANS_dz)));
DEFV(Local,DEFV(Float,INIT(ponderation_de__v_____dans_dz,PONDERATION_DE__v_____DANS_dz)));
/* Introduit le 20090723220632... */
#define PONDERATION_DE_Fx_____DANS_dz \
FZERO
#define PONDERATION_DE_Fx_u___DANS_dz \
FZERO
#define PONDERATION_DE_Fx___v_DANS_dz \
FZERO
#define PONDERATION_DE_Fx_u_v_DANS_dz \
FZERO
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fx_____dans_dz,PONDERATION_DE_Fx_____DANS_dz)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fx_u___dans_dz,PONDERATION_DE_Fx_u___DANS_dz)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fx___v_dans_dz,PONDERATION_DE_Fx___v_DANS_dz)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fx_u_v_dans_dz,PONDERATION_DE_Fx_u_v_DANS_dz)));
#define PONDERATION_DE_Fy_____DANS_dz \
FZERO
#define PONDERATION_DE_Fy_u___DANS_dz \
FZERO
#define PONDERATION_DE_Fy___v_DANS_dz \
FZERO
#define PONDERATION_DE_Fy_u_v_DANS_dz \
FZERO
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fy_____dans_dz,PONDERATION_DE_Fy_____DANS_dz)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fy_u___dans_dz,PONDERATION_DE_Fy_u___DANS_dz)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fy___v_dans_dz,PONDERATION_DE_Fy___v_DANS_dz)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fy_u_v_dans_dz,PONDERATION_DE_Fy_u_v_DANS_dz)));
#define PONDERATION_DE_Fz_____DANS_dz \
FZERO
#define PONDERATION_DE_Fz_u___DANS_dz \
FZERO
#define PONDERATION_DE_Fz___v_DANS_dz \
FZERO
#define PONDERATION_DE_Fz_u_v_DANS_dz \
FU
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fz_____dans_dz,PONDERATION_DE_Fz_____DANS_dz)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fz_u___dans_dz,PONDERATION_DE_Fz_u___DANS_dz)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fz___v_dans_dz,PONDERATION_DE_Fz___v_DANS_dz)));
DEFV(Local,DEFV(Float,INIT(ponderation_de_Fz_u_v_dans_dz,PONDERATION_DE_Fz_u_v_DANS_dz)));
/* Ce dispositif introduit le 20041118143227 permet d'utiliser les differentes derivees */
/* partielles obtenues par differences pour colorier la surface... */
/* */
/* Le 20090606171802 furent introduites les ponderations relatives a {cx,cy,cz} (baptisees */
/* 'ponderation_de_F?_____dans_d?') nulles par defaut pour des raisons de compatibilite */
/* anterieure... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* P R O J E C T I O N D E L A S U R F A C E : */
/* */
/*************************************************************************************************************************************/
#include xci/acces.11.I"
/* Introduit le 20050120120558 pour definir 'CONSERVER_LE_ZERO'... */
#define GENERER_LES_TROIS_PROJECTIONS_DE_LA_SURFACE \
FAUX
DEFV(Local,DEFV(Logical,INIT(generer_les_trois_projections_de_la_surface,GENERER_LES_TROIS_PROJECTIONS_DE_LA_SURFACE)));
/* Indique si l'on visualise la surface ('FAUX') ou bien si l'on genere ses projections */
/* ('VRAI'). Ceci a ete introduit le 20041126093618 afin d'etre compatible et utilisable */
/* par 'v $xrs/project2D.11$K P.R.O.J.E.C.T.O.R'. */
/* */
/* On notera le 20050202175042 que lorsque les projections sont generees dans le but de */
/* reinjecter les trois champs "standard=FAUX" dans 'v $xrs/project2D.11$K', par exemple, */
/* dans le cas de 'v $xrs/sphere.11$K', il faudra utiliser : */
/* */
/* Mu=6.283185307179586 ($dpi) */
/* PARAMETRE_R=1 */
/* */
/* si l'on souhaite que n'apparaissent pas des artefacts. Dans 'v $xrs/project2D.11$K' il */
/* faudra alors utiliser : */
/* */
/* mu=0.0 Mu=0.5 */
/* mv=0.0 Mv=1.0 */
/* */
/* afin de respecter les symetries... */
#define FAIRE_LES_INITIALISATIONS_SPECIFIQUES_DE_PROJECTION_DE_LA_SURFACE \
VRAI
DEFV(Local,DEFV(Logical,INIT(faire_les_initialisations_specifiques_de_projection_de_la_surface
,FAIRE_LES_INITIALISATIONS_SPECIFIQUES_DE_PROJECTION_DE_LA_SURFACE
)
)
);
/* Indique s'il faut executer 'INITIALISATIONS_SPECIFIQUES_DE_PROJECTION_DE_LA_SURFACE(...)' */
/* ('VRAI') ou pas ('FAUX') ? Ceci fut introduit le 20060502142115... */
#define FORCER_LES_EXTREMA_DE_u_v_LORS_DE_LA_PROJECTION_DE_LA_SURFACE \
VRAI
DEFV(Local,DEFV(Logical,INIT(forcer_les_extrema_de_u_v_lors_de_la_projection_de_la_surface
,FORCER_LES_EXTREMA_DE_u_v_LORS_DE_LA_PROJECTION_DE_LA_SURFACE
)
)
);
/* Indique si l'on force les extrema de {u,v} via une procedure 'v $xrs/surfaces.12$I Pxyz' */
/* ('VRAI') ou bien si l'on utilise ceux qui ont ete donnes en parametres ('FAUX'). Ceci fut */
/* introduit le 20060306160444. La valeur par defaut garantit la compatibilite anterieure... */
#TestADef LES_TROIS_PROJECTIONS_DE_LA_SURFACE_DOIVENT_ETRE_TRANSFORMEES \
FAUX
DEFV(Local,DEFV(Logical,INIT(les_trois_projections_de_la_surface_doivent_etre_transformees
,LES_TROIS_PROJECTIONS_DE_LA_SURFACE_DOIVENT_ETRE_TRANSFORMEES
)
)
);
/* Si 'IL_FAUT(generer_les_trois_projections_de_la_surface)', ces projections doivent-elles */
/* etre transformees avant toute autre chose via les 'ROTATION_O?'s et 'TRANSLATION_O?'s ? */
/* Cette possibilite a ete introduite le 20090606104024. */
#TestADef LES_TROIS_PROJECTIONS_DE_LA_SURFACE_SONT_EN_FAIT_CELLES_DE_LA_TEXTURE \
FAUX
DEFV(Local,DEFV(Logical,INIT(les_trois_projections_de_la_surface_sont_en_fait_celles_de_la_texture
,LES_TROIS_PROJECTIONS_DE_LA_SURFACE_SONT_EN_FAIT_CELLES_DE_LA_TEXTURE
)
)
);
/* Si 'IL_FAUT(generer_les_trois_projections_de_la_surface)', ces projections sont-elles */
/* {cx,cy,cz} ('FAUX') ou bien la texture ('VRAI') ? Ceci fut introduit le 20050713143505. */
/* Le 'define' est devenu un 'TestADef' le 20050714093144 et ce afin d'etre utilise dans */
/* 'v $xrs/project2D.13$I LES_TROIS_PROJECTIONS_DE_LA_SURFACE_SONT_EN_FAIT_CELLES_DE_LA_T.'. */
#define LES_TROIS_PROJECTIONS_DE_LA_TEXTURE_SONT_MAPPEES_SUR_LA_SURFACE \
VRAI
DEFV(Local,DEFV(Logical,INIT(les_trois_projections_de_la_texture_sont_mappees_sur_la_surface
,LES_TROIS_PROJECTIONS_DE_LA_TEXTURE_SONT_MAPPEES_SUR_LA_SURFACE
)
)
);
/* Si 'EST_VRAI(les_trois_projections_de_la_surface_sont_en_fait_celles_de_la_texture)', */
/* doit-on montrer simplement la texture utilisee ('FAUX') ou bien montrer comment elle */
/* est distordue lors de son mapping. Ceci fut introduit le 20050820082028... */
#define TEXTURES_PERIODISER \
VRAI
DEFV(Local,DEFV(Logical,INIT(textures_periodiser_X,TEXTURES_PERIODISER)));
DEFV(Local,DEFV(Logical,INIT(textures_periodiser_Y,TEXTURES_PERIODISER)));
#define TEXTURES_SYMETRISER \
FAUX
DEFV(Local,DEFV(Logical,INIT(textures_symetriser_X,TEXTURES_SYMETRISER)));
DEFV(Local,DEFV(Logical,INIT(textures_symetriser_Y,TEXTURES_SYMETRISER)));
#define TEXTURES_PROLONGER \
FAUX
DEFV(Local,DEFV(Logical,INIT(textures_prolonger_X,TEXTURES_PROLONGER)));
DEFV(Local,DEFV(Logical,INIT(textures_prolonger_Y,TEXTURES_PROLONGER)));
#define TEXTURES_NIVEAU_HORS_IMAGE \
FLOT__NOIR
DEFV(Local,DEFV(genere_Float,INIT(textures_niveau_hors_image,TEXTURES_NIVEAU_HORS_IMAGE)));
/* Si 'EST_VRAI(les_trois_projections_de_la_surface_sont_en_fait_celles_de_la_texture)' */
/* donnent les conditions d'acces aux trois textures (introduit le 20050713171550). */
/* */
/* La possibilite de symetriser a ete introduite le 20050721100553... */
/* */
/* Jusqu'au 20060117133441, 'textures_niveau_hors_image' etait un 'genere_p' par erreur... */
#define LES_TROIS_PROJECTIONS_DE_LA_SURFACE_SONT_DES_IMAGES_STANDARDS \
FAUX
DEFV(Local,DEFV(Logical,INIT(les_trois_projections_de_la_surface_sont_des_images_standards
,LES_TROIS_PROJECTIONS_DE_LA_SURFACE_SONT_DES_IMAGES_STANDARDS
)
)
);
/* Indique si 'IL_FAUT(generer_les_trois_projections_de_la_surface)' si les trois */
/* sont des images standards ('VRAI') ou non ('FAUX'). Ceci a ete introduit le */
/* 20050115112502. */
#define CONSERVER_LE_ZERO_DES_TROIS_PROJECTIONS_DE_LA_SURFACE \
CONSERVER_LE_ZERO
DEFV(Local,DEFV(Logical,INIT(conserver_le_zero_des_trois_projections_de_la_surface
,CONSERVER_LE_ZERO_DES_TROIS_PROJECTIONS_DE_LA_SURFACE
)
)
);
/* Indique si 'EST_VRAI(les_trois_projections_de_la_surface_sont_des_images_standards)' si */
/* le zero doit etre conserve ('VRAI') ou pas ('FAUX') ? La valeur par defaut est choisie */
/* de facon a etre compatible avec celle de 'v $xci/acces.01$I CONSERVER_LE_ZERO'... */
DEFV(Local,DEFV(CHAR,INIT(POINTERc(nom_imageProjectionFx),NOM_PIPE_Local)));
DEFV(Local,DEFV(CHAR,INIT(POINTERc(nom_imageProjectionFy),NOM_PIPE_Local)));
DEFV(Local,DEFV(CHAR,INIT(POINTERc(nom_imageProjectionFz),NOM_PIPE_Local)));
/* Nom des trois projections. */
DEFV(Local,DEFV(CHAR,INIT(POINTERc(nom_imageProjection),NOM_PIPE_Local)));
/* Racine (eventuelle) des trois projections (introduite le 20120531144849). */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* T R A N S F O R M A T I O N D E S C O R D O N N E E S ' u ' E T ' v ' : */
/* */
/*************************************************************************************************************************************/
#define TRANSFORMER_u_v \
FAUX
DEFV(Local,DEFV(Logical,INIT(transformer_u_v,TRANSFORMER_u_v)));
#define TROUER_u_v \
FAUX
DEFV(Local,DEFV(Logical,INIT(trouer_u_v,TROUER_u_v)));
/* Afin de pouvoir transformer {u,v} de facon quelconque (introduit le 20060117132226)... */
/* Le "trouage" a ete desolidarise de la transformation le 20060530151539... */
/* */
/* On notera le 20060117173116 une consequence de cela au sujet de l'intersection des */
/* paralleles et des meridiens. Lorsque 'IL_NE_FAUT_PAS(transformer_u_v)', les mailles */
/* ainsi formees sont regulieres et leur espacement varie d'une facon "douce". Dans le cas */
/* contraire, les variations de {u,v} effectifs n'etant plus necessairement regulieres, les */
/* mailles peuvent alors evoluer de facon erratique... */
/* */
/* Le 20060117174943, je note que les resultats de 'v $xrs/sphere.21$K' (utilisee avec */
/* "PARAMETRE_T=1") peuvent etre obtenus avec 'v $xrs/sphere.11$K' a condition d'activer */
/* cette nouvelle option via (d'ou le "C=1" pour le champ '$xTV/CHAMP.1.v') : */
/* */
/* UV_transformer=VRAI */
/* */
/* et en lui communiquant les champs {u,v} calcules de la facon suivante : */
/* */
/* */
/* :Debut_listG: */
/* */
/* $Z $xci/lineaire$X \ */
/* $Z A=1 B=0 C=1 \ */
/* $Z standard=FAUX \ */
/* $Z $formatI | \ */
/* $Z $xci/normalise.01$X \ */
/* $Z origine=0 extremite=$pi \ */
/* $Z R=$xTV/CHAMP.u \ */
/* $Z $formatI */
/* */
/* $Z $xci/lineaire$X \ */
/* $Z A=0 B=1 C=1 \ */
/* $Z standard=FAUX \ */
/* $Z $formatI | \ */
/* $Z $xci/normalise.01$X \ */
/* $Z origine=0 extremite=$dpi \ */
/* $Z R=$xTV/CHAMP.1.v \ */
/* $Z $formatI */
/* */
/* $Z $xci/sinus$X \ */
/* $Z cx=1 cy=0 \ */
/* $Z phase=$pis2 \ */
/* $Z carre_X_CHAMP_3D=FAUX carre_Y_CHAMP_3D=FAUX \ */
/* $Z standard=FAUX \ */
/* $Z $formatI | \ */
/* $Z $xci/normalise.01$X \ */
/* $Z origine=-1 extremite=+1 \ */
/* $Z R=$xTV/CHAMP.2.v \ */
/* $Z $formatI */
/* */
/* $Z $xci/somme_02$X \ */
/* $Z standard=FAUX \ */
/* $Z A1=$xTV/CHAMP.1.v \ */
/* $Z A2=$xTV/CHAMP.2.v \ */
/* $Z R=$xTV/CHAMP.v \ */
/* $Z $formatI */
/* */
/* $Z $DELETE $xTV/CHAMP.1.v */
/* $Z $DELETE $xTV/CHAMP.2.v */
/* */
/* :Fin_listG: */
/* */
/* */
/* et le tour est joue, ou du moins presque car, en effet, le champ '$xTV/CHAMP.v' n'est */
/* pas sur un tore ('v $xiirs/SPHE.92' qui n'est pas fermee a cause donc de la coordonnee */
/* 'v'...). */
#define GESTION_TORIQUE_DE_u_v \
FAUX
DEFV(Local,DEFV(Logical,INIT(gestion_torique_de_u,GESTION_TORIQUE_DE_u_v)));
DEFV(Local,DEFV(Logical,INIT(gestion_torique_de_v,GESTION_TORIQUE_DE_u_v)));
/* Afin de savoir s'il faut proceder a une gestion "torique" des coordonnees {u,v} */
/* effectives, c'est-a-dire apres la transformation eventuelle des coordonnees {u,v}. */
/* Ceci fut introduit le 20060601132151. */
#define TRANSFORMER_u_v_PERIODISER \
VRAI
DEFV(Local,DEFV(Logical,INIT(transformer_u_v_periodiser_u,TRANSFORMER_u_v_PERIODISER)));
DEFV(Local,DEFV(Logical,INIT(transformer_u_v_periodiser_v,TRANSFORMER_u_v_PERIODISER)));
DEFV(Local,DEFV(Logical,INIT(trouer_u_v_periodiser_u,TRANSFORMER_u_v_PERIODISER)));
DEFV(Local,DEFV(Logical,INIT(trouer_u_v_periodiser_v,TRANSFORMER_u_v_PERIODISER)));
#define TRANSFORMER_u_v_SYMETRISER \
FAUX
DEFV(Local,DEFV(Logical,INIT(transformer_u_v_symetriser_u,TRANSFORMER_u_v_SYMETRISER)));
DEFV(Local,DEFV(Logical,INIT(transformer_u_v_symetriser_v,TRANSFORMER_u_v_SYMETRISER)));
DEFV(Local,DEFV(Logical,INIT(trouer_u_v_symetriser_u,TRANSFORMER_u_v_SYMETRISER)));
DEFV(Local,DEFV(Logical,INIT(trouer_u_v_symetriser_v,TRANSFORMER_u_v_SYMETRISER)));
#define TRANSFORMER_u_v_PROLONGER \
FAUX
DEFV(Local,DEFV(Logical,INIT(transformer_u_v_prolonger_u,TRANSFORMER_u_v_PROLONGER)));
DEFV(Local,DEFV(Logical,INIT(transformer_u_v_prolonger_v,TRANSFORMER_u_v_PROLONGER)));
DEFV(Local,DEFV(Logical,INIT(trouer_u_v_prolonger_u,TRANSFORMER_u_v_PROLONGER)));
DEFV(Local,DEFV(Logical,INIT(trouer_u_v_prolonger_v,TRANSFORMER_u_v_PROLONGER)));
#define TRANSFORMER_u_v_NIVEAU_HORS_IMAGE \
FZERO
DEFV(Local,DEFV(genere_Float,INIT(transformer_u_v_niveau_hors_image,TRANSFORMER_u_v_NIVEAU_HORS_IMAGE)));
/* Afin de parametrer l'acces aux transformations de {u,v}... */
DEFV(Local,DEFV(CHAR,INIT(POINTERc(nom_transformation_u),NOM_PIPE_Local)));
DEFV(Local,DEFV(CHAR,INIT(POINTERc(nom_transformation_v),NOM_PIPE_Local)));
/* Nom des transformation des coordonnees {u,v} (introduit le 20060117135208...). */
#define LA_SURFACE_EST_INTEGRE \
FLOT(VRAI)
DEFV(Local,DEFV(CHAR,INIT(POINTERc(nom_trouage_u_v),NOM_PIPE_Local)));
/* Le 20060529133037 a ete introduit la possibilite de trouer de facon quelconque (connexe */
/* ou pas) la surface ('v $xrs/surfaces.12$I 20060529131510'). */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* T E X T U R A G E D E L A S U R F A C E : */
/* */
/*************************************************************************************************************************************/
#define TEXTURE_____COMPATIBILITE_20170303 \
FAUX
DEFV(Local,DEFV(Logical,INIT(texture_____compatibilite_20170303,TEXTURE_____COMPATIBILITE_20170303)));
/* Afin d'assurer la compatibilite avec les resultats obtenus anterieurement a la date */
/* du 20170303103205... */
#define AXES_COORDONNEES_FERMES_OUVERTS__TEXTURAGE_SURFACES_____COMPATIBILITE_20130220 \
FAUX
DEFV(Local,DEFV(Logical,INIT(AXES_COORDONNEES_FERMES_OUVERTS__texturage_surfaces_____compatibilite_20130220
,AXES_COORDONNEES_FERMES_OUVERTS__TEXTURAGE_SURFACES_____COMPATIBILITE_20130220
)
)
);
/* Afin d'assurer la compatibilite avec les resultats obtenus anterieurement a la date */
/* du 20130220134703... */
#define LES_TEXTURES_SONT_DES_IMAGES_STANDARDS \
VRAI
DEFV(Local,DEFV(Logical,INIT(les_textures_sont_des_images_standards,LES_TEXTURES_SONT_DES_IMAGES_STANDARDS)));
/* Indique si les textures sont des images "standard"s (introduit le 20050715181436)... */
#define LA_DYNAMIQUE_DES_TEXTURES_STANDARDS_DOIT_ETRE_CONSERVEE \
FAUX
DEFV(Local,DEFV(Logical,INIT(la_dynamique_des_textures_standards_doit_etre_conservee
,LA_DYNAMIQUE_DES_TEXTURES_STANDARDS_DOIT_ETRE_CONSERVEE
)
)
);
/* Indique si les textures "standard"s doivent conserver leur dynamique. Ceci a ete */
/* introduit le 20221005114221 lors de la mise au point de 'v $xiirv/NFRI.F1'. La valeur */
/* par defaut garantit la compatibilite anterieure... */
DEFV(Local,DEFV(CHAR,INIT(POINTERc(nom_textureR),NOM_PIPE_Local)));
DEFV(Local,DEFV(CHAR,INIT(POINTERc(nom_textureV),NOM_PIPE_Local)));
DEFV(Local,DEFV(CHAR,INIT(POINTERc(nom_textureB),NOM_PIPE_Local)));
/* Nom des trois textures. */
#define ACCES_AUX_IMAGES(texture,nom_de_texture) \
/* Le 20050715184628 l'argument 'image' a ete rebaptise 'texture' a cause de l'introduction */ \
/* du 'BDEFV(image,...)' ci-apres le 20050715181436 (par symetrie 'nom_d_image' a ete change */ \
/* en 'nom_de_texture'...). */ \
Bblock \
Test(EST_VRAI(les_textures_sont_des_images_standards)) \
Bblock \
BDEFV(image,texture_standard); \
CALi(Iload_image_si_present(texture_standard,nom_de_texture,NOM_PIPE_Local,BLANC)); \
\
Test(EST_VRAI(la_dynamique_des_textures_standards_doit_etre_conservee)) \
/* Test introduit le 20221005114221 lors de la mise au point de 'v $xiirv/NFRI.F1'... */ \
Bblock \
CALS(Istd_float_brutal_normalise(texture,texture_standard)); \
/* Acces a une texture "standard" et conversion en conservant la dynamique... */ \
Eblock \
ATes \
Bblock \
CALS(Istd_float(texture,______________NOIR_NORMALISE,______________BLANC_NORMALISE,texture_standard)); \
/* Acces a une texture "standard" et conversion... */ \
Eblock \
ETes \
EDEFV(image,texture_standard); \
Eblock \
ATes \
Bblock \
CALi(IloadF_image_si_present(texture,nom_de_texture,NOM_PIPE_Local,______________BLANC_NORMALISE)); \
Eblock \
ETes \
Eblock \
/* Acces a une image "standard" lorsque cela est necessaire et sinon, mise a 'BLANC'... */
#TestADef PONDERATION_ROUGE_VERTE_BLEUE_POUR_dcx_dcy_dcz \
FZERO \
/* Le 20060130115333 'define' est devenu 'TestADef' pour permettre la compatibilite */ \
/* anterieure de 'v $xrs/CalabiYau.12$K PONDERATION_ROUGE_VERTE_BLEUE_POUR_dcx_dcy_dcz' */ \
/* et de 'v $xrs/CalabiYau.22$K PONDERATION_ROUGE_VERTE_BLEUE_POUR_dcx_dcy_dcz'... */
DEFV(Local,DEFV(Float,INIT(ponderation_ROUGE_pour_dcx,PONDERATION_ROUGE_VERTE_BLEUE_POUR_dcx_dcy_dcz)));
DEFV(Local,DEFV(Float,INIT(ponderation_VERTE_pour_dcy,PONDERATION_ROUGE_VERTE_BLEUE_POUR_dcx_dcy_dcz)));
DEFV(Local,DEFV(Float,INIT(ponderation_BLEUE_pour_dcz,PONDERATION_ROUGE_VERTE_BLEUE_POUR_dcx_dcy_dcz)));
/* Facteurs permettant de definir la facon de colorier les spheres : */
/* */
/* 0 : avec {dcx,dcy,dcz} (valeur par defaut...), */
/* 1 : avec {Image_ROUGE,Image_VERTE,Image_BLEUE}. */
/* */
/* sachant que l'on peut utiliser aussi toutes valeurs intermediaires... */
/* Le 20060201095118, l'indicateur 'prendre_la_valeur_absolue_des_differentielles' fut */
/* transfere dans 'v $xrk/attractor.1C$I 20060201095118' pour en augmenter la portee... */
#define ACCES_AUX_IMAGES_FLOTTANTES(image,nom_d_image,valeur_par_defaut) \
Bblock \
CALi(IloadF_image_si_present(image,nom_d_image,NOM_PIPE_Local,valeur_par_defaut)); \
Eblock \
/* Acces a une image flottante lorsque cela est necessaire et sinon, initialisation... Cela */ \
/* a ete introduit le 20041229174140... */
DEFV(Local,DEFV(CHAR,INIT(POINTERc(nom_rayon),NOM_PIPE_Local)));
/* Nom du champ de rayon (introduit le 20041229173739)... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* V I S U A L I S A T I O N D E L A N O R M A L E : */
/* */
/*************************************************************************************************************************************/
#define VISUALISER_LA_NORMALE \
FAUX
DEFV(Local,DEFV(Logical,INIT(visualiser_la_normale,VISUALISER_LA_NORMALE)));
/* Indique si l'on visualise la normale ('VRAI') ou uniquement la surface ('FAUX'). */
#define NOMBRE_ABSOLU_DE_POINTS_SUR_UNE_NORMALE \
SEIZE
DEFV(Local,DEFV(Positive,INIT(nombre_absolu_de_points_sur_une_normale,NOMBRE_ABSOLU_DE_POINTS_SUR_UNE_NORMALE)));
/* Nombre de points (non compris les extremites) destines a materialiser les normales. */
#define FACTEUR_DE_LA_NORMALE \
FRA1(FRA10(FU))
DEFV(Local,DEFV(Float,INIT(facteur_de_la_normale,FACTEUR_DE_LA_NORMALE)));
/* Facteur de "renormalisation" de la normale... */
#define FACTEUR_DU_RAYON_DE_VISUALISATION_POUR_LA_NORMALE \
FDU
DEFV(Local,DEFV(Float,INIT(facteur_du_rayon_de_visualisation_pour_la_normale,FACTEUR_DU_RAYON_DE_VISUALISATION_POUR_LA_NORMALE)));
/* Facteur permettant de donner a priori un aspect "effile" a la normale. */
#define FACTEUR_DU_ROUGE_POUR_LA_NORMALE \
FU
#define FACTEUR_DU_VERTE_POUR_LA_NORMALE \
FU
#define FACTEUR_DU_BLEUE_POUR_LA_NORMALE \
FU
DEFV(Local,DEFV(Float,INIT(facteur_du_ROUGE_pour_la_normale,FACTEUR_DU_ROUGE_POUR_LA_NORMALE)));
DEFV(Local,DEFV(Float,INIT(facteur_du_VERTE_pour_la_normale,FACTEUR_DU_VERTE_POUR_LA_NORMALE)));
DEFV(Local,DEFV(Float,INIT(facteur_du_BLEUE_pour_la_normale,FACTEUR_DU_BLEUE_POUR_LA_NORMALE)));
/* Facteur permettant d'attenuer les couleurs sur la normale. Cela fut introduit le */
/* 20060207093507, les valeurs par defaut garantissant la compatibilite anterieure... */
#define NIVEAU_ROUGE_POUR_LA_NORMALE \
FU
#define NIVEAU_VERTE_POUR_LA_NORMALE \
FU
#define NIVEAU_BLEUE_POUR_LA_NORMALE \
FU
DEFV(Local,DEFV(Float,INIT(niveau_ROUGE_pour_la_normale,NIVEAU_ROUGE_POUR_LA_NORMALE)));
DEFV(Local,DEFV(Float,INIT(niveau_VERTE_pour_la_normale,NIVEAU_VERTE_POUR_LA_NORMALE)));
DEFV(Local,DEFV(Float,INIT(niveau_BLEUE_pour_la_normale,NIVEAU_BLEUE_POUR_LA_NORMALE)));
/* Niveaux pouvant participer au coloriage de la normale (introduits le 20060207111036). */
/* */
/* Jusqu'au les valeurs par defaut etaient {dXmax_ESPACE,dYmax_ESPACE}, mais a cause */
/* de 'v $xrs/surfaces.12$I gNORMALISATION_ACCROISSEMENT_3D.normale' qui realise une */
/* normalisation de la normale, je suis passe a {FU,FU,FU} le 20060207140530... */
#define PONDERATION1_ROUGE_POUR_LA_NORMALE \
FZERO
#define PONDERATION1_VERTE_POUR_LA_NORMALE \
FZERO
#define PONDERATION1_BLEUE_POUR_LA_NORMALE \
FZERO
DEFV(Local,DEFV(Float,INIT(ponderation1_ROUGE_pour_la_normale,PONDERATION1_ROUGE_POUR_LA_NORMALE)));
DEFV(Local,DEFV(Float,INIT(ponderation1_VERTE_pour_la_normale,PONDERATION1_VERTE_POUR_LA_NORMALE)));
DEFV(Local,DEFV(Float,INIT(ponderation1_BLEUE_pour_la_normale,PONDERATION1_BLEUE_POUR_LA_NORMALE)));
/* Facteurs de type 'p1' participant au coloriage de la normale... */
#define PONDERATION2_ROUGE_POUR_LA_NORMALE \
FZERO
#define PONDERATION2_VERTE_POUR_LA_NORMALE \
FZERO
#define PONDERATION2_BLEUE_POUR_LA_NORMALE \
FZERO
DEFV(Local,DEFV(Float,INIT(ponderation2_ROUGE_pour_la_normale,PONDERATION2_ROUGE_POUR_LA_NORMALE)));
DEFV(Local,DEFV(Float,INIT(ponderation2_VERTE_pour_la_normale,PONDERATION2_VERTE_POUR_LA_NORMALE)));
DEFV(Local,DEFV(Float,INIT(ponderation2_BLEUE_pour_la_normale,PONDERATION2_BLEUE_POUR_LA_NORMALE)));
/* Facteurs de type 'p2' participant au coloriage de la normale... */
/* */
/* L'utilisation conjointe des facteurs {p1,p2} conduit, par exemple, aux coloriages */
/* suivants : */
/* */
/* (p1=0,p2=0) : uniformement avec {dcx,dcy,dcz}, */
/* (p1=1,p2=0) : par interpolation entre {dXdu,dYdu,dZdu} en 'A' et */
/* {dXdv,dYdv,dZdv} en 'B', */
/* (p1=1,p2=1) : uniformement avec les niveaux 'niveau_?????_pour_la_normale'. */
/* */
/* sachant que l'on peut utiliser aussi toutes valeurs intermediaires... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* P E R M U T A T I O N E V E N T U E L L E D E S C O O R D O N N E E S */
/* E T D E S D I F F E R E N T I E L L E S : */
/* */
/*************************************************************************************************************************************/
#define PERMUTER_LES_COORDONNEES_ET_LES_DIFFERENTIELLES \
FAUX
DEFV(Local,DEFV(Logical,INIT(permuter_les_coordonnees_et_les_differentielles,PERMUTER_LES_COORDONNEES_ET_LES_DIFFERENTIELLES)));
/* Permuter ('VRAI') ou pas les coordonnees et les differentielles ('FAUX'). */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* F O N C T I O N D E M E M O R I S A T I O N D U P O I N T C O U R A N T : */
/* */
/*************************************************************************************************************************************/
#include xrk/attractor.16.I"
#define RAYON_DE_VISUALISATION_____COMPATIBILITE_20170303 \
FAUX
DEFV(Local,DEFV(Logical,INIT(rayon_de_visualisation_____compatibilite_20170303,RAYON_DE_VISUALISATION_____COMPATIBILITE_20170303)));
/* Afin d'assurer la compatibilite avec les resultats obtenus anterieurement a la date */
/* du 20170303103205... */
#TestADef RAYON_DE_VISUALISATION \
FRA2(FRA10(FU))
DEFV(Local,DEFV(Float,INIT(rayon_de_visualisation,RAYON_DE_VISUALISATION)));
/* Rayon du disque materialisant une iteration. */
#define GROSSISSEMENT_DU_RAYON_DE_VISUALISATION_AUX_INTERSECTIONS_DES_LIGNES_DE_COORDONNEES \
FU
DEFV(Local,DEFV(Float,INIT(grossissement_du_rayon_de_visualisation_aux_intersections_des_lignes_de_coordonnees
,GROSSISSEMENT_DU_RAYON_DE_VISUALISATION_AUX_INTERSECTIONS_DES_LIGNES_DE_COORDONNEES
)
)
);
/* Facteur de grossissement du rayon de visualisation aux intersections des meridiens */
/* et des paralleles (introduit le 20041229182707)... */
#define RAYON_PERIODISER \
VRAI
DEFV(Local,DEFV(Logical,INIT(rayon_periodiser_X,RAYON_PERIODISER)));
DEFV(Local,DEFV(Logical,INIT(rayon_periodiser_Y,RAYON_PERIODISER)));
#define RAYON_SYMETRISER \
FAUX
DEFV(Local,DEFV(Logical,INIT(rayon_symetriser_X,RAYON_SYMETRISER)));
DEFV(Local,DEFV(Logical,INIT(rayon_symetriser_Y,RAYON_SYMETRISER)));
#define RAYON_PROLONGER \
FAUX
DEFV(Local,DEFV(Logical,INIT(rayon_prolonger_X,RAYON_PROLONGER)));
DEFV(Local,DEFV(Logical,INIT(rayon_prolonger_Y,RAYON_PROLONGER)));
/* Introduit le 20170303105024... */
#define RAYON_NIVEAU_HORS_IMAGE \
RAYON_DE_VISUALISATION
DEFV(Local,DEFV(genere_Float,INIT(rayon_niveau_hors_image,RAYON_NIVEAU_HORS_IMAGE)));
/* Introduit le 20170303105024... */
#define IGNORER_LES_POINTS_TROP_LOINTAINS \
FAUX
DEFV(Local,DEFV(Logical,INIT(ignorer_les_points_trop_lointains,IGNORER_LES_POINTS_TROP_LOINTAINS)));
#define DISTANCE_DES_POINTS_TROP_LOINTAINS \
F_INFINI
DEFV(Local,DEFV(Float,INIT(distance_des_points_trop_lointains,DISTANCE_DES_POINTS_TROP_LOINTAINS)));
/* Introduit le 20120606143945 pour faciliter, par exemple, l'usage de pseudo-projections */
/* incompletes (voir 'v $xiirs/PROJ.s1$COORD_X$COORD_Y$COORD_Z'...). */
#define CHOIX_DU_COLORIAGE(derivee) \
COND(IL_FAUT(colorier_avec_le_numero_des_points),numero_des_points,derivee)
#define INCREMENT_DES_NUMEROS_DE_POINT \
FU
#define COLORIER_AVEC_LE_NUMERO_DES_POINTS \
FAUX
DEFV(Local,DEFV(Logical,INIT(colorier_avec_le_numero_des_points,COLORIER_AVEC_LE_NUMERO_DES_POINTS)));
DEFV(Local,DEFV(Float,INIT(numero_des_points,FU)));
/* Introduit le 20170213101629 afin de colorier les points a l'aide de leur numero. Ceci */
/* est destine a comprendre pourquoi les images 'v $xiirs/BKLN.5C' et 'v $xiirs/BKLN.3C' */
/* contiennent deux helices et non pas une seule. Le 20170213114835, le mystere est perce */
/* et l'explication est donnee dans 'v $xiirs/$Fnota 20170213114227'... */
BFonctionI
DEFV(Local,DEFV(FonctionI,memorisation_1_point_06(AXf,AYf,AZf,AdXf,AdYf,AdZf)))
DEFV(Argument,DEFV(Float,AXf));
DEFV(Argument,DEFV(Float,AYf));
DEFV(Argument,DEFV(Float,AZf));
/* Definition de la position {x,y,z} de l'iteration courante. */
DEFV(Argument,DEFV(Float,AdXf));
DEFV(Argument,DEFV(Float,AdYf));
DEFV(Argument,DEFV(Float,AdZf));
/* Definition des differentielles {dx,dy,dz} de la position de l'iteration courante. */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
Bblock
INIT_ERROR;
/*..............................................................................................................................*/
Test(IFOU(IL_NE_FAUT_PAS(ignorer_les_points_trop_lointains)
,IFET(IL_FAUT(ignorer_les_points_trop_lointains)
,IFLT(RdisF3D(AXf,AYf,AZf,FXorigine,FYorigine,FZorigine),distance_des_points_trop_lointains)
)
)
)
/* Test introduit le 20120606143945... */
/* */
/* On notera que l'on utilise {FXorigine,FYorigine,FZorigine} et non pas, comme */
/* anterieurement au 20120607085133 {Xcentre_ESPACE,Ycentre_ESPACE,Zcentre_ESPACE} a */
/* cause de 'v $xrs/surfaces.12$I CALS.memorisation_1_point_06.SOUS.cx.Xcentre_ESPACE.'. */
Bblock
DEFV(Int,INIT(numero_de_l_iteration_courante,UNDEF));
/* Pour des raisons de compatibilite avec 'ATTENUATION(...)'. */
#include xrk/attractor.15.I"
EGAL(nombre_d_iterations_visualisees,NOMBRE_D_ITERATIONS_VISUALISEES);
EGAL(attenuation_de_la_premiere_iteration,ATTENUATION_DE_LA_PREMIERE_ITERATION);
EGAL(attenuation_de_la_derniere_iteration,ATTENUATION_DE_LA_DERNIERE_ITERATION);
/* Pour des raisons de compatibilite avec 'ATTENUATION(...)'. */
MEMORISATION_DU_POINT_COURANT(CHOIX_DU_COLORIAGE(X_DERIVEE_DANS_01(AdXf))
,CHOIX_DU_COLORIAGE(Y_DERIVEE_DANS_01(AdYf))
,CHOIX_DU_COLORIAGE(Z_DERIVEE_DANS_01(AdZf))
);
/* Memorisation du point courant en Noir et Blanc ou en Couleurs, mais uniquement s'il est */
/* visible en fonction des conditions de visualisation... */
INCR(numero_des_points,INCREMENT_DES_NUMEROS_DE_POINT);
Eblock
ATes
Bblock
Eblock
ETes
RETU_ERROR;
Eblock
#undef CHOIX_DU_COLORIAGE
#undef DISTANCE_DES_POINTS_TROP_LOINTAINS
#undef IGNORER_LES_POINTS_TROP_LOINTAINS
EFonctionI
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* F O N C T I O N S D E V I S U A L I S A T I O N E T D ' I N T E R P O L A T I O N : */
/* */
/*************************************************************************************************************************************/
#include xrk/attractor.17.I"