/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C A L C U L   D E   L A   S U R F A C E   P R O P R E M E N T   D I T  :                                                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xrs/surfaces.12$I' :                                                                                           */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 1993??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E S   I M A G E S   F L O T T A N T E S   U T I L E S  :                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
-define   image_Texture_R                                                                                                               \
-_-_-_-             IFmageA1
-define   image_Texture_V                                                                                                               \
-_-_-_-             IFmageA2
-define   image_Texture_B                                                                                                               \
-_-_-_-             IFmageA3

-define   image_Rayon                                                                                                                   \
-_-_-_-             IFmageA4

-define   image_Coordonnee_U                                                                                                            \
-_-_-_-             IFmageA5
-define   image_Coordonnee_V                                                                                                            \
-_-_-_-             IFmageA6

-define   image_Trous                                                                                                                   \
-_-_-_-             IFmageA7

-define   image_Droite_UV_Calculee__                                                                                                    \
-_-_-_-             IFmageA8
-define   image_Droite_UV_Definition                                                                                                    \
-_-_-_-             IFmageA9
                                        /* L'ensemble de ces definitions fut introduit le 20080705095732...                          */
                                        /*                                                                                           */
                                        /* Le 20170210155045, 'image_Droite_UV' est devenue 'image_Droite_UV_Calculee__' et          */
                                        /* 'image_Droite_UV_Definition' afin de faire la difference avec les eventuels Argument      */
                                        /* et Resultat...                                                                            */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C A L C U L   D E   L A   S U R F A C E   V I A   L E S   C O O R D O N N E E S   C U R V I L I G N E S  :                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xrk/attractor.1A.I"

#include  xrv/champs_5.19.I"
                                        /* Pour eviter le message :                                                                  */
                                        /*                                                                                           */
                                        /*                  Static function is not referenced.                                       */
                                        /*                                                                                           */

#include  xrk/attractor.19.I"
                                        /* Validations et definition de l'espace physique.                                           */

-define   u_NORMALISEE                                                                                                                  \
-_-_-_-             NORM(TRON(u,minimum_de_u,maximum_de_u),minimum_de_u,maximum_de_u)
-define   v_NORMALISEE                                                                                                                  \
-_-_-_-             NORM(TRON(v,minimum_de_v,maximum_de_v),minimum_de_v,maximum_de_v)
                                        /* Introduit le 20041113111751. On notera que l'on ne peut utiliser {u_effectif,v_effectif}  */
                                        /* vu l'usage qui en est fait, en particulier pour acceder aux deux matrices                 */
                                        /* {image_Coordonnee_U,image_Coordonnee_V} qui precisemment definissent                      */
                                        /* {u_effectif,v_effectif} : cela "se mordrait la queue"...                                  */
                                        /*                                                                                           */
                                        /* Le 20091102123057, la fonction 'TRON(...)' a ete introduite car, en effet, rien ne        */
                                        /* garantit avec certitude que les coordonnees {u,v} sont bien comprises entre les deux      */
                                        /* extrema...                                                                                */

-define   imageA_Droite_uv__interpoler                                                                                                  \
-_-_-_-             imageA_Droite_uv__interpoler_bilineairement_ou_bicubiquement
-define   imageA_Droite_uv__use_interpolation_lineaire                                                                                  \
-_-_-_-             imageA_Droite_uv__utiliser_l_interpolation_bilineaire
-define   imageA_Droite_uv__eviter__discontinuites                                                                                      \
-_-_-_-             imageA_Droite_uv__eviter_les_fortes_discontinuites
-define   imageA_Droite_uv__epsilon_discontinuites                                                                                      \
-_-_-_-             imageA_Droite_uv__epsilon_detection_des_fortes_discontinuites

-define   image_Coordonnee_U__interpoler                                                                                                \
-_-_-_-             image_Coordonnee_U__interpoler_bilineairement_ou_bicubiquement
-define   image_Coordonnee_U__use_interpolation_lineaire                                                                                \
-_-_-_-             image_Coordonnee_U__utiliser_l_interpolation_bilineaire
-define   image_Coordonnee_U__eviter__discontinuites                                                                                    \
-_-_-_-             image_Coordonnee_U__eviter_les_fortes_discontinuites
-define   image_Coordonnee_U__epsilon_discontinuites                                                                                    \
-_-_-_-             image_Coordonnee_U__epsilon_detection_des_fortes_discontinuites

-define   image_Coordonnee_V__interpoler                                                                                                \
-_-_-_-             image_Coordonnee_V__interpoler_bilineairement_ou_bicubiquement
-define   image_Coordonnee_V__use_interpolation_lineaire                                                                                \
-_-_-_-             image_Coordonnee_V__utiliser_l_interpolation_bilineaire
-define   image_Coordonnee_V__eviter__discontinuites                                                                                    \
-_-_-_-             image_Coordonnee_V__eviter_les_fortes_discontinuites
-define   image_Coordonnee_V__epsilon_discontinuites                                                                                    \
-_-_-_-             image_Coordonnee_V__epsilon_detection_des_fortes_discontinuites

-define   image_Trous__interpoler                                                                                                       \
-_-_-_-             image_Trous__interpoler_bilineairement_ou_bicubiquement
-define   image_Trous__use_interpolation_lineaire                                                                                       \
-_-_-_-             image_Trous__utiliser_l_interpolation_bilineaire
-define   image_Trous__eviter__discontinuites                                                                                           \
-_-_-_-             image_Trous__eviter_les_fortes_discontinuites
-define   image_Trous__epsilon_discontinuites                                                                                           \
-_-_-_-             image_Trous__epsilon_detection_des_fortes_discontinuites

-define   image_Rayon__interpoler                                                                                                       \
-_-_-_-             image_Rayon__interpoler_bilineairement_ou_bicubiquement
-define   image_Rayon__use_interpolation_lineaire                                                                                       \
-_-_-_-             image_Rayon__utiliser_l_interpolation_bilineaire
-define   image_Rayon__eviter__discontinuites                                                                                           \
-_-_-_-             image_Rayon__eviter_les_fortes_discontinuites
-define   image_Rayon__epsilon_discontinuites                                                                                           \
-_-_-_-             image_Rayon__epsilon_detection_des_fortes_discontinuites

-define   image_Texture_R__interpoler                                                                                                   \
-_-_-_-             image_Texture_R__interpoler_bilineairement_ou_bicubiquement
-define   image_Texture_R__use_interpolation_lineaire                                                                                   \
-_-_-_-             image_Texture_R__utiliser_l_interpolation_bilineaire
-define   image_Texture_R__eviter__discontinuites                                                                                       \
-_-_-_-             image_Texture_R__eviter_les_fortes_discontinuites
-define   image_Texture_R__epsilon_discontinuites                                                                                       \
-_-_-_-             image_Texture_R__epsilon_detection_des_fortes_discontinuites

-define   image_Texture_V__interpoler                                                                                                   \
-_-_-_-             image_Texture_V__interpoler_bilineairement_ou_bicubiquement
-define   image_Texture_V__use_interpolation_lineaire                                                                                   \
-_-_-_-             image_Texture_V__utiliser_l_interpolation_bilineaire
-define   image_Texture_V__eviter__discontinuites                                                                                       \
-_-_-_-             image_Texture_V__eviter_les_fortes_discontinuites
-define   image_Texture_V__epsilon_discontinuites                                                                                       \
-_-_-_-             image_Texture_V__epsilon_detection_des_fortes_discontinuites

-define   image_Texture_B__interpoler                                                                                                   \
-_-_-_-             image_Texture_B__interpoler_bilineairement_ou_bicubiquement
-define   image_Texture_B__use_interpolation_lineaire                                                                                   \
-_-_-_-             image_Texture_B__utiliser_l_interpolation_bilineaire
-define   image_Texture_B__eviter__discontinuites                                                                                       \
-_-_-_-             image_Texture_B__eviter_les_fortes_discontinuites
-define   image_Texture_B__epsilon_discontinuites                                                                                       \
-_-_-_-             image_Texture_B__epsilon_detection_des_fortes_discontinuites
                                        /* Afin de raccourcir des lignes qui suivent...                                              */

-define   GENERATION_DU_TEXTURAGE_DE_LA_SURFACE(texture_x,texture_y,texture_z)                                                          \
-_-_-_-             Bblock                                                                                                              \
-_-_-_-             DEFV(Float,INIT(grossissement_courant_du_rayon_de_visualisation                                                     \
-_-_-_-                            ,COND(IFET(DIVISIBLE(echantillonnage_courant_de_u,echantillonnage_de_u)                              \
-_-_-_-                                      ,DIVISIBLE(echantillonnage_courant_de_v,echantillonnage_de_v)                              \
-_-_-_-                                       )                                                                                         \
-_-_-_-                                 ,grossissement_du_rayon_de_visualisation_aux_intersections_des_lignes_de_coordonnees            \
-_-_-_-                                 ,FU                                                                                             \
-_-_-_-                                  )                                                                                              \
-_-_-_-                             )                                                                                                   \
-_-_-_-                  );                                                                                                             \
-_-_-_-                                 /* Afin de pouvoir marquer l'intersection des meridiens et des paralleles. Ceci a ete        */ \
-_-_-_-                                 /* ete introduit le 20041229183827...                                                        */ \
-_-_-_-                                                                                                                                 \
-_-_-_-             BSaveModifyVariable(Logical                                                                                         \
-_-_-_-                                ,AXES_COORDONNEES_FERMES_OUVERTS_____compatibilite_20090929                                      \
-_-_-_-                                ,COND(IL_FAUT(AXES_COORDONNEES_FERMES_OUVERTS__texturage_surfaces_____compatibilite_20130220)    \
-_-_-_-                                     ,AXES_COORDONNEES_FERMES_OUVERTS_____compatibilite_20090929                                 \
-_-_-_-                                     ,VRAI                                                                                       \
-_-_-_-                                      )                                                                                          \
-_-_-_-                                 );                                                                                              \
-_-_-_-                                 /* Introduit le 20130220131511 et mis avant 'rayon_de_visualisation' le 20160326104228       */ \
-_-_-_-                                 /* (donc avec quelques annees de retard...).                                                 */ \
-_-_-_-                                                                                                                                 \
-_-_-_-             Test(IFEQ_chaine(fichier_des_coordonnees_RAYON,NOM_PIPE_Local))                                                     \
-_-_-_-                                 /* Introduit le 20240517151859...                                                            */ \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  Test(IL_FAUT(rayon_de_visualisation_____compatibilite_20170303))                                               \
-_-_-_-                                 /* Test introduit le 20170303103205...                                                       */ \
-_-_-_-                       Bblock                                                                                                    \
-_-_-_-                       EGAL(rayon_de_visualisation                                                                               \
-_-_-_-                           ,MUL2(grossissement_courant_du_rayon_de_visualisation                                                 \
-_-_-_-                                ,loadF_point_valide(image_Rayon                                                                  \
-_-_-_-                                                   ,_cDENORMALISE_OX(u_NORMALISEE)                                               \
-_-_-_-                                                   ,_cDENORMALISE_OY(v_NORMALISEE)                                               \
-_-_-_-                                                    )                                                                            \
-_-_-_-                                 )                                                                                               \
-_-_-_-                            );                                                                                                   \
-_-_-_-                                 /* Le champ rayon a ete introduit le 20041229174601. On notera que 'loadF_point(...)'        */ \
-_-_-_-                                 /* est utilise et non pas 'sgFFload_point_coordonnees_01(...)' comme on pourrait l'imaginer. */ \
-_-_-_-                                 /* En effet, 'loadF_point(...)' garantit la valeur recuperee dans 'IFmageA4', alors que      */ \
-_-_-_-                                 /* 'sgFFload_point_coordonnees_01(...)' ferait une interpolation ; or dans le cas ou l'image */ \
-_-_-_-                                 /* 'IFmageA4' est initialisee ci-apres via 'ACCES_AUX_IMAGES_FLOTTANTES(...)' avec la valeur */ \
-_-_-_-                                 /* 'rayon_de_visualisation', il est essentiel de retrouver 'rayon_de_visualisation' quelle   */ \
-_-_-_-                                 /* que soient les valeurs de {u,v}...                                                        */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* Le 20160326104228, le 'loadF_point(...)' a ete remplace, avec quelques annees de          */ \
-_-_-_-                                 /* retard par un 'loadF_point_valide(...)'...                                                */ \
-_-_-_-                       Eblock                                                                                                    \
-_-_-_-                  ATes                                                                                                           \
-_-_-_-                       Bblock                                                                                                    \
-_-_-_-                       EGAL(rayon_de_visualisation                                                                               \
-_-_-_-                           ,MUL2(grossissement_courant_du_rayon_de_visualisation                                                 \
-_-_-_-                                ,sgFFload_point_coordonnees_01(image_Rayon                                                       \
-_-_-_-                                                              ,u_NORMALISEE                                                      \
-_-_-_-                                                              ,v_NORMALISEE                                                      \
-_-_-_-                                                              ,rayon_periodiser_X,rayon_periodiser_Y                             \
-_-_-_-                                                              ,rayon_symetriser_X,rayon_symetriser_Y                             \
-_-_-_-                                                              ,rayon_prolonger_X,rayon_prolonger_Y                               \
-_-_-_-                                                              ,rayon_niveau_hors_image                                           \
-_-_-_-                                                              ,image_Rayon__interpoler                                           \
-_-_-_-                                                              ,image_Rayon__use_interpolation_lineaire                           \
-_-_-_-                                                              ,image_Rayon__eviter__discontinuites                               \
-_-_-_-                                                              ,image_Rayon__epsilon_discontinuites                               \
-_-_-_-                                                               )                                                                 \
-_-_-_-                                 )                                                                                               \
-_-_-_-                            );                                                                                                   \
-_-_-_-                       Eblock                                                                                                    \
-_-_-_-                  ETes                                                                                                           \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ATes                                                                                                                \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ETes                                                                                                                \
-_-_-_-                                                                                                                                 \
-_-_-_-             Test(IL_FAUT(texture_____compatibilite_20170303))                                                                   \
-_-_-_-                                 /* Test introduit le 20170303103205...                                                       */ \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  EGAL(texture_x                                                                                                 \
-_-_-_-                      ,loadF_point_valide(image_Texture_R                                                                        \
-_-_-_-                                         ,_cDENORMALISE_OX(u_NORMALISEE)                                                         \
-_-_-_-                                         ,_cDENORMALISE_OY(v_NORMALISEE)                                                         \
-_-_-_-                                          )                                                                                      \
-_-_-_-                       );                                                                                                        \
-_-_-_-                  EGAL(texture_y                                                                                                 \
-_-_-_-                      ,loadF_point_valide(image_Texture_V                                                                        \
-_-_-_-                                         ,_cDENORMALISE_OX(u_NORMALISEE)                                                         \
-_-_-_-                                         ,_cDENORMALISE_OY(v_NORMALISEE)                                                         \
-_-_-_-                                          )                                                                                      \
-_-_-_-                       );                                                                                                        \
-_-_-_-                  EGAL(texture_z                                                                                                 \
-_-_-_-                      ,loadF_point_valide(image_Texture_B                                                                        \
-_-_-_-                                         ,_cDENORMALISE_OX(u_NORMALISEE)                                                         \
-_-_-_-                                         ,_cDENORMALISE_OY(v_NORMALISEE)                                                         \
-_-_-_-                                          )                                                                                      \
-_-_-_-                       );                                                                                                        \
-_-_-_-                                 /* Le 20130221074236, les 'loadF_point(...)'s ont ete remplaces, pour des raisons de         */ \
-_-_-_-                                 /* securite, par des 'loadF_point_valide(...)'s. Ce probleme s'est vu lors de la mmise au    */ \
-_-_-_-                                 /* point de la texture de 'v $xiirs/INFL.11' et c'est d'ailleurs a cette occasion que        */ \
-_-_-_-                                 /* 'AXES_COORDONNEES_FERMES_OUVERTS__texturage_surfaces_____compatibilite_20130220' fut      */ \
-_-_-_-                                 /* introduit...                                                                              */ \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ATes                                                                                                                \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  EGAL(texture_x                                                                                                 \
-_-_-_-                      ,sgFFload_point_coordonnees_01(image_Texture_R                                                             \
-_-_-_-                                                    ,u_NORMALISEE                                                                \
-_-_-_-                                                    ,v_NORMALISEE                                                                \
-_-_-_-                                                    ,textures_periodiser_X,textures_periodiser_Y                                 \
-_-_-_-                                                    ,textures_symetriser_X,textures_symetriser_Y                                 \
-_-_-_-                                                    ,textures_prolonger_X,textures_prolonger_Y                                   \
-_-_-_-                                                    ,textures_niveau_hors_image                                                  \
-_-_-_-                                                    ,image_Texture_R__interpoler                                                 \
-_-_-_-                                                    ,image_Texture_R__use_interpolation_lineaire                                 \
-_-_-_-                                                    ,image_Texture_R__eviter__discontinuites                                     \
-_-_-_-                                                    ,image_Texture_R__epsilon_discontinuites                                     \
-_-_-_-                                                     )                                                                           \
-_-_-_-                       );                                                                                                        \
-_-_-_-                  EGAL(texture_y                                                                                                 \
-_-_-_-                      ,sgFFload_point_coordonnees_01(image_Texture_V                                                             \
-_-_-_-                                                    ,u_NORMALISEE                                                                \
-_-_-_-                                                    ,v_NORMALISEE                                                                \
-_-_-_-                                                    ,textures_periodiser_X,textures_periodiser_Y                                 \
-_-_-_-                                                    ,textures_symetriser_X,textures_symetriser_Y                                 \
-_-_-_-                                                    ,textures_prolonger_X,textures_prolonger_Y                                   \
-_-_-_-                                                    ,textures_niveau_hors_image                                                  \
-_-_-_-                                                    ,image_Texture_V__interpoler                                                 \
-_-_-_-                                                    ,image_Texture_V__use_interpolation_lineaire                                 \
-_-_-_-                                                    ,image_Texture_V__eviter__discontinuites                                     \
-_-_-_-                                                    ,image_Texture_V__epsilon_discontinuites                                     \
-_-_-_-                                                     )                                                                           \
-_-_-_-                       );                                                                                                        \
-_-_-_-                  EGAL(texture_z                                                                                                 \
-_-_-_-                      ,sgFFload_point_coordonnees_01(image_Texture_B                                                             \
-_-_-_-                                                    ,u_NORMALISEE                                                                \
-_-_-_-                                                    ,v_NORMALISEE                                                                \
-_-_-_-                                                    ,textures_periodiser_X,textures_periodiser_Y                                 \
-_-_-_-                                                    ,textures_symetriser_X,textures_symetriser_Y                                 \
-_-_-_-                                                    ,textures_prolonger_X,textures_prolonger_Y                                   \
-_-_-_-                                                    ,textures_niveau_hors_image                                                  \
-_-_-_-                                                    ,image_Texture_B__interpoler                                                 \
-_-_-_-                                                    ,image_Texture_B__use_interpolation_lineaire                                 \
-_-_-_-                                                    ,image_Texture_B__eviter__discontinuites                                     \
-_-_-_-                                                    ,image_Texture_B__epsilon_discontinuites                                     \
-_-_-_-                                                     )                                                                           \
-_-_-_-                       );                                                                                                        \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ETes                                                                                                                \
-_-_-_-                                                                                                                                 \
-_-_-_-             ESaveModifyVariable(Logical                                                                                         \
-_-_-_-                                ,AXES_COORDONNEES_FERMES_OUVERTS_____compatibilite_20090929                                      \
-_-_-_-                                 );                                                                                              \
-_-_-_-                                 /* Introduit le 20130220131511...                                                            */ \
-_-_-_-             Eblock
                                        /* Calcul du texturage de la surface au point courant {u,v} associe au point {X,Y} de        */
                                        /* texture :                                                                                 */
                                        /*                                                                                           */
                                        /*                  {u,v} <--O--> {X,Y}                                                      */
                                        /*                                                                                           */
                                        /* et du rayon de visualisation effectif...                                                  */

-define   PERMUTATION_EVENTUELLE_DES_COORDONNEES_ET_DES_DIFFERENTIELLES                                                                 \
-_-_-_-             Bblock                                                                                                              \
-_-_-_-             Test(IL_FAUT(permuter_les_coordonnees_et_les_differentielles))                                                      \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  fSWAP(cx,dcx);                                                                                                 \
-_-_-_-                  fSWAP(cy,dcy);                                                                                                 \
-_-_-_-                  fSWAP(cz,dcz);                                                                                                 \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ATes                                                                                                                \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ETes                                                                                                                \
-_-_-_-             Eblock
                                        /* Permutation eventuelle des coordonnees et des differentielles. Ce dispositif a ete        */
                                        /* introduit le 20050615083227 "pour voir ce que cela donne"...                              */

-define   MINIMUM_DE_u_LORS_D_UNE_PROJECTION                                                                                            \
-_-_-_-             COND(IL_FAUT(forcer_les_extrema_de_u_v_lors_de_la_projection_de_la_surface)                                         \
-_-_-_-                 ,minimum_de_u                                                                                                   \
-_-_-_-                 ,sauvegarde_de_minimum_de_u                                                                                     \
-_-_-_-                  )
-define   MAXIMUM_DE_u_LORS_D_UNE_PROJECTION                                                                                            \
-_-_-_-             ADD2(COND(IL_FAUT(forcer_les_extrema_de_u_v_lors_de_la_projection_de_la_surface)                                    \
-_-_-_-                      ,maximum_de_u                                                                                              \
-_-_-_-                      ,sauvegarde_de_maximum_de_u                                                                                \
-_-_-_-                       )                                                                                                         \
-_-_-_-                 ,MOIT(pas_de_u)                                                                                                 \
-_-_-_-                  )
-define   MINIMUM_DE_v_LORS_D_UNE_PROJECTION                                                                                            \
-_-_-_-             COND(IL_FAUT(forcer_les_extrema_de_u_v_lors_de_la_projection_de_la_surface)                                         \
-_-_-_-                 ,minimum_de_v                                                                                                   \
-_-_-_-                 ,sauvegarde_de_minimum_de_v                                                                                     \
-_-_-_-                  )
-define   MAXIMUM_DE_v_LORS_D_UNE_PROJECTION                                                                                            \
-_-_-_-             ADD2(COND(IL_FAUT(forcer_les_extrema_de_u_v_lors_de_la_projection_de_la_surface)                                    \
-_-_-_-                      ,maximum_de_v                                                                                              \
-_-_-_-                      ,sauvegarde_de_maximum_de_v                                                                                \
-_-_-_-                       )                                                                                                         \
-_-_-_-                 ,MOIT(pas_de_v)                                                                                                 \
-_-_-_-                  )
                                        /* Introduit le 20050908134309...                                                            */

#ifdef    SI_L_ARITHMETIQUE_ETENDUE_DES_NOMBRES_FLOTTANTS_EST_ACTIVABLE_ALORS_L_UTILISER_AUSSI_POUR_LES_DERIVEES
                                        /* Le dispositif suivant fut introduit le 20080127084712 car, en effet, sauf pour            */
                                        /* quelques programmes (tel 'v $xrs/sphere.11$K'), le code genere pour le calcul             */
                                        /* etendu des derivees est monstrueux. C'est pourquoi celui-ci est inhibe a priori           */
                                        /* et n'est autorise a cette date que pour 'v $xrs/sphere.11$K'...                           */
#    define    EXTENSION_DU_CALCUL_DES_DERIVEES(indicateur,expression)                                                                  \
                         USe_GooF______CONDITIONNEL(indicateur,expression)
#Aifdef   SI_L_ARITHMETIQUE_ETENDUE_DES_NOMBRES_FLOTTANTS_EST_ACTIVABLE_ALORS_L_UTILISER_AUSSI_POUR_LES_DERIVEES
#    define    EXTENSION_DU_CALCUL_DES_DERIVEES(indicateur,expression)                                                                  \
                         NEUT(expression)
#Eifdef   SI_L_ARITHMETIQUE_ETENDUE_DES_NOMBRES_FLOTTANTS_EST_ACTIVABLE_ALORS_L_UTILISER_AUSSI_POUR_LES_DERIVEES

-define   Fxyz(fonction)                                                                                                                \
-_-_-_-             USe_GooF______CONDITIONNEL(Fx_Fy_Fz_____utiliser_l_arithmetique_etendue_au_lieu_de_l_arithmetique_de_base           \
-_-_-_-                                       ,fonction                                                                                 \
-_-_-_-                                        )
-define   dFxyz(derivee)                                                                                                                \
-_-_-_-             EXTENSION_DU_CALCUL_DES_DERIVEES(dFx_dFy_dFz_____utiliser_l_arithmetique_etendue_au_lieu_de_l_arithmetique_de_base  \
-_-_-_-                                             ,derivee                                                                            \
-_-_-_-                                              )
                                        /* Procedures introduites le 20080126082946...                                               */

#ifdef    PERMUTER_L_ORDRE_DE_PARCOURS_DES_COORDONNEES_u_v
                                        /* Possibilite introduite a cause de 'v $xrs/referentiel3D.11$I 20170307094803' le           */
                                        /* 20170307103744...                                                                         */
#    define    DEFINITION_DE__XY__de_projection                                                                                         \
                         DEFV(Int,INIT(Y_de_projection,Ymin));

#    define    DEFINITION_DE__echantillonnage_courant_de_uv                                                                             \
                         DEFV(Int,INIT(echantillonnage_courant_de_v,translation_de_l_echantillonnage_de_v));

#    define    DEFINITION_DE__XY__de_projection__ET_DEFINITION_DE__echantillonnage_courant_de_uv                                        \
                                        /* Introduit le 20221221141412...                                                            */ \
                         DEFV(Int,INIT(X_de_projection,Xmin));                                                                          \
                         DEFV(Int,INIT(echantillonnage_courant_de_u,translation_de_l_echantillonnage_de_u));

#    define    DEFINITION_DE__FDoIn_uv                                                                                                  \
                         FDoIn(v,minimum_de_v_effectif,maximum_de_v_effectif,pas_de_v_effectif)                                         \
                              Bblock                                                                                                    \
                              DEFINITION_DE__XY__de_projection__ET_DEFINITION_DE__echantillonnage_courant_de_uv;                        \
                                                                                                                                        \
                              FDoIn(u,minimum_de_u_effectif,maximum_de_u_effectif,pas_de_u_effectif)                                    \
                                   Bblock

#    define    DEFINITION_DE__EFDoIn_uv                                                                                                 \
                                   INCR(echantillonnage_courant_de_u,I);                                                                \
                                   INCR(X_de_projection,PasX);                                                                          \
                                   Eblock                                                                                               \
                              EFDoI                                                                                                     \
                                                                                                                                        \
                              INCR(echantillonnage_courant_de_v,I);                                                                     \
                              INCR(Y_de_projection,PasY);                                                                               \
                              Eblock                                                                                                    \
                         EFDoI
#Aifdef   PERMUTER_L_ORDRE_DE_PARCOURS_DES_COORDONNEES_u_v
#    define    DEFINITION_DE__XY__de_projection                                                                                         \
                         DEFV(Int,INIT(X_de_projection,Xmin));                                                                          \
                                        /* Pour indexer les trois matrices de projection...                                          */

#    define    DEFINITION_DE__echantillonnage_courant_de_uv                                                                             \
                         DEFV(Int,INIT(echantillonnage_courant_de_u,translation_de_l_echantillonnage_de_u));                            \
                                        /* Afin de gerer l'echantillonnage de 'u' (introduit le 20021008095350 ; voir a ce           */ \
                                        /* propos 'v $xrs/surfaces.14$I 20021008094407').                                            */ \
                                        /*                                                                                           */ \
                                        /* La translation a ete introduite le 20040330113728 afin de permettre, par sa variation     */ \
                                        /* (0, 1, 2,...), de faire glisser la grille d'echantillonnage sur la surface...             */

#    define    DEFINITION_DE__XY__de_projection__ET_DEFINITION_DE__echantillonnage_courant_de_uv                                        \
                                        /* Introduit le 20221221141412...                                                            */ \
                         DEFV(Int,INIT(Y_de_projection,Ymin));                                                                          \
                                        /* Pour indexer les trois matrices de projection...                                          */ \
                         DEFV(Int,INIT(echantillonnage_courant_de_v,translation_de_l_echantillonnage_de_v));                            \
                                        /* Afin de gerer l'echantillonnage de 'v' (introduit le 20021008095350 ; voir a ce           */ \
                                        /* propos 'v $xrs/surfaces.14$I 20021008094407').                                            */ \
                                        /*                                                                                           */ \
                                        /* La translation a ete introduite le 20040330113728 afin de permettre, par sa variation     */ \
                                        /* (0, 1, 2,...), de faire glisser la grille d'echantillonnage sur la surface...             */

#    define    DEFINITION_DE__FDoIn_uv                                                                                                  \
                         FDoIn(u,minimum_de_u_effectif,maximum_de_u_effectif,pas_de_u_effectif)                                         \
                                        /* Passage de 'DoIn(...)' a 'FDoIn(...)' le 20060602134331...                                */ \
                              Bblock                                                                                                    \
                              DEFINITION_DE__XY__de_projection__ET_DEFINITION_DE__echantillonnage_courant_de_uv;                        \
                                                                                                                                        \
                              FDoIn(v,minimum_de_v_effectif,maximum_de_v_effectif,pas_de_v_effectif)                                    \
                                        /* Passage de 'DoIn(...)' a 'FDoIn(...)' le 20060602134331...                                */ \
                                        /*                                                                                           */ \
                                        /* ATTENTION : le 20050822162446 j'ai note grace a 'v $xiirs/MOB2.11' que si les parametres  */ \
                                        /* du 'DoIn(...)' precedent (de meme evidemment que celui qui le precede...) utilisait des   */ \
                                        /* valeurs du type :                                                                         */ \
                                        /*                                                                                           */ \
                                        /*                  mv=0                                                                     */ \
                                        /*                  Mv=1                                                                     */ \
                                        /*                  pv=0.01                                                                  */ \
                                        /*                                                                                           */ \
                                        /* ou 'pv' est l'inverse d'une puissance de 10, alors la borne superieure du 'DoIn(...)'     */ \
                                        /* n'est jamais atteinte. Il est donc suggere d'utiliser dans ce cas des inverses de         */ \
                                        /* puissance de 2. Grace a 'v $Dbugs/APC$D/LinuxDebian$D/GCC$D/boucle10.01$c', ce            */ \
                                        /* phenomene peut etre etudie...                                                             */ \
                                   Bblock

#    define    DEFINITION_DE__EFDoIn_uv                                                                                                 \
                                   INCR(echantillonnage_courant_de_v,I);                                                                \
                                        /* Gestion de l'echantillonnage de 'v'.                                                      */ \
                                   INCR(Y_de_projection,PasY);                                                                          \
                                        /* Gestion de l'indexation des matrices de projection...                                     */ \
                                   Eblock                                                                                               \
                              EFDoI                                                                                                     \
                                                                                                                                        \
                              INCR(echantillonnage_courant_de_u,I);                                                                     \
                                        /* Gestion de l'echantillonnage de 'u'.                                                      */ \
                              INCR(X_de_projection,PasX);                                                                               \
                                        /* Gestion de l'indexation des matrices de projection...                                     */ \
                              Eblock                                                                                                    \
                         EFDoI
#Eifdef   PERMUTER_L_ORDRE_DE_PARCOURS_DES_COORDONNEES_u_v

-define   GENERATION_DU_POINT_uv_COURANT(Fx,Fy,Fz,calcul_eventuel_point_courant,sequence_de_generation)                                 \
-_-_-_-                                 /* Procedure introduite le 20221221111016...                                                 */ \
-_-_-_-             Bblock                                                                                                              \
-_-_-_-             begin_nouveau_block                                                                                                 \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  begin_nouveau_block                                                                                            \
-_-_-_-                       Bblock                                                                                                    \
-_-_-_-                                 /* Je note le 20221222080846 que cette suite de 'Bblock's est destinee a ne pas changer      */ \
-_-_-_-                                 /* la tabulation de ce qui suit...                                                           */ \
-_-_-_-                       DEFV(Float,INIT(u_effectif                                                                                \
-_-_-_-                                      ,COND(IL_NE_FAUT_PAS(transformer_u_v)                                                      \
-_-_-_-                                           ,u                                                                                    \
-_-_-_-                                           ,sgFFload_point_coordonnees_01(image_Coordonnee_U                                     \
-_-_-_-                                                                         ,u_NORMALISEE                                           \
-_-_-_-                                                                         ,v_NORMALISEE                                           \
-_-_-_-                                                                         ,transformer_u_v_periodiser_u                           \
-_-_-_-                                                                         ,transformer_u_v_periodiser_v                           \
-_-_-_-                                                                         ,transformer_u_v_symetriser_u                           \
-_-_-_-                                                                         ,transformer_u_v_symetriser_v                           \
-_-_-_-                                                                         ,transformer_u_v_prolonger_u                            \
-_-_-_-                                                                         ,transformer_u_v_prolonger_v                            \
-_-_-_-                                                                         ,transformer_u_v_niveau_hors_image                      \
-_-_-_-                                                                         ,image_Coordonnee_U__interpoler                         \
-_-_-_-                                                                         ,image_Coordonnee_U__use_interpolation_lineaire         \
-_-_-_-                                                                         ,image_Coordonnee_U__eviter__discontinuites             \
-_-_-_-                                                                         ,image_Coordonnee_U__epsilon_discontinuites             \
-_-_-_-                                                                          )                                                      \
-_-_-_-                                            )                                                                                    \
-_-_-_-                                       )                                                                                         \
-_-_-_-                            );                                                                                                   \
-_-_-_-                                 /* La matrice (ou "image") definissant la transformation de la coordonnee 'u', pour etre     */ \
-_-_-_-                                 /* neutre doit avoir une structure similaire a 'v $xiio/MIRE', soit :                        */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  | | | | | | | | | |                                                      */ \
-_-_-_-                                 /*                  | | | | | | | | | |                                                      */ \
-_-_-_-                                 /*                  | | | | | | | | | |                                                      */ \
-_-_-_-                                 /*                  | | | | | | | | | |                                                      */ \
-_-_-_-                                 /*                  | | | | | | | | | |                                                      */ \
-_-_-_-                                 /*                  | | | | | | | | | |                                                      */ \
-_-_-_-                                 /*                  | | | | | | | | | |                                                      */ \
-_-_-_-                                 /*                  | | | | | | | | | |                                                      */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* Je note le 20060531104200 (avec un peu de retard que les {u,v} effectifs ne peuvent       */ \
-_-_-_-                                 /* etre evalues que lorsque les {u,v} "de base" sont connus, c'est-a-dire a l'interieur de   */ \
-_-_-_-                                 /* toutes les boucles 'DoIn(...)' imbriquees, d'ou de plus l'introduction des 'FDoIn(...)'   */ \
-_-_-_-                                 /* le 20060602134331 par precaution...                                                       */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* Le 20060601121716 je note qu'il faut etre tres prudent quant aux eventuelles              */ \
-_-_-_-                                 /* discontinuites dans l'image ('v $xiipf/fonction.2$FON 20060601101800')...                 */ \
-_-_-_-                       DEFV(Float,INIT(u_effectif_translate,FLOT__UNDEF));                                                       \
-_-_-_-                                 /* Introduit le 20091102170618...                                                            */ \
-_-_-_-                       DEFV(Float,INIT(d_u_effectif,d_u));                                                                       \
-_-_-_-                                 /* Definition de la differentielle de la coordonnee 'u' effective (introduite le             */ \
-_-_-_-                                 /* 20060117130150).                                                                          */ \
-_-_-_-                       DEFV(Float,INIT(v_effectif                                                                                \
-_-_-_-                                      ,COND(IL_NE_FAUT_PAS(transformer_u_v)                                                      \
-_-_-_-                                           ,v                                                                                    \
-_-_-_-                                           ,sgFFload_point_coordonnees_01(image_Coordonnee_V                                     \
-_-_-_-                                                                         ,u_NORMALISEE                                           \
-_-_-_-                                                                         ,v_NORMALISEE                                           \
-_-_-_-                                                                         ,transformer_u_v_periodiser_u                           \
-_-_-_-                                                                         ,transformer_u_v_periodiser_v                           \
-_-_-_-                                                                         ,transformer_u_v_symetriser_u                           \
-_-_-_-                                                                         ,transformer_u_v_symetriser_v                           \
-_-_-_-                                                                         ,transformer_u_v_prolonger_u                            \
-_-_-_-                                                                         ,transformer_u_v_prolonger_v                            \
-_-_-_-                                                                         ,transformer_u_v_niveau_hors_image                      \
-_-_-_-                                                                         ,image_Coordonnee_V__interpoler                         \
-_-_-_-                                                                         ,image_Coordonnee_V__use_interpolation_lineaire         \
-_-_-_-                                                                         ,image_Coordonnee_V__eviter__discontinuites             \
-_-_-_-                                                                         ,image_Coordonnee_V__epsilon_discontinuites             \
-_-_-_-                                                                          )                                                      \
-_-_-_-                                            )                                                                                    \
-_-_-_-                                       )                                                                                         \
-_-_-_-                            );                                                                                                   \
-_-_-_-                                 /* La matrice (ou "image") definissant la transformation de la coordonnee 'v', pour etre     */ \
-_-_-_-                                 /* neutre doit avoir une structure similaire a 'v $xiio/MIRE' transposee, soit :             */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  ___________________                                                      */ \
-_-_-_-                                 /*                  ___________________                                                      */ \
-_-_-_-                                 /*                  ___________________                                                      */ \
-_-_-_-                                 /*                  ___________________                                                      */ \
-_-_-_-                                 /*                  ___________________                                                      */ \
-_-_-_-                                 /*                  ___________________                                                      */ \
-_-_-_-                                 /*                  ___________________                                                      */ \
-_-_-_-                                 /*                  ___________________                                                      */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* Le 20060601121716 je note qu'il faut etre tres prudent quant aux eventuelles              */ \
-_-_-_-                                 /* discontinuites dans l'image ('v $xiipf/fonction.2$FON 20060601101800')...                 */ \
-_-_-_-                       DEFV(Float,INIT(v_effectif_translate,FLOT__UNDEF));                                                       \
-_-_-_-                                 /* Introduit le 20091102170618...                                                            */ \
-_-_-_-                       DEFV(Float,INIT(d_v_effectif,d_v));                                                                       \
-_-_-_-                                 /* Definition de la differentielle de la coordonnee 'v' effective (introduite le             */ \
-_-_-_-                                 /* 20060117130150).                                                                          */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                       EGAL(u_effectif                                                                                           \
-_-_-_-                           ,COND(IL_NE_FAUT_PAS(gestion_torique_de_u)                                                            \
-_-_-_-                                ,NEUT(u_effectif)                                                                                \
-_-_-_-                                ,MODF(u_effectif,minimum_de_u_effectif,maximum_de_u_effectif)                                    \
-_-_-_-                                 )                                                                                               \
-_-_-_-                            );                                                                                                   \
-_-_-_-                       EGAL(v_effectif                                                                                           \
-_-_-_-                           ,COND(IL_NE_FAUT_PAS(gestion_torique_de_v)                                                            \
-_-_-_-                                ,NEUT(v_effectif)                                                                                \
-_-_-_-                                ,MODF(v_effectif,minimum_de_v_effectif,maximum_de_v_effectif)                                    \
-_-_-_-                                 )                                                                                               \
-_-_-_-                            );                                                                                                   \
-_-_-_-                                 /* La gestion "torique" des coordonnees {u,v} a ete introduite le 20060601133040...          */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                       Test(IFET(IFET(IFINff(u_effectif,minimum_de_u_effectif,maximum_de_u_effectif)                             \
-_-_-_-                                     ,IFINff(v_effectif,minimum_de_v_effectif,maximum_de_v_effectif)                             \
-_-_-_-                                      )                                                                                          \
-_-_-_-                                 /* Ce test d'inclusion a ete introduit le 20060529155547 car il manquait...                  */ \
-_-_-_-                                ,IFOU(IL_NE_FAUT_PAS(trouer_u_v)                                                                 \
-_-_-_-                                     ,IFET(IL_FAUT(trouer_u_v)                                                                   \
-_-_-_-                                          ,EST_VRAI(fLOGI(sgFFload_point_coordonnees_01(image_Trous                              \
-_-_-_-                                                                                       ,u_NORMALISEE                             \
-_-_-_-                                                                                       ,v_NORMALISEE                             \
-_-_-_-                                                                                       ,trouer_u_v_periodiser_u                  \
-_-_-_-                                                                                       ,trouer_u_v_periodiser_v                  \
-_-_-_-                                                                                       ,trouer_u_v_symetriser_u                  \
-_-_-_-                                                                                       ,trouer_u_v_symetriser_v                  \
-_-_-_-                                                                                       ,trouer_u_v_prolonger_u                   \
-_-_-_-                                                                                       ,trouer_u_v_prolonger_v                   \
-_-_-_-                                                                                       ,LA_SURFACE_EST_INTEGRE                   \
-_-_-_-                                                                                       ,image_Trous__interpoler                  \
-_-_-_-                                                                                       ,image_Trous__use_interpolation_lineaire  \
-_-_-_-                                                                                       ,image_Trous__eviter__discontinuites      \
-_-_-_-                                                                                       ,image_Trous__epsilon_discontinuites      \
-_-_-_-                                                                                        )                                        \
-_-_-_-                                                          )                                                                      \
-_-_-_-                                 /* Le 20060602091942 fut introduit le 'fLOGI(...)' pour eviter des trous parasites lies      */ \
-_-_-_-                                 /* a des "rebonds" d'interpolation qui font que ce qui devrait valoir exactement 1 ('VRAI')  */ \
-_-_-_-                                 /* peut valoir un tout petit peu moins, d'ou 0 ('FAUX') avec un 'LOGI(...)'...               */ \
-_-_-_-                                                    )                                                                            \
-_-_-_-                                           )                                                                                     \
-_-_-_-                                      )                                                                                          \
-_-_-_-                                 )                                                                                               \
-_-_-_-                            )                                                                                                    \
-_-_-_-                            Bblock                                                                                               \
-_-_-_-                                 /* Ce test a ete introduit le 20060529131510. Via 'IL_FAUT(transformer_u_v)', il permet      */ \
-_-_-_-                                 /* de ne visualiser que certains "morceaux" de la surface. Jusqu'au 20060529152510, cela     */ \
-_-_-_-                                 /* s'est fait en utilisant {image_Coordonnee_U,image_Coordonnee_V} de la facon suivante :    */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  u_effectif = u                                                           */ \
-_-_-_-                                 /*                  v_effectif = v                                                           */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* soit :                                                                                    */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  image_Coordonnee_U(u,v) = u             (parametre "imageU=")            */ \
-_-_-_-                                 /*                  image_Coordonnee_V(u,v) = v             (parametre "imageV=")            */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* partout ou l'on souhaite visualiser la surface et par exemple :                           */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  u_effectif = INFINI                                                      */ \
-_-_-_-                                 /*                  v_effectif = INFINI                                                      */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* soit :                                                                                    */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  image_Coordonnee_U(u,v) = INFINI        (parametre "imageU=")            */ \
-_-_-_-                                 /*                  image_Coordonnee_V(u,v) = INFINI        (parametre "imageV=")            */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* la ou l'on souhaite ne pas la representer ('v $xci/lineaire$K 20060529134923'). On notera */ \
-_-_-_-                                 /* qu'il est essentiel de prendre reellement une valeur tres grande (qui est notee 'INFINI'  */ \
-_-_-_-                                 /* ci-dessus) a cause de la fonction 'sgFFload_point_coordonnees_01(...)' utilisee pour      */ \
-_-_-_-                                 /* determiner les {u,v} effectifs. En effet, celle-ci fait de l'interpolation et il est      */ \
-_-_-_-                                 /* donc essentiel de pouvoir distinguer les "bons" {u,v} a visualiser des autres a ne pas    */ \
-_-_-_-                                 /* visualiser, et ce apres le processus d'interpolation...                                   */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* Soit par exemple le cas suivant :                                                         */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                                                <A VISUALISER>      <A NE PAS VISUALISER>  */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  u                       :     (...)     1.0 <---> 1.1       (...)        */ \
-_-_-_-                                 /*                                                                |                          */ \
-_-_-_-                                 /*                  image_Coordonnee_U(u,v) :     (...)     1.0   |   1e100     (...)        */ \
-_-_-_-                                 /*                                                                |                          */ \
-_-_-_-                                 /*                                                                |                          */ \
-_-_-_-                                 /*                                                                |                          */ \
-_-_-_-                                 /*                                                                |                          */ \
-_-_-_-                                 /*                                     'u' flottant d'acces a 'image_Coordonnee_U'           */ \
-_-_-_-                                 /*                                     via  'sgFFload_point_coordonnees_01(...)'             */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* avec :                                                                                    */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  u E [0,pi]          (cas de 'v $xrs/sphere.11$K' par exemple)            */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* La difference entre '1.0' et '1e100' est telle que la probabilite que la valeur           */ \
-_-_-_-                                 /* resultant de leur interpolation (a partir du 'u' flottant d'acces a 'image_Coordonnee_U') */ \
-_-_-_-                                 /* soit hors de [0,pi] est pratiquement egale a 1.                                           */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* On verra a ce propos l'image 'v $xiirs/SPHE.52'...                                        */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* Malgre tout, cet alea a conduit le 20060529152510 a introduire 'IFmageA7' dont le role    */ \
-_-_-_-                                 /* est specifiquement celui de gerer le trouage...                                           */ \
-_-_-_-                            DEFV(Float,INIT(equation_d_une_droite_du_plan_uv,FLOT__UNDEF));                                      \
-_-_-_-                                 /* Definition, meme si elle ne sert pas par la suite) de l'equation d'une droite dans le     */ \
-_-_-_-                                 /* plan {u,v}...                                                                             */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                            Test(IL_FAUT(tracer_une_droite_du_plan_uv))                                                          \
-_-_-_-                                 /* Test introduit le 20060817180753...                                                       */ \
-_-_-_-                                 Bblock                                                                                          \
-_-_-_-                                 DEFV(Float,INIT(u_effectif_modulo                                                               \
-_-_-_-                                                ,MODF(u_effectif                                                                 \
-_-_-_-                                                     ,minimum_de_u_du_domaine_d_une_droite_du_plan_uv                            \
-_-_-_-                                                     ,maximum_de_u_du_domaine_d_une_droite_du_plan_uv                            \
-_-_-_-                                                      )                                                                          \
-_-_-_-                                                 )                                                                               \
-_-_-_-                                      );                                                                                         \
-_-_-_-                                 DEFV(Float,INIT(v_effectif_modulo                                                               \
-_-_-_-                                                ,MODF(v_effectif                                                                 \
-_-_-_-                                                     ,minimum_de_v_du_domaine_d_une_droite_du_plan_uv                            \
-_-_-_-                                                     ,maximum_de_v_du_domaine_d_une_droite_du_plan_uv                            \
-_-_-_-                                                      )                                                                          \
-_-_-_-                                                 )                                                                               \
-_-_-_-                                      );                                                                                         \
-_-_-_-                                 /* Le 20170131092659 'MODF(...)' a remplace 'MODFcs(...)', c'est beaucoup plus logique...    */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* Le 20170210130509, afin de simplifier le traitement de 'nom_imageA_Droite_uv', les        */ \
-_-_-_-                                 /* coordonnees {u_effectif_modulo,v_effectif_modulo} sont calculees ici, meme s'il faut      */ \
-_-_-_-                                 /* la 'tracer_une_droite_du_plan_uv_____compatibilite_20170130'...                           */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                                 Test(IFEQ_chaine(nom_imageA_Droite_uv,NOM_PIPE_Local))                                          \
-_-_-_-                                 /* Test introduit le 20170210130509...                                                       */ \
-_-_-_-                                      Bblock                                                                                     \
-_-_-_-                                      Test(IL_FAUT(tracer_une_droite_du_plan_uv_____compatibilite_20170130))                     \
-_-_-_-                                 /* Test introduit le 20170130143806...                                                       */ \
-_-_-_-                                           Bblock                                                                                \
-_-_-_-                                           EGAL(equation_d_une_droite_du_plan_uv                                                 \
-_-_-_-                                               ,ADD6(FfMODFcs(MUL2(coefficient_A_d_une_droite_du_plan_uv,u_effectif)             \
-_-_-_-                                                             ,minimum_de_u_du_domaine_d_une_droite_du_plan_uv                    \
-_-_-_-                                                             ,maximum_de_u_du_domaine_d_une_droite_du_plan_uv                    \
-_-_-_-                                                              )                                                                  \
-_-_-_-                                                    ,FfMODFcs(MUL2(coefficient_B_d_une_droite_du_plan_uv,v_effectif)             \
-_-_-_-                                                             ,minimum_de_v_du_domaine_d_une_droite_du_plan_uv                    \
-_-_-_-                                                             ,maximum_de_v_du_domaine_d_une_droite_du_plan_uv                    \
-_-_-_-                                                              )                                                                  \
-_-_-_-                                                    ,coefficient_C_d_une_droite_du_plan_uv                                       \
-_-_-_-                                                    ,MUL2(coefficient_F_d_une_droite_du_plan_uv                                  \
-_-_-_-                                                         ,EXP2(FfMODFcs(u_effectif                                               \
-_-_-_-                                                                       ,minimum_de_u_du_domaine_d_une_droite_du_plan_uv          \
-_-_-_-                                                                       ,maximum_de_u_du_domaine_d_une_droite_du_plan_uv          \
-_-_-_-                                                                        )                                                        \
-_-_-_-                                                               )                                                                 \
-_-_-_-                                                          )                                                                      \
-_-_-_-                                                    ,MUL2(coefficient_G_d_une_droite_du_plan_uv                                  \
-_-_-_-                                                         ,MUL2(FfMODFcs(u_effectif                                               \
-_-_-_-                                                                       ,minimum_de_u_du_domaine_d_une_droite_du_plan_uv          \
-_-_-_-                                                                       ,maximum_de_u_du_domaine_d_une_droite_du_plan_uv          \
-_-_-_-                                                                        )                                                        \
-_-_-_-                                                              ,FfMODFcs(v_effectif                                               \
-_-_-_-                                                                       ,minimum_de_v_du_domaine_d_une_droite_du_plan_uv          \
-_-_-_-                                                                       ,maximum_de_v_du_domaine_d_une_droite_du_plan_uv          \
-_-_-_-                                                                        )                                                        \
-_-_-_-                                                               )                                                                 \
-_-_-_-                                                          )                                                                      \
-_-_-_-                                                    ,MUL2(coefficient_H_d_une_droite_du_plan_uv                                  \
-_-_-_-                                                         ,EXP2(FfMODFcs(v_effectif                                               \
-_-_-_-                                                                       ,minimum_de_v_du_domaine_d_une_droite_du_plan_uv          \
-_-_-_-                                                                       ,maximum_de_v_du_domaine_d_une_droite_du_plan_uv          \
-_-_-_-                                                                        )                                                        \
-_-_-_-                                                               )                                                                 \
-_-_-_-                                                          )                                                                      \
-_-_-_-                                                     )                                                                           \
-_-_-_-                                                );                                                                               \
-_-_-_-                                 /* Calcul de l'equation d'une droite dans le plan {u,v}...                                   */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* Le 20071204115817 'FfMODFcs(...)' a remplace 'MODFcs(...)' afin d'alleger le code         */ \
-_-_-_-                                 /* genere...                                                                                 */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* Le 20170124104505, cette droite a ete "generalisee" par l'introduction de {F,G,H}...      */ \
-_-_-_-                                 /* L'usage de 'HORNER_2_02(u,v,a22,a21,a20,a12,a11,a10,a02,a01,a00)' avec :                  */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  A = a01                                                                  */ \
-_-_-_-                                 /*                  B = a10                                                                  */ \
-_-_-_-                                 /*                  C = a00                                                                  */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* est difficile, voire impossible, a cause de l'usage de 'FfMODFcs(...)' ci-dessus...       */ \
-_-_-_-                                           Eblock                                                                                \
-_-_-_-                                      ATes                                                                                       \
-_-_-_-                                           Bblock                                                                                \
-_-_-_-                                           EGAL(equation_d_une_droite_du_plan_uv                                                 \
-_-_-_-                                               ,LIN5(coefficient_A_d_une_droite_du_plan_uv                                       \
-_-_-_-                                                    ,NEUT(u_effectif_modulo)                                                     \
-_-_-_-                                                    ,coefficient_B_d_une_droite_du_plan_uv                                       \
-_-_-_-                                                    ,NEUT(v_effectif_modulo)                                                     \
-_-_-_-                                                    ,coefficient_F_d_une_droite_du_plan_uv                                       \
-_-_-_-                                                    ,EXP2(u_effectif_modulo)                                                     \
-_-_-_-                                                    ,coefficient_G_d_une_droite_du_plan_uv                                       \
-_-_-_-                                                    ,MUL2(u_effectif_modulo,v_effectif_modulo)                                   \
-_-_-_-                                                    ,coefficient_H_d_une_droite_du_plan_uv                                       \
-_-_-_-                                                    ,EXP2(v_effectif_modulo)                                                     \
-_-_-_-                                                    ,coefficient_C_d_une_droite_du_plan_uv                                       \
-_-_-_-                                                     )                                                                           \
-_-_-_-                                                );                                                                               \
-_-_-_-                                           Eblock                                                                                \
-_-_-_-                                      ETes                                                                                       \
-_-_-_-                                      Eblock                                                                                     \
-_-_-_-                                 ATes                                                                                            \
-_-_-_-                                      Bblock                                                                                     \
-_-_-_-                                      EGAL(equation_d_une_droite_du_plan_uv                                                      \
-_-_-_-                                          ,sgFFload_point_coordonnees_01(image_Droite_UV_Definition                              \
-_-_-_-                                                                        ,NORM(u_effectif_modulo                                  \
-_-_-_-                                                                             ,minimum_de_u_du_domaine_d_une_droite_du_plan_uv    \
-_-_-_-                                                                             ,maximum_de_u_du_domaine_d_une_droite_du_plan_uv    \
-_-_-_-                                                                              )                                                  \
-_-_-_-                                                                        ,NORM(v_effectif_modulo                                  \
-_-_-_-                                                                             ,minimum_de_v_du_domaine_d_une_droite_du_plan_uv    \
-_-_-_-                                                                             ,maximum_de_v_du_domaine_d_une_droite_du_plan_uv    \
-_-_-_-                                                                              )                                                  \
-_-_-_-                                                                        ,FAUX,FAUX                                               \
-_-_-_-                                                                        ,FAUX,FAUX                                               \
-_-_-_-                                                                        ,VRAI,VRAI                                               \
-_-_-_-                                                                        ,ZERO_D_UNE_DROITE_DU_PLAN_UV                            \
-_-_-_-                                                                        ,imageA_Droite_uv__interpoler                            \
-_-_-_-                                                                        ,imageA_Droite_uv__use_interpolation_lineaire            \
-_-_-_-                                                                        ,imageA_Droite_uv__eviter__discontinuites                \
-_-_-_-                                                                        ,imageA_Droite_uv__epsilon_discontinuites                \
-_-_-_-                                                                         )                                                       \
-_-_-_-                                           );                                                                                    \
-_-_-_-                                 /* Ce dispositif introduit le 20170210130509 permet d'initialiser arbitrairement             */ \
-_-_-_-                                 /* la droite (qui alors peut ne plus etre une droite...).                                    */ \
-_-_-_-                                      Eblock                                                                                     \
-_-_-_-                                 ETes                                                                                            \
-_-_-_-                                                                                                                                 \
-_-_-_-                                 Test(IFET(IL_FAUT(generer_les_trois_projections_de_la_surface)                                  \
-_-_-_-                                          ,IL_FAUT(visualiser_la_droite_tracee_dans_le_plan_uv)                                  \
-_-_-_-                                           )                                                                                     \
-_-_-_-                                      )                                                                                          \
-_-_-_-                                      Bblock                                                                                     \
-_-_-_-                                      storeF_point_valide(equation_d_une_droite_du_plan_uv                                       \
-_-_-_-                                                         ,image_Droite_UV_Calculee__                                             \
-_-_-_-                                                         ,X_de_projection                                                        \
-_-_-_-                                                         ,Y_de_projection                                                        \
-_-_-_-                                                          );                                                                     \
-_-_-_-                                 /* La memorisation d'une droite dans le plan {u,v} ne peut se faire que s'il y a projection  */ \
-_-_-_-                                 /* de la surface afin de pouvoir beneficier de {X_de_projection,Y_de_projection}...          */ \
-_-_-_-                                      Eblock                                                                                     \
-_-_-_-                                 ATes                                                                                            \
-_-_-_-                                      Bblock                                                                                     \
-_-_-_-                                      Eblock                                                                                     \
-_-_-_-                                 ETes                                                                                            \
-_-_-_-                                 Eblock                                                                                          \
-_-_-_-                            ATes                                                                                                 \
-_-_-_-                                 Bblock                                                                                          \
-_-_-_-                                 Eblock                                                                                          \
-_-_-_-                            ETes                                                                                                 \
-_-_-_-                                                                                                                                 \
-_-_-_-                            Test(IFOU(IFET(IL_FAUT(visualiser_les_points_du_maillage_uv)                                         \
-_-_-_-                                          ,IFOU(DIVISIBLE(echantillonnage_courant_de_u,echantillonnage_de_u)                     \
-_-_-_-                                               ,DIVISIBLE(echantillonnage_courant_de_v,echantillonnage_de_v)                     \
-_-_-_-                                                )                                                                                \
-_-_-_-                                           )                                                                                     \
-_-_-_-                                     ,IFET(IL_FAUT(tracer_une_droite_du_plan_uv)                                                 \
-_-_-_-                                          ,IZEQ_a_peu_pres(equation_d_une_droite_du_plan_uv                                      \
-_-_-_-                                                          ,epsilon_de_definition_d_une_droite_du_plan_uv                         \
-_-_-_-                                                           )                                                                     \
-_-_-_-                                           )                                                                                     \
-_-_-_-                                      )                                                                                          \
-_-_-_-                                 )                                                                                               \
-_-_-_-                                 /* Le test sur la droite du plan {u,v} fut introduit le 20060813111731...                    */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* ATTENTION, on notera que l'equation de la droite est a priori :                           */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  A.u + B.v + C = 0                                                        */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* (a "epsilon pres"). Afin de prendre en compte le "modulo" (ou "repliement"), l'equation   */ \
-_-_-_-                                 /* de la droite est en fait :                                                                */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  mod(A.u,Um,UM) + mod(B.v,Vm,VM) + C = 0                                  */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* Pour que le "repliement" de la droite ait bien lieu avec les 'modulo's ci-dessus, il      */ \
-_-_-_-                                 /* est essentiel que :                                                                       */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                   UM - Um                                                                 */ \
-_-_-_-                                 /*                  --------- soit un nombre entier divisible par 'A' (si 'A' entier...)     */ \
-_-_-_-                                 /*                    pas_u                                                                  */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* et que :                                                                                  */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                   VM - Vm                                                                 */ \
-_-_-_-                                 /*                  --------- soit un nombre entier divisible par 'B' (si 'B' entier...)     */ \
-_-_-_-                                 /*                    pas_v                                                                  */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* ou 'pas_u' et 'pas_v' designent les pas de parcours des axes 'u' et 'v' respectivement,   */ \
-_-_-_-                                 /* ainsi que le montre la figure suivante :                                                  */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  v  ^                                                                     */ \
-_-_-_-                                 /*                     |                                                                     */ \
-_-_-_-                                 /*                  VM |------------------+                                                  */ \
-_-_-_-                                 /*                     |        /.       /|                                                  */ \
-_-_-_-                                 /*                     |       / .      / |                                                  */ \
-_-_-_-                                 /*                     |      /  .     /  |                                                  */ \
-_-_-_-                                 /*                     |     /   .    /   |                                                  */ \
-_-_-_-                                 /*                     |    /    .   /    |                                                  */ \
-_-_-_-                                 /*                     |   /     .  /     |                                                  */ \
-_-_-_-                                 /*                     |  /      . /      |                                                  */ \
-_-_-_-                                 /*                     | /       ./       |                                                  */ \
-_-_-_-                                 /*                     |..................|                 ATTENTION : figure correspondant */ \
-_-_-_-                                 /*                     |        /.       /|                 a A=+1 et B=-3/2. Dans le cas    */ \
-_-_-_-                                 /*                     |       / .      / |                 A=+2 et B=-3 il y a deux fois    */ \
-_-_-_-                                 /*                     |      /  .     /  |                 plus de rectangles elementaires  */ \
-_-_-_-                                 /*                     |     /   .    /   |                 dans les deux directions...      */ \
-_-_-_-                                 /*                     |    /    .   /    |                                                  */ \
-_-_-_-                                 /*                     |   /     .  /     |                                                  */ \
-_-_-_-                                 /*                     |  /      . /      |                                                  */ \
-_-_-_-                                 /*                     | /       ./       |                                                  */ \
-_-_-_-                                 /*                     |..................|                                                  */ \
-_-_-_-                                 /*                     |        /.       /|                                                  */ \
-_-_-_-                                 /*                     |       / .      / |                                                  */ \
-_-_-_-                                 /*                     |      /  .     /  |                                                  */ \
-_-_-_-                                 /*                     |     /   .    /   |                                                  */ \
-_-_-_-                                 /*                     |    /    .   /    |                                                  */ \
-_-_-_-                                 /*                     |   /     .  /     |                                                  */ \
-_-_-_-                                 /*                     |  /      . /      |                                                  */ \
-_-_-_-                                 /*                     | /       ./       |                                                  */ \
-_-_-_-                                 /*                  Vm |--------------------------------------->                             */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                     Um                 UM                   u                             */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* qui montre la droite :                                                                    */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  2u - 3v = 0                                                              */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* repliee, soit avec :                                                                      */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  A = +2                                                                   */ \
-_-_-_-                                 /*                  B = -3                                                                   */ \
-_-_-_-                                 /*                  C = 0                                                                    */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* qui permet, par exemple, a 'v $xrs/tore.11$K' de visualiser (dessine sur un tore) le      */ \
-_-_-_-                                 /* noeud "trefle" ('v $xiirv/KNOT.11.3.1'), a condition de prendre :                         */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  u E [0,4.pi]                                                             */ \
-_-_-_-                                 /*                  v E [0,4.pi]                                                             */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* Mais, ATTENTION, on notera que la droite en fait calculee est la suivante (que l'on       */ \
-_-_-_-                                 /* peut visualiser grace a 'IL_FAUT(visualiser_la_droite_tracee_dans_le_plan_uv)' en         */ \
-_-_-_-                                 /* n'oubliant alors pas le 'IL_FAUT(generer_les_trois_projections_de_la_surface)') :         */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  v  ^                                                                     */ \
-_-_-_-                                 /*                     |                                                                     */ \
-_-_-_-                                 /*                  VM |------------------+                                                  */ \
-_-_-_-                                 /*                     |\        .\       |                                                  */ \
-_-_-_-                                 /*                     | \       . \      |                                                  */ \
-_-_-_-                                 /*                     |  \      .  \     |                                                  */ \
-_-_-_-                                 /*                     |   \     .   \    |                                                  */ \
-_-_-_-                                 /*                     |    \    .    \   |                                                  */ \
-_-_-_-                                 /*                     |     \   .     \  |                                                  */ \
-_-_-_-                                 /*                     |      \  .      \ |                                                  */ \
-_-_-_-                                 /*                     |       \ .       \|                                                  */ \
-_-_-_-                                 /*                     |..................|                 ATTENTION : figure correspondant */ \
-_-_-_-                                 /*                     |\        .\       |                 a A=+1 et B=-3/2. Dans le cas    */ \
-_-_-_-                                 /*                     | \       . \      |                 A=+2 et B=-3 il y a deux fois    */ \
-_-_-_-                                 /*                     |  \      .  \     |                 plus de rectangles elementaires  */ \
-_-_-_-                                 /*                     |   \     .   \    |                 dans les deux directions...      */ \
-_-_-_-                                 /*                     |    \    .    \   |                                                  */ \
-_-_-_-                                 /*                     |     \   .     \  |                                                  */ \
-_-_-_-                                 /*                     |      \  .      \ |                                                  */ \
-_-_-_-                                 /*                     |       \ .       \|                                                  */ \
-_-_-_-                                 /*                     |..................|                                                  */ \
-_-_-_-                                 /*                     |\        .\       |                                                  */ \
-_-_-_-                                 /*                     | \       . \      |                                                  */ \
-_-_-_-                                 /*                     |  \      .  \     |                                                  */ \
-_-_-_-                                 /*                     |   \     .   \    |                                                  */ \
-_-_-_-                                 /*                     |    \    .    \   |                                                  */ \
-_-_-_-                                 /*                     |     \   .     \  |                                                  */ \
-_-_-_-                                 /*                     |      \  .      \ |                                                  */ \
-_-_-_-                                 /*                     |       \ .       \|                                                  */ \
-_-_-_-                                 /*                  Vm |--------------------------------------->                             */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                     Um                 UM                   u                             */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* c'est-a-dire qu'elle subit une symetrie d'axe horizontal. Cela fut compris en             */ \
-_-_-_-                                 /* visualisant la droite precedente en mode 'Suh' (afin d'avoir peu de points...).           */ \
-_-_-_-                                 /* Le pas en 'u' et 'v' valait alors :                                                       */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  pas = 0.19635                                                            */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* Les points de coordonnees multiples de :                                                  */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  {3*pas,2*pas} = {0.589049,0.392699}                                      */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* devaient donc etre sur la droite puisque :                                                */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  (2*0.589049) - (3*0.392699) = 0         (a epsilon pres...).             */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* Mais en fait ils n'y sont pas a cause des 'MODFcs(...)' ci-dessus. Voici a titre          */ \
-_-_-_-                                 /* d'exemple les valeurs calculees ci-dessus pour les deux premiers points qui auraient      */ \
-_-_-_-                                 /* du appartenir a la droite :                                                               */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*   u=0.000000 v=0.000000 MODFcs(A.u)=+0.000000 MODFcs(B.v)=+0.000000 equation=0.000000     */ \
-_-_-_-                                 /*   u=0.589049 v=0.392699 MODFcs(A.u)=+1.178097 MODFcs(B.v)=-5.105088 equation=-3.926991    */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* Ainsi, pour le deuxieme point, les deux produits 'A.u' et 'B.v' valent :                  */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  A.u = +2*0.589049 = +1.178097                                            */ \
-_-_-_-                                 /*                  B.v = -3*0.392699 = -1.178097                                            */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* et sont donc egaux en valeur absolue. Mais il en est malheureusement autrement des        */ \
-_-_-_-                                 /* valeurs obtenues avec les procedures 'MODFcs(...)' car, en effet, dans le cas du          */ \
-_-_-_-                                 /* produit 'B.v', ce dernier est negatif et va donc etre ramene dans [0,2.pi] ; on a         */ \
-_-_-_-                                 /* ainsi :                                                                                   */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  -(2.pi - 1.178097) = -5.105088                                           */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* d'ou la symetrie annoncee. On notera enfin que ces symetries sont sans consequences       */ \
-_-_-_-                                 /* car, en effet, elles preservent les proprietes de la droite "repliee"...                  */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* Autre remarque ; a cause des 'MODFcs(...)' les deux droites :                             */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  A = +2                                                                   */ \
-_-_-_-                                 /*                  B = -3                                                                   */ \
-_-_-_-                                 /*                  C = 0                                                                    */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* et :                                                                                      */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  A = +1                                                                   */ \
-_-_-_-                                 /*                  B = -3/2                                                                 */ \
-_-_-_-                                 /*                  C = 0                                                                    */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* ne sont pas equivalentes...                                                               */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* Le test sur 'visualiser_les_points_du_maillage_uv' a ete introduit le 20060814185659      */ \
-_-_-_-                                 /* afin de permettre de ne tracer que la droite dans le plan {u,v}...                        */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* On notera le 20170129100240 qu'en toute generalite, la probabilite pour que la droite     */ \
-_-_-_-                                 /* dans le plan {u,v} passe par les noeux du maillage en {u,v} de ce plan est en fait assez  */ \
-_-_-_-                                 /* faible. Cela marche bien, par exemple, pour 'v $xiirs/SPHE.K1', mais dans beaucoup        */ \
-_-_-_-                                 /* d'autres cas, c'est moins evident : ce fut le cas en essayant de tracer cette droite      */ \
-_-_-_-                                 /* sur la surface 'v $xiirs/HELI.11' pour laquelle la proportion de points situes sur le     */ \
-_-_-_-                                 /* maillage (a "epsilon" pres) est tres faible ; ainsi, par exemple, avec :                  */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  Eduv=0.001                                                               */ \
-_-_-_-                                 /*                  dpu=4                                                                    */ \
-_-_-_-                                 /*                  dpv=4                                                                    */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* il y a 198 points sur la droite, pour un total de 834880 points constituants le maillage. */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* On notera le 20170130111451 que si l'on souhaite, par exemple, une droite qui soit la     */ \
-_-_-_-                                 /* diagonale principale du domaine [Um,UM]x[Vm,VM], il faut prendre :                        */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  Aduv = (VM)-(Vm))/((UM)-(Um))                                            */ \
-_-_-_-                                 /*                  Bduv = -1                                                                */ \
-_-_-_-                                 /*                  Cduv = Vm                                                                */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 Bblock                                                                                          \
-_-_-_-                                 EGAL(u_effectif_translate                                                                       \
-_-_-_-                                     ,ADD2(u_effectif                                                                            \
-_-_-_-                                          ,MUL2(facteur_de_la_translation_de_u_effectif_lors_d_un_lister                         \
-_-_-_-                                               ,SOUS(maximum_de_u_effectif,minimum_de_u_effectif)                                \
-_-_-_-                                                )                                                                                \
-_-_-_-                                           )                                                                                     \
-_-_-_-                                      );                                                                                         \
-_-_-_-                                 EGAL(v_effectif_translate                                                                       \
-_-_-_-                                     ,ADD2(v_effectif                                                                            \
-_-_-_-                                          ,MUL2(facteur_de_la_translation_de_v_effectif_lors_d_un_lister                         \
-_-_-_-                                               ,SOUS(maximum_de_v_effectif,minimum_de_v_effectif)                                \
-_-_-_-                                                )                                                                                \
-_-_-_-                                           )                                                                                     \
-_-_-_-                                      );                                                                                         \
-_-_-_-                                                                                                                                 \
-_-_-_-                                 EGAL(c_est_le_calcul_de__cx__cy__cz,VRAI);                                                      \
-_-_-_-                                 EGAL(cx,Fxyz(Fx(u_effectif,v_effectif)));                                                       \
-_-_-_-                                 EGAL(cy,Fxyz(Fy(u_effectif,v_effectif)));                                                       \
-_-_-_-                                 EGAL(cz,Fxyz(Fz(u_effectif,v_effectif)));                                                       \
-_-_-_-                                 EGAL(c_est_le_calcul_de__cx__cy__cz,FAUX);                                                      \
-_-_-_-                                 /* Generation du point courant de la surface...                                              */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* On notera qu'avant le 20041126090202, le calcul de {cx,cy,cz} figurait explicitement a    */ \
-_-_-_-                                 /* l'interieur des differentes 'sequence_de_generation'. Mais avec l'introduction de la      */ \
-_-_-_-                                 /* generation eventuelle des trois "projections" d'une surface, il est plus astucieux et     */ \
-_-_-_-                                 /* economique de faire cela avant l'appel de 'sequence_de_generation'...                     */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                                 Test(IFET(IL_FAUT(generer_les_trois_projections_de_la_surface)                                  \
-_-_-_-                                          ,EST_VRAI(les_trois_projections_de_la_surface_doivent_etre_transformees)               \
-_-_-_-                                           )                                                                                     \
-_-_-_-                                      )                                                                                          \
-_-_-_-                                      Bblock                                                                                     \
-_-_-_-                                      DEFV(Float,INIT(cx_transformee                                                             \
-_-_-_-                                                     ,TRANSFORMATION_GEOMETRIQUE_3D_Fx(cx,cy,cz                                  \
-_-_-_-                                                                                      ,ASD1(translation_de_l_origine,dx)         \
-_-_-_-                                                                                       )                                         \
-_-_-_-                                                      )                                                                          \
-_-_-_-                                           );                                                                                    \
-_-_-_-                                      DEFV(Float,INIT(cy_transformee                                                             \
-_-_-_-                                                     ,TRANSFORMATION_GEOMETRIQUE_3D_Fy(cx,cy,cz                                  \
-_-_-_-                                                                                      ,ASD1(translation_de_l_origine,dy)         \
-_-_-_-                                                                                       )                                         \
-_-_-_-                                                      )                                                                          \
-_-_-_-                                           );                                                                                    \
-_-_-_-                                      DEFV(Float,INIT(cz_transformee                                                             \
-_-_-_-                                                     ,TRANSFORMATION_GEOMETRIQUE_3D_Fz(cx,cy,cz                                  \
-_-_-_-                                                                                      ,ASD1(translation_de_l_origine,dz)         \
-_-_-_-                                                                                       )                                         \
-_-_-_-                                                      )                                                                          \
-_-_-_-                                           );                                                                                    \
-_-_-_-                                                                                                                                 \
-_-_-_-                                      EGAL(cx,cx_transformee);                                                                   \
-_-_-_-                                      EGAL(cy,cy_transformee);                                                                   \
-_-_-_-                                      EGAL(cz,cz_transformee);                                                                   \
-_-_-_-                                 /* Dispositif introduit le 20090606103424 qui permet donc de transformer les projections     */ \
-_-_-_-                                 /* via les 'ROTATION_O?'s et 'TRANSLATION_O?'s...                                            */ \
-_-_-_-                                      Eblock                                                                                     \
-_-_-_-                                 ATes                                                                                            \
-_-_-_-                                      Bblock                                                                                     \
-_-_-_-                                      Eblock                                                                                     \
-_-_-_-                                 ETes                                                                                            \
-_-_-_-                                                                                                                                 \
-_-_-_-                                 Test(IFET(IL_FAUT(generer_les_trois_projections_de_la_surface)                                  \
-_-_-_-                                          ,EST_VRAI(les_trois_projections_de_la_surface_sont_en_fait_celles_de_la_texture)       \
-_-_-_-                                           )                                                                                     \
-_-_-_-                                      )                                                                                          \
-_-_-_-                                      Bblock                                                                                     \
-_-_-_-                                      DEFV(Float,INIT(coordonnee_X_texture,FLOT__UNDEF));                                        \
-_-_-_-                                      DEFV(Float,INIT(coordonnee_Y_texture,FLOT__UNDEF));                                        \
-_-_-_-                                 /* Coordonnees {X,Y} dans [0,1] d'acces a la texture (introduites le 20050820082930...).     */ \
-_-_-_-                                      DEFV(Float,INIT(texture_x,FLOT__UNDEF));                                                   \
-_-_-_-                                      DEFV(Float,INIT(texture_y,FLOT__UNDEF));                                                   \
-_-_-_-                                      DEFV(Float,INIT(texture_z,FLOT__UNDEF));                                                   \
-_-_-_-                                 /* Definition des trois textures.                                                            */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                                      Test(EST_VRAI(les_trois_projections_de_la_texture_sont_mappees_sur_la_surface))            \
-_-_-_-                                           Bblock                                                                                \
-_-_-_-                                           EGAL(coordonnee_X_texture,Projection_OX(cx,cy,cz));                                   \
-_-_-_-                                           EGAL(coordonnee_Y_texture,Projection_OY(cx,cy,cz));                                   \
-_-_-_-                                 /* Cas ou ce sont les distorsions de la texture mappee qui vont etre generees en tant        */ \
-_-_-_-                                 /* que "projection de la surface"...                                                         */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* Pour resumer, soit donc {u,v} les coordonnees curvilignes courantes. Les coordonnees      */ \
-_-_-_-                                 /* tridimensionnelles {cx,cy,cz} sont donc :                                                 */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  cx = F (u,v)                                                             */ \
-_-_-_-                                 /*                        x                                                                  */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  cy = F (u,v)                                                             */ \
-_-_-_-                                 /*                        y                                                                  */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  cz = F (u,v)                                                             */ \
-_-_-_-                                 /*                        z                                                                  */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* Par projection, les coordonnees bidimensionnelles {px,py} sont alors :                    */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  px = Projection_OX(cx,cy,cz)                                             */ \
-_-_-_-                                 /*                  py = Projection_OY(cx,cy,cz)                                             */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* Le point {u,v} de la projection sera alors marque par le niveau au point {px,py} de la    */ \
-_-_-_-                                 /* texture :                                                                                 */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  PROJECTION(u,v) = TEXTURE(px,py)                                         */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* dans le cas 'EST_VRAI(les_trois_projections_de_la_texture_sont_mappees_sur_la_surface)'). */ \
-_-_-_-                                           Eblock                                                                                \
-_-_-_-                                      ATes                                                                                       \
-_-_-_-                                           Bblock                                                                                \
-_-_-_-                                           EGAL(coordonnee_X_texture,cx);                                                        \
-_-_-_-                                           EGAL(coordonnee_Y_texture,cy);                                                        \
-_-_-_-                                 /* Cas ou c'est la texture utilisee qui va etre generee en tant que "projection de la        */ \
-_-_-_-                                 /* surface" (ceci a ete introduit le 20050820082930...).                                     */ \
-_-_-_-                                           Eblock                                                                                \
-_-_-_-                                      ETes                                                                                       \
-_-_-_-                                                                                                                                 \
-_-_-_-                                      EGAL(texture_x                                                                             \
-_-_-_-                                          ,sgFFload_point_coordonnees_01(image_Texture_R                                         \
-_-_-_-                                                                        ,coordonnee_X_texture                                    \
-_-_-_-                                                                        ,coordonnee_Y_texture                                    \
-_-_-_-                                                                        ,textures_periodiser_X,textures_periodiser_Y             \
-_-_-_-                                                                        ,textures_symetriser_X,textures_symetriser_Y             \
-_-_-_-                                                                        ,textures_prolonger_X,textures_prolonger_Y               \
-_-_-_-                                                                        ,textures_niveau_hors_image                              \
-_-_-_-                                                                        ,image_Texture_R__interpoler                             \
-_-_-_-                                                                        ,image_Texture_R__use_interpolation_lineaire             \
-_-_-_-                                                                        ,image_Texture_R__eviter__discontinuites                 \
-_-_-_-                                                                        ,image_Texture_R__epsilon_discontinuites                 \
-_-_-_-                                                                         )                                                       \
-_-_-_-                                           );                                                                                    \
-_-_-_-                                      EGAL(texture_y                                                                             \
-_-_-_-                                          ,sgFFload_point_coordonnees_01(image_Texture_V                                         \
-_-_-_-                                                                        ,coordonnee_X_texture                                    \
-_-_-_-                                                                        ,coordonnee_Y_texture                                    \
-_-_-_-                                                                        ,textures_periodiser_X,textures_periodiser_Y             \
-_-_-_-                                                                        ,textures_symetriser_X,textures_symetriser_Y             \
-_-_-_-                                                                        ,textures_prolonger_X,textures_prolonger_Y               \
-_-_-_-                                                                        ,textures_niveau_hors_image                              \
-_-_-_-                                                                        ,image_Texture_V__interpoler                             \
-_-_-_-                                                                        ,image_Texture_V__use_interpolation_lineaire             \
-_-_-_-                                                                        ,image_Texture_V__eviter__discontinuites                 \
-_-_-_-                                                                        ,image_Texture_V__epsilon_discontinuites                 \
-_-_-_-                                                                         )                                                       \
-_-_-_-                                           );                                                                                    \
-_-_-_-                                      EGAL(texture_z                                                                             \
-_-_-_-                                          ,sgFFload_point_coordonnees_01(image_Texture_B                                         \
-_-_-_-                                                                        ,coordonnee_X_texture                                    \
-_-_-_-                                                                        ,coordonnee_Y_texture                                    \
-_-_-_-                                                                        ,textures_periodiser_X,textures_periodiser_Y             \
-_-_-_-                                                                        ,textures_symetriser_X,textures_symetriser_Y             \
-_-_-_-                                                                        ,textures_prolonger_X,textures_prolonger_Y               \
-_-_-_-                                                                        ,textures_niveau_hors_image                              \
-_-_-_-                                                                        ,image_Texture_B__interpoler                             \
-_-_-_-                                                                        ,image_Texture_B__use_interpolation_lineaire             \
-_-_-_-                                                                        ,image_Texture_B__eviter__discontinuites                 \
-_-_-_-                                                                        ,image_Texture_B__epsilon_discontinuites                 \
-_-_-_-                                                                         )                                                       \
-_-_-_-                                           );                                                                                    \
-_-_-_-                                                                                                                                 \
-_-_-_-                                      EGAL(cx,texture_x);                                                                        \
-_-_-_-                                      EGAL(cy,texture_y);                                                                        \
-_-_-_-                                      EGAL(cz,texture_z);                                                                        \
-_-_-_-                                 /* Et on modifie {cx,cy,cz} pour simplifier les choses...                                    */ \
-_-_-_-                                      Eblock                                                                                     \
-_-_-_-                                 ATes                                                                                            \
-_-_-_-                                      Bblock                                                                                     \
-_-_-_-                                      Eblock                                                                                     \
-_-_-_-                                 ETes                                                                                            \
-_-_-_-                                                                                                                                 \
-_-_-_-                                 Test(IL_FAUT(generer_les_trois_projections_de_la_surface))                                      \
-_-_-_-                                 /* Cas ou il faut generer les trois projections (introduit le 20041126090603) :              */ \
-_-_-_-                                      Bblock                                                                                     \
-_-_-_-                                      storeF_point_valide(cx                                                                     \
-_-_-_-                                                         ,Projection_de_Fx                                                       \
-_-_-_-                                                         ,X_de_projection                                                        \
-_-_-_-                                                         ,Y_de_projection                                                        \
-_-_-_-                                                          );                                                                     \
-_-_-_-                                      storeF_point_valide(cy                                                                     \
-_-_-_-                                                         ,Projection_de_Fy                                                       \
-_-_-_-                                                         ,X_de_projection                                                        \
-_-_-_-                                                         ,Y_de_projection                                                        \
-_-_-_-                                                          );                                                                     \
-_-_-_-                                      storeF_point_valide(cz                                                                     \
-_-_-_-                                                         ,Projection_de_Fz                                                       \
-_-_-_-                                                         ,X_de_projection                                                        \
-_-_-_-                                                         ,Y_de_projection                                                        \
-_-_-_-                                                          );                                                                     \
-_-_-_-                                 /* Generation des trois projections d'une surface tel que cela est defini et exploite        */ \
-_-_-_-                                 /* dans 'v $xrs/project2D.11$K P.R.O.J.E.C.T.O.R'. Ceci a ete introduit le 20041125111850.   */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* On notera que pour que cela ait un interet, il faut que :                                 */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  diviseur_du_pas_de_u = 1                                    (dpu=1)      */ \
-_-_-_-                                 /*                  diviseur_du_pas_de_v = 1                                    (dpv=1)      */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                              maximum_de_u - minimum_de_u                                  */ \
-_-_-_-                                 /*                  pas_de_u = -----------------------------                                 */ \
-_-_-_-                                 /*                                         dimX                                              */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                              maximum_de_v - minimum_de_v                                  */ \
-_-_-_-                                 /*                  pas_de_v = -----------------------------                                 */ \
-_-_-_-                                 /*                                         dimY                                              */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* afin de bien "remplir" les matrices {Proj_Fx,Proj_Fy,Proj_Fz}.                            */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* Les 'storeF_point(...)'s ont ete remplaces par des 'storeF_point_valide(...)'s le         */ \
-_-_-_-                                 /* 20050114215322 pour des raisons de prudence...                                            */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* On notera le 20050202174415 que, 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 reinjecter les trois champs "standard=FAUX" dans 'v $xrs/project2D.11$K' */ \
-_-_-_-                                 /* et que n'apparaissent pas des artefacts ; dans ce dernier programme, il faudra alors      */ \
-_-_-_-                                 /* utiliser :                                                                                */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  mu=0.0 Mu=0.5                                                            */ \
-_-_-_-                                 /*                  mv=0.0 Mv=1.0                                                            */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* afin de respecter les symetries...                                                        */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* L'utilisation des coordonnees entieres {X_de_projection,Y_de_projection} a ete introduite */ \
-_-_-_-                                 /* le 20050908130630 pour eviter les "trous" dans les matrices de projection...              */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                                      storeI_point_valide(ADD2(loadI_point(validation_de_la_projection                           \
-_-_-_-                                                                          ,X_de_projection                                       \
-_-_-_-                                                                          ,Y_de_projection                                       \
-_-_-_-                                                                           )                                                     \
-_-_-_-                                                              ,I                                                                 \
-_-_-_-                                                               )                                                                 \
-_-_-_-                                                         ,validation_de_la_projection                                            \
-_-_-_-                                                         ,X_de_projection                                                        \
-_-_-_-                                                         ,Y_de_projection                                                        \
-_-_-_-                                                          );                                                                     \
-_-_-_-                                 /* Marquage de tous les points {u,v} possibles...                                            */ \
-_-_-_-                                      Eblock                                                                                     \
-_-_-_-                                 ATes                                                                                            \
-_-_-_-                                      Bblock                                                                                     \
-_-_-_-                                 /* Cas ou il faut visualiser la surface :                                                    */ \
-_-_-_-                                      BLOC(sequence_de_generation);                                                              \
-_-_-_-                                 /* Generation specifique de l'image de la surface pour le point courant {u,v}.               */ \
-_-_-_-                                      Eblock                                                                                     \
-_-_-_-                                 ETes                                                                                            \
-_-_-_-                                 Eblock                                                                                          \
-_-_-_-                            ATes                                                                                                 \
-_-_-_-                                 Bblock                                                                                          \
-_-_-_-                                 Eblock                                                                                          \
-_-_-_-                            ETes                                                                                                 \
-_-_-_-                            Eblock                                                                                               \
-_-_-_-                       ATes                                                                                                      \
-_-_-_-                            Bblock                                                                                               \
-_-_-_-                            Eblock                                                                                               \
-_-_-_-                       ETes                                                                                                      \
-_-_-_-                       Eblock                                                                                                    \
-_-_-_-                  end_nouveau_block                                                                                              \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             end_nouveau_block                                                                                                   \
-_-_-_-             Eblock
                                        /* Generation du point courant {u,v} introduit sous cette forme le 20221221111016...         */

#ifdef    NE_PAS_PERMETTRE_LA_DEFINITION_ARBITRAIRE_DES_COORDONNEES_U_ET_V
                                        /* Ceci fut introduit le 20221224170113 pour les programmes :                                */
                                        /*                                                                                           */
                                        /*                  $xrq/Hspherik.11$K                                                       */
                                        /*                  $xrq/Hspherik.21$K                                                       */
                                        /*                  $xrq/hydrogene.21$K                                                      */
                                        /*                  $xrq/hydrogene.51$K                                                      */
                                        /*                                                                                           */
                                        /* car, en effet, il manquait beaucoup de choses dans le cas ou la procedure                 */
                                        /* 'DEFINITION_ARBITRAIRE_DES_COORDONNEES_U_ET_V(...)' etait activee...                      */
-    define    DEFINITION_ARBITRAIRE_DES_COORDONNEES_U_ET_V(Fx,Fy,Fz,calcul_eventuel_point_courant,sequence_de_generation)              \
-_-_-_-                                 /* Mis sous cette forme le 20221224170113...                                                 */ \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  Eblock
#Aifdef   NE_PAS_PERMETTRE_LA_DEFINITION_ARBITRAIRE_DES_COORDONNEES_U_ET_V
-    define    index_definition_arbitraire                                                                                              \
-_-_-_-                  index_de_definition_arbitraire_des_coordonnees_u_v
                                        /* Afin de raccourcir certaines des lignes qui suivent...                                    */
                                        /*                                                                                           */
                                        /* Le 20240519095641, le symbole 'index_de_definition_arbitraire' a ete remplace par         */
                                        /* 'index_definition_arbitraire' par compatibilite avec les autres fichiers :                */
                                        /*                                                                                           */
                                        /*                  'v $xrs/volumes.12.I index_definition_arbitraire',                       */
                                        /*                  'v $xrs/hyper_volumes.12.I index_definition_arbitraire',                 */
                                        /*                  'v $xrs/hyper_hyper_volumes.12.I index_definition_arbitraire'.           */
                                        /*                                                                                           */

-    define    DEFINITION_ARBITRAIRE_DES_COORDONNEES_U_ET_V(Fx,Fy,Fz,calcul_eventuel_point_courant,sequence_de_generation)              \
-_-_-_-                                 /* Mis sous cette forme le 20221224170113...                                                 */ \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  begin_nouveau_block                                                                                            \
-_-_-_-                       Bblock                                                                                                    \
-_-_-_-                                 /* Je note le 20240517125211 que cette suite de 'Bblock's est destinee a ne pas changer      */ \
-_-_-_-                                 /* la tabulation de ce qui suit...                                                           */ \
-_-_-_-                       DEFINITION_DE__XY__de_projection;                                                                         \
-_-_-_-                       DEFINITION_DE__echantillonnage_courant_de_uv;                                                             \
-_-_-_-                       DEFINITION_DE__XY__de_projection__ET_DEFINITION_DE__echantillonnage_courant_de_uv;                        \
-_-_-_-                                 /* Ne servent qu'a permettre 'GENERATION_DU_POINT_uv_COURANT(...)' ci-apres...               */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                       DEFV(Logical,INIT(recuperer_les_coordonnees_u_v,VRAI));                                                   \
-_-_-_-                                                                                                                                 \
-_-_-_-                       Test(IL_FAUT(generer_les_trois_projections_de_la_surface))                                                \
-_-_-_-                                 /* Test introduit le 20221222080846...                                                       */ \
-_-_-_-                            Bblock                                                                                               \
-_-_-_-                            PRINT_ATTENTION("pas de projection de la surface lorsque les coordonnees {u,v} sont arbitraires");   \
-_-_-_-                            EGAL(generer_les_trois_projections_de_la_surface,FAUX);                                              \
-_-_-_-                            Eblock                                                                                               \
-_-_-_-                       ATes                                                                                                      \
-_-_-_-                            Bblock                                                                                               \
-_-_-_-                            Eblock                                                                                               \
-_-_-_-                       ETes                                                                                                      \
-_-_-_-                                                                                                                                 \
-_-_-_-                       Tant(IL_FAUT(recuperer_les_coordonnees_u_v))                                                              \
-_-_-_-                            Bblock                                                                                               \
-_-_-_-                            DEFV(Float,INIT(u,ELEMENT_DU_FICHIER_COORDONNEES_u(index_definition_arbitraire)));                   \
-_-_-_-                            DEFV(Float,INIT(v,ELEMENT_DU_FICHIER_COORDONNEES_v(index_definition_arbitraire)));                   \
-_-_-_-                                                                                                                                 \
-_-_-_-                            Test(IFET(IFNE(u,separateur_de_definition_arbitraire_des_coordonnees_u_v)                            \
-_-_-_-                                     ,IFNE(v,separateur_de_definition_arbitraire_des_coordonnees_u_v)                            \
-_-_-_-                                      )                                                                                          \
-_-_-_-                                 )                                                                                               \
-_-_-_-                                 /* Test introduit le 20230217093513...                                                       */ \
-_-_-_-                                 Bblock                                                                                          \
-_-_-_-                                 Test(I3ET(IFNE_chaine(fichier_des_coordonnees_ROUGE,NOM_PIPE_Local)                             \
-_-_-_-                                          ,IFNE_chaine(fichier_des_coordonnees_VERTE,NOM_PIPE_Local)                             \
-_-_-_-                                          ,IFNE_chaine(fichier_des_coordonnees_BLEUE,NOM_PIPE_Local)                             \
-_-_-_-                                           )                                                                                     \
-_-_-_-                                      )                                                                                          \
-_-_-_-                                 /* Possibilite introduite le 20230125094726...                                               */ \
-_-_-_-                                      Bblock                                                                                     \
-_-_-_-                                      EGAL(differentielle_ROUGE                                                                  \
-_-_-_-                                          ,ELEMENT_DU_FICHIER_COORDONNEES_ROUGE(index_definition_arbitraire)                     \
-_-_-_-                                           );                                                                                    \
-_-_-_-                                      EGAL(differentielle_VERTE                                                                  \
-_-_-_-                                          ,ELEMENT_DU_FICHIER_COORDONNEES_VERTE(index_definition_arbitraire)                     \
-_-_-_-                                           );                                                                                    \
-_-_-_-                                      EGAL(differentielle_BLEUE                                                                  \
-_-_-_-                                          ,ELEMENT_DU_FICHIER_COORDONNEES_BLEUE(index_definition_arbitraire)                     \
-_-_-_-                                           );                                                                                    \
-_-_-_-                                 /* Les initialisations de 'GENERATION_D_UNE_IMAGE_DU_VOLUME_AVEC_DIFFERENCES____(...)'       */ \
-_-_-_-                                 /* sont donc ici "oubliees"...                                                               */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                                      EGAL(utiliser_les_differentielles_ROUGE_VERTE_BLEUE,VRAI);                                 \
-_-_-_-                                 /* Afin de pouvoir definir {differentielle_x,differentielle_y,differentielle_z}              */ \
-_-_-_-                                 /* dans 'GENERATION_D_UNE_IMAGE_DU_VOLUME_AVEC_DIFFERENCES____(...)'                         */ \
-_-_-_-                                      Eblock                                                                                     \
-_-_-_-                                 ATes                                                                                            \
-_-_-_-                                      Bblock                                                                                     \
-_-_-_-                                      Eblock                                                                                     \
-_-_-_-                                 ETes                                                                                            \
-_-_-_-                                                                                                                                 \
-_-_-_-                                 Test(IFNE_chaine(fichier_des_coordonnees_RAYON,NOM_PIPE_Local))                                 \
-_-_-_-                                      Bblock                                                                                     \
-_-_-_-                                      EGAL(rayon_de_visualisation                                                                \
-_-_-_-                                          ,ELEMENT_DU_FICHIER_COORDONNEES_RAYON(index_definition_arbitraire)                     \
-_-_-_-                                           );                                                                                    \
-_-_-_-                                 /* Introduit le 20240517140948...                                                            */ \
-_-_-_-                                      Eblock                                                                                     \
-_-_-_-                                 ATes                                                                                            \
-_-_-_-                                      Bblock                                                                                     \
-_-_-_-                                      Eblock                                                                                     \
-_-_-_-                                 ETes                                                                                            \
-_-_-_-                                                                                                                                 \
-_-_-_-                                 Test(IFNE_chaine(fichier_des_coordonnees_MASSE,NOM_PIPE_Local))                                 \
-_-_-_-                                      Bblock                                                                                     \
-_-_-_-                                      EGAL(masse_de_la_sphere_courante                                                           \
-_-_-_-                                          ,ELEMENT_DU_FICHIER_COORDONNEES_MASSE(index_definition_arbitraire)                     \
-_-_-_-                                           );                                                                                    \
-_-_-_-                                 /* Introduit le 20240519090955...                                                            */ \
-_-_-_-                                      Eblock                                                                                     \
-_-_-_-                                 ATes                                                                                            \
-_-_-_-                                      Bblock                                                                                     \
-_-_-_-                                      Eblock                                                                                     \
-_-_-_-                                 ETes                                                                                            \
-_-_-_-                                                                                                                                 \
-_-_-_-                                 GENERATION_DU_POINT_uv_COURANT(Fx,Fy,Fz,calcul_eventuel_point_courant,sequence_de_generation);  \
-_-_-_-                                 Eblock                                                                                          \
-_-_-_-                            ATes                                                                                                 \
-_-_-_-                                 Bblock                                                                                          \
-_-_-_-                                 EGAL(recuperer_les_coordonnees_u_v,FAUX);                                                       \
-_-_-_-                                 Eblock                                                                                          \
-_-_-_-                            ETes                                                                                                 \
-_-_-_-                                                                                                                                 \
-_-_-_-                            INCR(index_definition_arbitraire,pas_de_parcours_d_un_fichier);                                      \
-_-_-_-                                                                                                                                 \
-_-_-_-                            Test(IFGT(index_definition_arbitraire,DERNIER_ELEMENT_D_UN_FICHIER))                                 \
-_-_-_-                                 Bblock                                                                                          \
-_-_-_-                                 EGAL(index_definition_arbitraire,PREMIER_ELEMENT_D_UN_FICHIER);                                 \
-_-_-_-                                 EGAL(recuperer_les_coordonnees_u_v,FAUX);                                                       \
-_-_-_-                                 Eblock                                                                                          \
-_-_-_-                            ATes                                                                                                 \
-_-_-_-                                 Bblock                                                                                          \
-_-_-_-                                 Eblock                                                                                          \
-_-_-_-                            ETes                                                                                                 \
-_-_-_-                            Eblock                                                                                               \
-_-_-_-                       ETan                                                                                                      \
-_-_-_-                       Eblock                                                                                                    \
-_-_-_-                  end_nouveau_block                                                                                              \
-_-_-_-                  Eblock
#Eifdef   NE_PAS_PERMETTRE_LA_DEFINITION_ARBITRAIRE_DES_COORDONNEES_U_ET_V

-define   gGENERATION_D_UNE_IMAGE_DE_LA_SURFACE(Fx,Fy,Fz,calcul_eventuel_point_courant,sequence_de_generation)                          \
-_-_-_-             Bblock                                                                                                              \
-_-_-_-             BDEFV(imageI,validation_de_la_projection);                                                                          \
-_-_-_-                                 /* Dispositif de validation de la projection introduit le 20050908115636 et mis ici          */ \
-_-_-_-                                 /* (et donc genere meme s'il n'y a pas de projection) le 20050909135931 afin de simplifier   */ \
-_-_-_-                                 /* et d'integrer le code de validation de la projection au calcul de celle-ci...             */ \
-_-_-_-             DEFINITION_DE__XY__de_projection;                                                                                   \
-_-_-_-                                 /* Pour indexer les trois matrices de projection...                                          */ \
-_-_-_-                                                                                                                                 \
-_-_-_-             DEFV(Float,INIT(differentielle_ROUGE,FLOT__UNDEF));                                                                 \
-_-_-_-             DEFV(Float,INIT(differentielle_VERTE,FLOT__UNDEF));                                                                 \
-_-_-_-             DEFV(Float,INIT(differentielle_BLEUE,FLOT__UNDEF));                                                                 \
-_-_-_-             DEFV(Logical,INIT(utiliser_les_differentielles_ROUGE_VERTE_BLEUE,FAUX));                                            \
-_-_-_-                                 /* Introduit le 20230124142028 car, en effet, les trois differentielles utiles               */ \
-_-_-_-                                 /* {differentielle_x,differentielle_y,differentielle_z} n'existent pas ici, etant            */ \
-_-_-_-                                 /* definies localement ulterieurement...                                                     */ \
-_-_-_-                                                                                                                                 \
-_-_-_-             DEFV(Float,INIT(minimum_de_u_effectif                                                                               \
-_-_-_-                            ,COND(IL_FAUT(generer_les_trois_projections_de_la_surface)                                           \
-_-_-_-                                 ,MINIMUM_DE_u_LORS_D_UNE_PROJECTION                                                             \
-_-_-_-                                 ,minimum_de_u                                                                                   \
-_-_-_-                                  )                                                                                              \
-_-_-_-                             )                                                                                                   \
-_-_-_-                  );                                                                                                             \
-_-_-_-             DEFV(Float,INIT(maximum_de_u_effectif                                                                               \
-_-_-_-                            ,ADD2(COND(IL_FAUT(generer_les_trois_projections_de_la_surface)                                      \
-_-_-_-                                      ,MAXIMUM_DE_u_LORS_D_UNE_PROJECTION                                                        \
-_-_-_-                                      ,maximum_de_u                                                                              \
-_-_-_-                                       )                                                                                         \
-_-_-_-                                 ,COND(IL_FAUT(majoration_du_maximum_des_coordonnees_u_v_____compatibilite_20160414)             \
-_-_-_-                                      ,FZERO                                                                                     \
-_-_-_-                                      ,epsilon_de_majoration_du_maximum_des_coordonnees_u_v                                      \
-_-_-_-                                       )                                                                                         \
-_-_-_-                                  )                                                                                              \
-_-_-_-                             )                                                                                                   \
-_-_-_-                  );                                                                                                             \
-_-_-_-             DEFV(Float,INIT(minimum_de_v_effectif                                                                               \
-_-_-_-                            ,COND(IL_FAUT(generer_les_trois_projections_de_la_surface)                                           \
-_-_-_-                                 ,MINIMUM_DE_v_LORS_D_UNE_PROJECTION                                                             \
-_-_-_-                                 ,minimum_de_v                                                                                   \
-_-_-_-                                  )                                                                                              \
-_-_-_-                             )                                                                                                   \
-_-_-_-                  );                                                                                                             \
-_-_-_-             DEFV(Float,INIT(maximum_de_v_effectif                                                                               \
-_-_-_-                            ,ADD2(COND(IL_FAUT(generer_les_trois_projections_de_la_surface)                                      \
-_-_-_-                                      ,MAXIMUM_DE_v_LORS_D_UNE_PROJECTION                                                        \
-_-_-_-                                      ,maximum_de_v                                                                              \
-_-_-_-                                       )                                                                                         \
-_-_-_-                                 ,COND(IL_FAUT(majoration_du_maximum_des_coordonnees_u_v_____compatibilite_20160414)             \
-_-_-_-                                      ,FZERO                                                                                     \
-_-_-_-                                      ,epsilon_de_majoration_du_maximum_des_coordonnees_u_v                                      \
-_-_-_-                                       )                                                                                         \
-_-_-_-                                  )                                                                                              \
-_-_-_-                             )                                                                                                   \
-_-_-_-                  );                                                                                                             \
-_-_-_-                                 /* Ceci a ete introduit le 20050908130630 apres avoir note, lors de la generation de         */ \
-_-_-_-                                 /* l'image 'v $xiirs/PROJ.81', que la balayage en {u,v} destine a generer les trois          */ \
-_-_-_-                                 /* matrices de projection {Projection_de_Fx,Projection_de_Fy,Projection_de_Fz} laissait      */ \
-_-_-_-                                 /* des "trous" sous la forme d'une ligne (u=1) et une colonne (v=1) non atteinte.            */ \
-_-_-_-                                 /* La solution semble etre d'augmenter dans ce cas les maxima de 'u' et de 'v' et d'indexer  */ \
-_-_-_-                                 /* les trois matrices de projection en entier {X,Y}...                                       */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* 'minimum_de_u_effectif' et 'minimum_de_v_effectif' ont ete introduits le 20060306161232   */ \
-_-_-_-                                 /* pour simplifier 'forcer_les_extrema_de_u_v_lors_de_la_projection_de_la_surface'...        */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* La modification du 20160414102502 vient de l'observation que les 'FDoIn(...)' concernant  */ \
-_-_-_-                                 /* {u,v} qui vont suivre 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' atteint +0.475000                     */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* (voir a ce propos 'v $xtc/test_for_flottant.01$c').                                       */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* Le 20160414145616 fut introduit l'epsilon. On notera au passage qu'il est different de    */ \
-_-_-_-                                 /* de celui de 'v $xrs/volumes.14$I mgEPSILON'...                                            */ \
-_-_-_-             DEFV(Float,INIT(pas_de_u_effectif,DIVI(pas_de_u,diviseur_du_pas_de_u)));                                            \
-_-_-_-             DEFV(Float,INIT(pas_de_v_effectif,DIVI(pas_de_v,diviseur_du_pas_de_v)));                                            \
-_-_-_-                                 /* Afin faciliter l'utilisation de l'echantillonnage, facilite introduite le 20021009100745. */ \
-_-_-_-                                                                                                                                 \
-_-_-_-             DEFINITION_DE__echantillonnage_courant_de_uv;                                                                       \
-_-_-_-                                 /* Afin de gerer l'echantillonnage de 'u' (introduit le 20021008095350 ; voir a ce           */ \
-_-_-_-                                 /* propos 'v $xrs/surfaces.14$I 20021008094407').                                            */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* La translation a ete introduite le 20040330113728 afin de permettre, par sa variation     */ \
-_-_-_-                                 /* (0, 1, 2,...), de faire glisser la grille d'echantillonnage sur la surface...             */ \
-_-_-_-                                                                                                                                 \
-_-_-_-             DEFV(Float,INIT(pas_de_u_de_differentiation,FLOT__UNDEF));                                                          \
-_-_-_-             DEFV(Float,INIT(pas_de_v_de_differentiation,FLOT__UNDEF));                                                          \
-_-_-_-             EGAL(pas_de_u_de_differentiation                                                                                    \
-_-_-_-                 ,DIVI(COND(EST_VRAI(le_pas_de_u_de_differentiation_est_homothetique),pas_de_u_effectif,pas_de_u)                \
-_-_-_-                      ,diviseur_de_differentiation_de_u                                                                          \
-_-_-_-                       )                                                                                                         \
-_-_-_-                  );                                                                                                             \
-_-_-_-             EGAL(pas_de_v_de_differentiation                                                                                    \
-_-_-_-                 ,DIVI(COND(EST_VRAI(le_pas_de_v_de_differentiation_est_homothetique),pas_de_v_effectif,pas_de_v)                \
-_-_-_-                      ,diviseur_de_differentiation_de_v                                                                          \
-_-_-_-                       )                                                                                                         \
-_-_-_-                  );                                                                                                             \
-_-_-_-                                 /* Afin de faire une differentiation approchee (introduit le 20041107145321). On notera que  */ \
-_-_-_-                                 /* cela est definie systematiquement alors que ce n'est evidemment utile que dans la         */ \
-_-_-_-                                 /* procedure 'GENERATION_D_UNE_IMAGE_DE_LA_SURFACE_AVEC_DIFFERENCES____(...)'.               */ \
-_-_-_-                                                                                                                                 \
-_-_-_-             Test(IL_FAUT(generer_les_trois_projections_de_la_surface))                                                          \
-_-_-_-                                 /* Cas ou il faut generer les trois projections (introduit le 20050909135931) :              */ \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  begin_image                                                                                                    \
-_-_-_-                       Bblock                                                                                                    \
-_-_-_-                       storeI_point(ZERO,validation_de_la_projection,X,Y);                                                       \
-_-_-_-                                 /* A priori aucun point ne va etre atteint ci-apres...                                       */ \
-_-_-_-                       Eblock                                                                                                    \
-_-_-_-                  end_image                                                                                                      \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ATes                                                                                                                \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ETes                                                                                                                \
-_-_-_-                                                                                                                                 \
-_-_-_-             Test(IL_FAUT(tracer_une_droite_du_plan_uv))                                                                         \
-_-_-_-                                 /* Test introduit le 20060817180753 et simplifie le 20170210154046...                        */ \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  ACCES_AUX_IMAGES_FLOTTANTES(image_Droite_UV_Definition,nom_imageA_Droite_uv,ZERO_D_UNE_DROITE_DU_PLAN_UV);     \
-_-_-_-                                 /* Initialisation eventuelle et arbitraire de la droite (introduite le 20170210130509)...    */ \
-_-_-_-                                 /* Par defaut, si l'image n'existe pas, il y a compatibilite anterirure...                   */ \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ATes                                                                                                                \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ETes                                                                                                                \
-_-_-_-                                                                                                                                 \
-_-_-_-             Test(I3ET(IL_FAUT(generer_les_trois_projections_de_la_surface)                                                      \
-_-_-_-                      ,IL_FAUT(tracer_une_droite_du_plan_uv)                                                                     \
-_-_-_-                      ,IL_FAUT(visualiser_la_droite_tracee_dans_le_plan_uv)                                                      \
-_-_-_-                       )                                                                                                         \
-_-_-_-                  )                                                                                                              \
-_-_-_-                                 /* Test introduit le 20060817180753...                                                       */ \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  CALi(IFinitialisation(image_Droite_UV_Calculee__,ZERO_D_UNE_DROITE_DU_PLAN_UV));                               \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ATes                                                                                                                \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ETes                                                                                                                \
-_-_-_-                                                                                                                                 \
-_-_-_-             Test(IL_FAUT(definir_arbitrairement_les_coordonnees_u_v))                                                           \
-_-_-_-                                 /* Possibilite introduite le 20221221112338...                                               */ \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  DEFINITION_ARBITRAIRE_DES_COORDONNEES_U_ET_V(Fx,Fy,Fz,calcul_eventuel_point_courant,sequence_de_generation);   \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ATes                                                                                                                \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  DEFINITION_DE__FDoIn_uv                                                                                        \
-_-_-_-                       Bblock                                                                                                    \
-_-_-_-                                 /* Introduit le 20221221102504 pour de simples raisons "esthetiques"...                      */ \
-_-_-_-                       GENERATION_DU_POINT_uv_COURANT(Fx,Fy,Fz,calcul_eventuel_point_courant,sequence_de_generation);            \
-_-_-_-                                 /* Introduit sous cette forme le 20221221111016...                                           */ \
-_-_-_-                       Eblock                                                                                                    \
-_-_-_-                  DEFINITION_DE__EFDoIn_uv                                                                                       \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ETes                                                                                                                \
-_-_-_-                                                                                                                                 \
-_-_-_-             Test(IL_FAUT(generer_les_trois_projections_de_la_surface))                                                          \
-_-_-_-                                 /* Cas ou il faut generer les trois projections (introduit le 20050909135931) :              */ \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  begin_image                                                                                                    \
-_-_-_-                       Bblock                                                                                                    \
-_-_-_-                       Test(IZEQ(loadI_point(validation_de_la_projection,X,Y)))                                                  \
-_-_-_-                            Bblock                                                                                               \
-_-_-_-                            PRINT_ERREUR("un point de la projection n'est pas atteint");                                         \
-_-_-_-                            CAL1(Prer2("il s'agit du point de coordonnees {u,v}={%f,%f}\n"                                       \
-_-_-_-                                      ,_____cNORMALISE_OX(X)                                                                     \
-_-_-_-                                      ,_____cNORMALISE_OY(Y)                                                                     \
-_-_-_-                                       )                                                                                         \
-_-_-_-                                 );                                                                                              \
-_-_-_-                            Eblock                                                                                               \
-_-_-_-                       ATes                                                                                                      \
-_-_-_-                            Bblock                                                                                               \
-_-_-_-                            Eblock                                                                                               \
-_-_-_-                       ETes                                                                                                      \
-_-_-_-                       Eblock                                                                                                    \
-_-_-_-                  end_image                                                                                                      \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ATes                                                                                                                \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ETes                                                                                                                \
-_-_-_-                                                                                                                                 \
-_-_-_-             EDEFV(imageI,validation_de_la_projection);                                                                          \
-_-_-_-                                 /* Dispositif de validation de la projection introduit le 20050908115636...                  */ \
-_-_-_-             Eblock
                                        /* Calcul et visualisation generale de la surface pour un instant donne.                     */

-define   LISTER_EVENTUELLEMENT_LES_COORDONNEES_u_v_DES_POINTS                                                                          \
-_-_-_-             Bblock                                                                                                              \
-_-_-_-             Test(IFET(IL_FAUT(lister_la_liste_des_points)                                                                       \
-_-_-_-                      ,IL_FAUT(lister_les_coordonnees_u_v_des_points)                                                            \
-_-_-_-                                 /* Ceci fut introduit le 20060410110714 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         */ \
-_-_-_-                                 /* edites avant "periode=" pour la raison evoquee dans le commentaire suivant...             */ \
-_-_-_-                       )                                                                                                         \
-_-_-_-                  )                                                                                                              \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  Test(IFET(IZGT(rayon_de_visualisation)                                                                         \
-_-_-_-                           ,IFOU(EST_VRAI(les_trois_les_differentielles_peuvent_etre_nulles)                                     \
-_-_-_-                                ,IFET(EST_FAUX(les_trois_les_differentielles_peuvent_etre_nulles)                                \
-_-_-_-                                     ,IFOU(IL_NE_FAUT_PAS(renormaliser_arbitrairement_derivees)                                  \
-_-_-_-                                          ,IFET(IL_FAUT(renormaliser_arbitrairement_derivees)                                    \
-_-_-_-                                               ,I3OU(IZNE(dcx)                                                                   \
-_-_-_-                                                    ,IZNE(dcy)                                                                   \
-_-_-_-                                                    ,IZNE(dcz)                                                                   \
-_-_-_-                                                     )                                                                           \
-_-_-_-                                                )                                                                                \
-_-_-_-                                           )                                                                                     \
-_-_-_-                                      )                                                                                          \
-_-_-_-                                 )                                                                                               \
-_-_-_-                            )                                                                                                    \
-_-_-_-                       )                                                                                                         \
-_-_-_-                                 /* Ce test est identique a celui de 'v $xrv/champs_5.26$I 20091102125100' et a ete introduit */ \
-_-_-_-                                 /* le 20091102123057 de facon a ne lister {u,v} que si l'on est bien dans les conditions     */ \
-_-_-_-                                 /* de listage des autres donnees type {X,Y,Z}...                                             */ \
-_-_-_-                       Bblock                                                                                                    \
-_-_-_-                       CAL2(Prin2(" U=%+.^^^ V=%+.^^^   "                                                                        \
-_-_-_-                                 ,u_effectif_translate                                                                           \
-_-_-_-                                 ,v_effectif_translate                                                                           \
-_-_-_-                                  )                                                                                              \
-_-_-_-                            );                                                                                                   \
-_-_-_-                                 /* Ceci fut introduit le 20060410103842 afin de permettre de tracer les surfaces via         */ \
-_-_-_-                                 /* 'v $xrv/particule.10$K equidistance=' qui permet de garantir l'equidistance des           */ \
-_-_-_-                                 /* points sur une chaine de connexion contrairement a ce qui est fait ici pour la            */ \
-_-_-_-                                 /* gestion des coordonnees {u,v} qui sont echantillonnees regulierement dans l'espace        */ \
-_-_-_-                                 /* [u,v] et non pas dans l'espace physique [X,Y,Z]. On notera que la logique voudrait que    */ \
-_-_-_-                                 /* cette sequence soit appelee apres l'appel a 'memorisation_1_point_06(...)' mais cela est  */ \
-_-_-_-                                 /* impossible a cause de 'v $xrv/champs_5.11$I LISTER_LA_LISTE_DES_COULEURS_DES_POINTS'      */ \
-_-_-_-                                 /* qui emet un 'K_LF' a la fin ; la sortie de "u=... v=..." aurait donc lieu sur la ligne    */ \
-_-_-_-                                 /* suivante...                                                                               */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* Malheureusement l'usage de 'v $xrv/particule.10$K equidistance=' ne disposera pas les     */ \
-_-_-_-                                 /* points intermediaires des chaines de connexion selon les equations de la surface, mais    */ \
-_-_-_-                                 /* selon le schema d'interpolation utilise. L'apparence de la surface ne sera donc en        */ \
-_-_-_-                                 /* general pas correcte (phenomene decouvert le 20060410151148)...                           */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* Le 20090619091246, un espace fut introduit devant l'edition de "U=" afin d'homogeniser    */ \
-_-_-_-                                 /* le traitement des listes ainsi editees ('v $xiirs/.CAYA.E1.1.$U :U="'), l'extraction      */ \
-_-_-_-                                 /* de la coordonnee 'U' se faisant alors comme pour 'V', 'X', 'Y', 'Z',... et donc en        */ \
-_-_-_-                                 /* testant un espace devant et un "=" derriere...                                            */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* Le 20091123123454, le format "^^g" est passe a "^^^" pour plus de souplesse...            */ \
-_-_-_-                       Eblock                                                                                                    \
-_-_-_-                  ATes                                                                                                           \
-_-_-_-                       Bblock                                                                                                    \
-_-_-_-                       Eblock                                                                                                    \
-_-_-_-                  ETes                                                                                                           \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ATes                                                                                                                \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ETes                                                                                                                \
-_-_-_-             Eblock
                                        /* Listage des coordonnees {u,v} des points introduit le 20060410105510...                   */

-define   GENERATION_D_UNE_IMAGE_DE_LA_SURFACE_SANS_DIFFERENTIATION(Fx,Fy,Fz,calcul_eventuel_point_courant)                             \
-_-_-_-             Bblock                                                                                                              \
-_-_-_-             DEFV(Float,INIT(d_u,FLOT__UNDEF));                                                                                  \
-_-_-_-             DEFV(Float,INIT(d_v,FLOT__UNDEF));                                                                                  \
-_-_-_-                                 /* Ces definitions n'ont comme seule utilite que d'eviter des problemes de compilation       */ \
-_-_-_-                                 /* suite a la definition de {d_u_effectif,d_v_effectif} le 20060117130150 dans la procedure  */ \
-_-_-_-                                 /* 'gGENERATION_D_UNE_IMAGE_DE_LA_SURFACE(...)'...                                           */ \
-_-_-_-                                                                                                                                 \
-_-_-_-             gGENERATION_D_UNE_IMAGE_DE_LA_SURFACE                                                                               \
-_-_-_-                 (Fx,Fy,Fz                                                                                                       \
-_-_-_-                 ,BLOC(calcul_eventuel_point_courant)                                                                            \
-_-_-_-                 ,BLOC(Bblock                                                                                                    \
-_-_-_-                       GENERATION_DU_TEXTURAGE_DE_LA_SURFACE(dcx,dcy,dcz);                                                       \
-_-_-_-                                 /* Calcul des textures en passant de {mu,Mu}x{mv,Mv} a {Xmin,Xmax}x{Ymin,Ymax}.              */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                       RECHERCHE_DES_EXTREMA_DES_COORDONNEES_ET_DES_DERIVEES;                                                    \
-_-_-_-                                 /* On notera que cette recherche n'est pas conditionnee par 'editer_les_extrema', car les    */ \
-_-_-_-                                 /* extrema pourraient etre utilises pour la visualisation...                                 */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                       BLOC(calcul_eventuel_point_courant);                                                                      \
-_-_-_-                                 /* Calculs eventuels d'informations specifiques au point courant...                          */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                       PERMUTATION_EVENTUELLE_DES_COORDONNEES_ET_DES_DIFFERENTIELLES;                                            \
-_-_-_-                                 /* Permutation eventuelle de {cx,cy,cz} et de {dcx,dcy,dcz} (introduit le 20050615083227).   */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                       LISTER_EVENTUELLEMENT_LES_COORDONNEES_u_v_DES_POINTS;                                                     \
-_-_-_-                                 /* Introduit le 20060410105510...                                                            */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                       CALS(memorisation_1_point_06(SOUS(cx,Xcentre_ESPACE)                                                      \
-_-_-_-                                                   ,SOUS(cy,Ycentre_ESPACE)                                                      \
-_-_-_-                                                   ,SOUS(cz,Zcentre_ESPACE)                                                      \
-_-_-_-                                                   ,dcx                                                                          \
-_-_-_-                                                   ,dcy                                                                          \
-_-_-_-                                                   ,dcz                                                                          \
-_-_-_-                                                    )                                                                            \
-_-_-_-                            );                                                                                                   \
-_-_-_-                                 /* Memorisation du point courant.                                                            */ \
-_-_-_-                       Eblock                                                                                                    \
-_-_-_-                       )                                                                                                         \
-_-_-_-                  )                                                                                                              \
-_-_-_-             Eblock
                                        /* Calcul et visualisation de la surface pour un instant donne sans differentiation.         */

-define   MEMORISATION_DU_POINT_COURANT_ET_DE_SA_NORMALE_EVENTUELLE(calcul_eventuel_point_courant,calcul_eventuel_derivees_partielles)  \
-_-_-_-             Bblock                                                                                                              \
-_-_-_-                                 /* La possibilite 'prendre_la_valeur_absolue_des_differentielles' introduite le              */ \
-_-_-_-                                 /* 20060131120200 a ete transferee vers 'v $xrk/attractor.1C$I 20060201095118' le            */ \
-_-_-_-                                 /* 20060201094919 pour en augmenter la portee...                                             */ \
-_-_-_-                                                                                                                                 \
-_-_-_-             RECHERCHE_DES_EXTREMA_DES_COORDONNEES_ET_DES_DERIVEES;                                                              \
-_-_-_-                                 /* On notera que cette recherche n'est pas conditionnee par 'editer_les_extrema', car les    */ \
-_-_-_-                                 /* extrema pourraient etre utilises pour la visualisation...                                 */ \
-_-_-_-                                                                                                                                 \
-_-_-_-             BLOC(calcul_eventuel_point_courant);                                                                                \
-_-_-_-                                 /* Calculs eventuels d'informations specifiques au point courant...                          */ \
-_-_-_-                                                                                                                                 \
-_-_-_-             Test(IFOU(IL_NE_FAUT_PAS(visualiser_la_normale)                                                                     \
-_-_-_-                      ,IFET(IL_FAUT(visualiser_la_normale)                                                                       \
-_-_-_-                           ,IFOU(NON_DIVISIBLE(echantillonnage_courant_de_u,echantillonnage_de_u)                                \
-_-_-_-                                ,NON_DIVISIBLE(echantillonnage_courant_de_v,echantillonnage_de_v)                                \
-_-_-_-                                 )                                                                                               \
-_-_-_-                            )                                                                                                    \
-_-_-_-                       )                                                                                                         \
-_-_-_-                  )                                                                                                              \
-_-_-_-                                 /* La visualisation de la normale uniquement aux noeuds du maillage defini par               */ \
-_-_-_-                                 /* l'echantillonnage de {u,v} a ete introduit le 20021010120751.                             */ \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  PERMUTATION_EVENTUELLE_DES_COORDONNEES_ET_DES_DIFFERENTIELLES;                                                 \
-_-_-_-                                 /* Permutation eventuelle de {cx,cy,cz} et de {dcx,dcy,dcz} (introduit le 20050615083227).   */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                  LISTER_EVENTUELLEMENT_LES_COORDONNEES_u_v_DES_POINTS;                                                          \
-_-_-_-                                 /* Introduit le 20060410105510...                                                            */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                  CALS(memorisation_1_point_06(SOUS(cx,Xcentre_ESPACE)                                                           \
-_-_-_-                                              ,SOUS(cy,Ycentre_ESPACE)                                                           \
-_-_-_-                                              ,SOUS(cz,Zcentre_ESPACE)                                                           \
-_-_-_-                                              ,dcx                                                                               \
-_-_-_-                                              ,dcy                                                                               \
-_-_-_-                                              ,dcz                                                                               \
-_-_-_-                                               )                                                                                 \
-_-_-_-                       );                                                                                                        \
-_-_-_-                                 /* Memorisation du point courant. On notera que le coloriage pourrait aussi se faire a       */ \
-_-_-_-                                 /* a l'aide des derivees d'ordre superieur, et par exemple :                                 */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  EGAL(d2cx,d#d#Fx(u_effectif,v_effectif));                                */ \
-_-_-_-                                 /*                  EGAL(d2cy,d#d#Fy(u_effectif,v_effectif));                                */ \
-_-_-_-                                 /*                  EGAL(d2cz,d#d#Fz(u_effectif,v_effectif));                                */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* On fera alors attention a la fonction de passage des derivees aux couleurs qui utilise    */ \
-_-_-_-                                 /* les parametres du type 'd?min_ESPACE' et 'd?max_ESPACE' ; les valeurs de ces derniers     */ \
-_-_-_-                                 /* sont evaluees pour les derivees premieres. Un passage aux derivees d'ordre superieur      */ \
-_-_-_-                                 /* impliquerait une modification de ces parametres, ou bien de la dite fonction...           */ \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ATes                                                                                                                \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  DEFV(Float,INIT(EnTete_de_sauvegardM ## d_u,d_u_effectif));                                                    \
-_-_-_-                  DEFV(Float,INIT(EnTete_de_sauvegardM ## d_v,d_v_effectif));                                                    \
-_-_-_-                  DEFV(Float,INIT(EnTete_de_sauvegardM ## rayon_de_visualisation,rayon_de_visualisation));                       \
-_-_-_-                                 /* Sauvegarde de ce que l'on va modifier...                                                  */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                  DEFV(Float,INIT(dXdu,FLOT__UNDEF));                                                                            \
-_-_-_-                  DEFV(Float,INIT(dXdv,FLOT__UNDEF));                                                                            \
-_-_-_-                  DEFV(Float,INIT(dYdu,FLOT__UNDEF));                                                                            \
-_-_-_-                  DEFV(Float,INIT(dYdv,FLOT__UNDEF));                                                                            \
-_-_-_-                  DEFV(Float,INIT(dZdu,FLOT__UNDEF));                                                                            \
-_-_-_-                  DEFV(Float,INIT(dZdv,FLOT__UNDEF));                                                                            \
-_-_-_-                                 /* Afin de calculer les six derivees partielles...                                           */ \
-_-_-_-                  DEFV(deltaF_3D,normale);                                                                                       \
-_-_-_-                  DEFV(Float,INIT(module_normale,FLOT__UNDEF));                                                                  \
-_-_-_-                                 /* Normale au point courant et son module...                                                 */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                  DEFV(Float,INIT(Acx,FLOT__UNDEF));                                                                             \
-_-_-_-                  DEFV(Float,INIT(Acy,FLOT__UNDEF));                                                                             \
-_-_-_-                  DEFV(Float,INIT(Acz,FLOT__UNDEF));                                                                             \
-_-_-_-                  DEFV(Float,INIT(Adcx,FLOT__UNDEF));                                                                            \
-_-_-_-                  DEFV(Float,INIT(Adcy,FLOT__UNDEF));                                                                            \
-_-_-_-                  DEFV(Float,INIT(Adcz,FLOT__UNDEF));                                                                            \
-_-_-_-                  DEFV(Float,INIT(Arayon_de_visualisation,FLOT__UNDEF));                                                         \
-_-_-_-                                 /* Pour sauvegarder les caracteristiques du point 'A'.                                       */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                  DEFV(Float,INIT(Bcx,FLOT__UNDEF));                                                                             \
-_-_-_-                  DEFV(Float,INIT(Bcy,FLOT__UNDEF));                                                                             \
-_-_-_-                  DEFV(Float,INIT(Bcz,FLOT__UNDEF));                                                                             \
-_-_-_-                  DEFV(Float,INIT(Bdcx,FLOT__UNDEF));                                                                            \
-_-_-_-                  DEFV(Float,INIT(Bdcy,FLOT__UNDEF));                                                                            \
-_-_-_-                  DEFV(Float,INIT(Bdcz,FLOT__UNDEF));                                                                            \
-_-_-_-                  DEFV(Float,INIT(Brayon_de_visualisation,FLOT__UNDEF));                                                         \
-_-_-_-                                 /* Pour sauvegarder les caracteristiques du point 'B'.                                       */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                  BLOC(calcul_eventuel_derivees_partielles);                                                                     \
-_-_-_-                                 /* Calcul des derivees partielles...                                                         */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                  INITIALISATION_ACCROISSEMENT_3D(normale                                                                        \
-_-_-_-                                                 ,PvectX(dXdu,dYdu,dZdu                                                          \
-_-_-_-                                                        ,dXdv,dYdv,dZdv                                                          \
-_-_-_-                                                         )                                                                       \
-_-_-_-                                                 ,PvectY(dXdu,dYdu,dZdu                                                          \
-_-_-_-                                                        ,dXdv,dYdv,dZdv                                                          \
-_-_-_-                                                         )                                                                       \
-_-_-_-                                                 ,PvectZ(dXdu,dYdu,dZdu                                                          \
-_-_-_-                                                        ,dXdv,dYdv,dZdv                                                          \
-_-_-_-                                                         )                                                                       \
-_-_-_-                                                  );                                                                             \
-_-_-_-                                 /* Calcul de la normale :                                                                    */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  X(N)=(((dY/du)*(dZ/dv))-((dZ/du)*(dY/dv))),                              */ \
-_-_-_-                                 /*                  Y(N)=(((dZ/du)*(dX/dv))-((dX/du)*(dZ/dv))),                              */ \
-_-_-_-                                 /*                  Z(N)=(((dX/du)*(dY/dv))-((dY/du)*(dX/dv))).                              */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                  gNORMALISATION_ACCROISSEMENT_3D(normale,facteur_de_la_normale);                                                \
-_-_-_-                                 /* Et enfin, normalisation (j'ai introduit 'NORMALISATION_ACCROISSEMENT_3D(...)' le          */ \
-_-_-_-                                 /* 20021007135953, c'est-a-dire avec beaucoup de retard ; mais il a fallu pour cela          */ \
-_-_-_-                                 /* creer 'gNORMALISATION_ACCROISSEMENT_3D(...)' a cause de 'facteur_de_la_normale').         */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                  EGAL(Acx,NEUT(cx));                                                                                            \
-_-_-_-                  EGAL(Acy,NEUT(cy));                                                                                            \
-_-_-_-                  EGAL(Acz,NEUT(cz));                                                                                            \
-_-_-_-                  EGAL(Adcx                                                                                                      \
-_-_-_-                      ,NEUT(BAR4(dcx,FZERO,dXdu,niveau_ROUGE_pour_la_normale                                                     \
-_-_-_-                                ,ponderation1_ROUGE_pour_la_normale,ponderation2_ROUGE_pour_la_normale                           \
-_-_-_-                                 )                                                                                               \
-_-_-_-                            )                                                                                                    \
-_-_-_-                       );                                                                                                        \
-_-_-_-                  EGAL(Adcy                                                                                                      \
-_-_-_-                      ,NEUT(BAR4(dcy,FZERO,dYdu,niveau_VERTE_pour_la_normale                                                     \
-_-_-_-                                ,ponderation1_VERTE_pour_la_normale,ponderation2_VERTE_pour_la_normale                           \
-_-_-_-                                 )                                                                                               \
-_-_-_-                            )                                                                                                    \
-_-_-_-                       );                                                                                                        \
-_-_-_-                  EGAL(Adcz                                                                                                      \
-_-_-_-                      ,NEUT(BAR4(dcz,FZERO,dZdu,niveau_BLEUE_pour_la_normale                                                     \
-_-_-_-                                ,ponderation1_BLEUE_pour_la_normale,ponderation2_BLEUE_pour_la_normale                           \
-_-_-_-                                 )                                                                                               \
-_-_-_-                            )                                                                                                    \
-_-_-_-                       );                                                                                                        \
-_-_-_-                  EGAL(Arayon_de_visualisation                                                                                   \
-_-_-_-                      ,NEUT(rayon_de_visualisation)                                                                              \
-_-_-_-                       );                                                                                                        \
-_-_-_-                                 /* Memorisation du point 'A'. On notera le remplacement de 'BARY(...)' par 'BAR2(...)'       */ \
-_-_-_-                                 /* le 20060207104301 par symetrie avec l'introduction de 'BAR4(...)' ci-apres...             */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* Note sur le coloriage : en notant respectivement {p1,p2} les deux ponderations            */ \
-_-_-_-                                 /* {ponderation1_?????_pour_la_normale,ponderation2_?????_pour_la_normale}, on a les         */ \
-_-_-_-                                 /* quatre cas simples suivants :                                                             */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*        (p1=0,p2=0)       : uniformement avec {dcx,dcy,dcz},                               */ \
-_-_-_-                                 /*        (p1=0,p2=1)       : 0,                                                             */ \
-_-_-_-                                 /*        (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...                     */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* On notera le 'FZERO' de 'BAR4(...)' destine a faire en sorte que les valeurs par defaut   */ \
-_-_-_-                                 /* des valeurs par defaut des ponderations ; en particulier, la compatibilite anterieure     */ \
-_-_-_-                                 /* se fait via la valeur '0' ou '1' de 'p1', avec 'p2=0'...                                  */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                  EGAL(Bcx,ADD2(cx,ASD1(normale,dx)));                                                                           \
-_-_-_-                  EGAL(Bcy,ADD2(cy,ASD1(normale,dy)));                                                                           \
-_-_-_-                  EGAL(Bcz,ADD2(cz,ASD1(normale,dz)));                                                                           \
-_-_-_-                  EGAL(Bdcx                                                                                                      \
-_-_-_-                      ,MUL2(facteur_du_ROUGE_pour_la_normale                                                                     \
-_-_-_-                           ,BAR4(dcx,FZERO,dXdv,niveau_ROUGE_pour_la_normale                                                     \
-_-_-_-                                ,ponderation1_ROUGE_pour_la_normale,ponderation2_ROUGE_pour_la_normale                           \
-_-_-_-                                 )                                                                                               \
-_-_-_-                            )                                                                                                    \
-_-_-_-                       );                                                                                                        \
-_-_-_-                  EGAL(Bdcy                                                                                                      \
-_-_-_-                      ,MUL2(facteur_du_VERTE_pour_la_normale                                                                     \
-_-_-_-                           ,BAR4(dcy,FZERO,dYdv,niveau_VERTE_pour_la_normale                                                     \
-_-_-_-                                ,ponderation1_VERTE_pour_la_normale,ponderation2_VERTE_pour_la_normale                           \
-_-_-_-                                 )                                                                                               \
-_-_-_-                            )                                                                                                    \
-_-_-_-                       );                                                                                                        \
-_-_-_-                  EGAL(Bdcz                                                                                                      \
-_-_-_-                      ,MUL2(facteur_du_BLEUE_pour_la_normale                                                                     \
-_-_-_-                           ,BAR4(dcz,FZERO,dZdv,niveau_BLEUE_pour_la_normale                                                     \
-_-_-_-                                ,ponderation1_BLEUE_pour_la_normale,ponderation2_BLEUE_pour_la_normale                           \
-_-_-_-                                 )                                                                                               \
-_-_-_-                            )                                                                                                    \
-_-_-_-                       );                                                                                                        \
-_-_-_-                  EGAL(Brayon_de_visualisation                                                                                   \
-_-_-_-                      ,MUL2(facteur_du_rayon_de_visualisation_pour_la_normale,rayon_de_visualisation)                            \
-_-_-_-                       );                                                                                                        \
-_-_-_-                                 /* Memorisation du point 'B'...                                                              */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                  Repe(nombre_absolu_de_points_sur_une_normale)                                                                  \
-_-_-_-                       Bblock                                                                                                    \
-_-_-_-                       DEFV(Float,INIT(lambda                                                                                    \
-_-_-_-                                      ,ADD2(COORDONNEE_BARYCENTRIQUE_MINIMALE                                                    \
-_-_-_-                                           ,SCAL(SOUS(compteur_des_repetitions_du_Repe                                           \
-_-_-_-                                                     ,PREMIERE_ITERATION_D_UN_Repe                                               \
-_-_-_-                                                      )                                                                          \
-_-_-_-                                                ,SOUS(nombre_absolu_de_points_sur_une_normale                                    \
-_-_-_-                                                     ,PREMIERE_ITERATION_D_UN_Repe                                               \
-_-_-_-                                                      )                                                                          \
-_-_-_-                                                ,SOUS(COORDONNEE_BARYCENTRIQUE_MAXIMALE                                          \
-_-_-_-                                                     ,COORDONNEE_BARYCENTRIQUE_MINIMALE                                          \
-_-_-_-                                                      )                                                                          \
-_-_-_-                                                 )                                                                               \
-_-_-_-                                            )                                                                                    \
-_-_-_-                                       )                                                                                         \
-_-_-_-                            );                                                                                                   \
-_-_-_-                                 /* Definition de la coordonnee barycentrique d'interpolation des coordonnees et des          */ \
-_-_-_-                                 /* couleurs des points de l'espace.                                                          */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                       EGAL(cx,BARY(Acx,Bcx,lambda));                                                                            \
-_-_-_-                       EGAL(cy,BARY(Acy,Bcy,lambda));                                                                            \
-_-_-_-                       EGAL(cz,BARY(Acz,Bcz,lambda));                                                                            \
-_-_-_-                                 /* Recuperation de la position du point courant (cx,cy,cz)...                                */ \
-_-_-_-                       EGAL(dcx,BARY(Adcx,Bdcx,lambda));                                                                         \
-_-_-_-                       EGAL(dcy,BARY(Adcy,Bdcy,lambda));                                                                         \
-_-_-_-                       EGAL(dcz,BARY(Adcz,Bdcz,lambda));                                                                         \
-_-_-_-                                 /* Forcage arbitraire des derivees (dcx,dcy,dcz) au point courant.                           */ \
-_-_-_-                       EGAL(rayon_de_visualisation                                                                               \
-_-_-_-                           ,BARY(Arayon_de_visualisation,Brayon_de_visualisation,lambda)                                         \
-_-_-_-                            );                                                                                                   \
-_-_-_-                                 /* Et calcul du rayon de visualisation...                                                    */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                       PERMUTATION_EVENTUELLE_DES_COORDONNEES_ET_DES_DIFFERENTIELLES;                                            \
-_-_-_-                                 /* Permutation eventuelle de {cx,cy,cz} et de {dcx,dcy,dcz} (introduit le 20050615083227).   */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                       LISTER_EVENTUELLEMENT_LES_COORDONNEES_u_v_DES_POINTS;                                                     \
-_-_-_-                                 /* Introduit le 20060410105510...                                                            */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                       CALS(memorisation_1_point_06(SOUS(cx,Xcentre_ESPACE)                                                      \
-_-_-_-                                                   ,SOUS(cy,Ycentre_ESPACE)                                                      \
-_-_-_-                                                   ,SOUS(cz,Zcentre_ESPACE)                                                      \
-_-_-_-                                                   ,dcx                                                                          \
-_-_-_-                                                   ,dcy                                                                          \
-_-_-_-                                                   ,dcz                                                                          \
-_-_-_-                                                    )                                                                            \
-_-_-_-                            );                                                                                                   \
-_-_-_-                                 /* Memorisation du point courant de la normale...                                            */ \
-_-_-_-                       Eblock                                                                                                    \
-_-_-_-                  ERep                                                                                                           \
-_-_-_-                                                                                                                                 \
-_-_-_-                  EGAL(d_u_effectif,EnTete_de_sauvegardM ## d_u);                                                                \
-_-_-_-                  EGAL(d_v_effectif,EnTete_de_sauvegardM ## d_v);                                                                \
-_-_-_-                  EGAL(rayon_de_visualisation,EnTete_de_sauvegardM ## rayon_de_visualisation);                                   \
-_-_-_-                                 /* Et enfin restaurations necessaires...                                                     */ \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ETes                                                                                                                \
-_-_-_-             Eblock
                                        /* Memorisation du point courant et eventuellement de sa normale. Ceci fut introduit le      */
                                        /* 20060130085630 pour 'v $xrs/project2D.11$K VISUALISATION_DE_LA_SURFACE_AVEC_DIFFERENCES'  */
                                        /* principalement...                                                                         */

-define   CALCUL_DE_dF_SUR_du____12(fonction)                                                                                           \
-_-_-_-             DERIVATION_PARTIELLE(fonction(SOUS(u_effectif,pas_de_u_de_differentiation)                                          \
-_-_-_-                                          ,NEUT(v_effectif)                                                                      \
-_-_-_-                                           )                                                                                     \
-_-_-_-                                 ,fonction(ADD2(u_effectif,pas_de_u_de_differentiation)                                          \
-_-_-_-                                          ,NEUT(v_effectif)                                                                      \
-_-_-_-                                           )                                                                                     \
-_-_-_-                                 ,DOUB(pas_de_u_de_differentiation)                                                              \
-_-_-_-                                  )
-define   CALCUL_DE_dF_SUR____dv_12(fonction)                                                                                           \
-_-_-_-             DERIVATION_PARTIELLE(fonction(NEUT(u_effectif)                                                                      \
-_-_-_-                                          ,SOUS(v_effectif,pas_de_v_de_differentiation)                                          \
-_-_-_-                                           )                                                                                     \
-_-_-_-                                 ,fonction(NEUT(u_effectif)                                                                      \
-_-_-_-                                          ,ADD2(v_effectif,pas_de_v_de_differentiation)                                          \
-_-_-_-                                           )                                                                                     \
-_-_-_-                                 ,DOUB(pas_de_v_de_differentiation)                                                              \
-_-_-_-                                  )
-define   CALCUL_DE_dF_SUR_du_dv_12(fonction)                                                                                           \
-_-_-_-             DERIVATION_PARTIELLE(fonction(SOUS(u_effectif,pas_de_u_de_differentiation)                                          \
-_-_-_-                                          ,SOUS(v_effectif,pas_de_v_de_differentiation)                                          \
-_-_-_-                                           )                                                                                     \
-_-_-_-                                 ,fonction(ADD2(u_effectif,pas_de_u_de_differentiation)                                          \
-_-_-_-                                          ,ADD2(v_effectif,pas_de_v_de_differentiation)                                          \
-_-_-_-                                           )                                                                                     \
-_-_-_-                                 ,DOUB(GpytF2D(pas_de_u_de_differentiation,pas_de_v_de_differentiation))                         \
-_-_-_-                                  )
                                        /* Pour calculer les derivees partielles par differences (introduit le 20041118144531).      */
                                        /*                                                                                           */
                                        /* Le 20060130085630 les noms 'DIFFERENTIELLE_DES_FONCTIONS_F_PAR_RAPPORT_A_?_?_12(...)'     */
                                        /* ont ete raccourcis en 'CALCUL_DE_dF_SUR_??_??_12(...)' pour des raisons de mise en        */
                                        /* page ; on notera au passage que le '12' semble etre lie au nom du present fichier         */
                                        /* ('v $xrs/surfaces.12$I')...                                                               */

-define   GENERATION_D_UNE_IMAGE_DE_LA_SURFACE_AVEC_DIFFERENCES____(Fx,Fy,Fz,calcul_eventuel_point_courant)                             \
-_-_-_-             Bblock                                                                                                              \
-_-_-_-             gGENERATION_D_UNE_IMAGE_DE_LA_SURFACE                                                                               \
-_-_-_-                 (Fx,Fy,Fz                                                                                                       \
-_-_-_-                 ,BLOC(calcul_eventuel_point_courant)                                                                            \
-_-_-_-                 ,BLOC(Bblock                                                                                                    \
-_-_-_-                       DEFV(Float,INIT(differentielle_x,FLOT__UNDEF));                                                           \
-_-_-_-                       DEFV(Float,INIT(differentielle_y,FLOT__UNDEF));                                                           \
-_-_-_-                       DEFV(Float,INIT(differentielle_z,FLOT__UNDEF));                                                           \
-_-_-_-                                 /* Definition des trois differentielles.                                                     */ \
-_-_-_-                       DEFV(Float,INIT(valeur_de_dF_sur_du____12__Fx,CALCUL_DE_dF_SUR_du____12(Fx)));                            \
-_-_-_-                       DEFV(Float,INIT(valeur_de_dF_sur_du____12__Fy,CALCUL_DE_dF_SUR_du____12(Fy)));                            \
-_-_-_-                       DEFV(Float,INIT(valeur_de_dF_sur_du____12__Fz,CALCUL_DE_dF_SUR_du____12(Fz)));                            \
-_-_-_-                       DEFV(Float,INIT(valeur_de_dF_sur____dv_12__Fx,CALCUL_DE_dF_SUR____dv_12(Fx)));                            \
-_-_-_-                       DEFV(Float,INIT(valeur_de_dF_sur____dv_12__Fy,CALCUL_DE_dF_SUR____dv_12(Fy)));                            \
-_-_-_-                       DEFV(Float,INIT(valeur_de_dF_sur____dv_12__Fz,CALCUL_DE_dF_SUR____dv_12(Fz)));                            \
-_-_-_-                       DEFV(Float,INIT(valeur_de_dF_sur_du_dv_12__Fx,CALCUL_DE_dF_SUR_du_dv_12(Fx)));                            \
-_-_-_-                       DEFV(Float,INIT(valeur_de_dF_sur_du_dv_12__Fy,CALCUL_DE_dF_SUR_du_dv_12(Fy)));                            \
-_-_-_-                       DEFV(Float,INIT(valeur_de_dF_sur_du_dv_12__Fz,CALCUL_DE_dF_SUR_du_dv_12(Fz)));                            \
-_-_-_-                                 /* Optimisation introduite le 20071204152647 lors des tentatives sur '$LACT18' pour faire    */ \
-_-_-_-                                 /* disparaitre le probleme :                                                                 */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  internal compiler error: in add_stack_var_conflict, at cfgexpand.c:264   */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* lors de la compilation de 'v $xrs/CalabiYau.21$K'. Et bien oui, c'etait la solution a     */ \
-_-_-_-                                 /* ce probleme : il fallait simplifier les expressions generees...                           */ \
-_-_-_-                       DEFV(Float,INIT(texture_x,FLOT__UNDEF));                                                                  \
-_-_-_-                       DEFV(Float,INIT(texture_y,FLOT__UNDEF));                                                                  \
-_-_-_-                       DEFV(Float,INIT(texture_z,FLOT__UNDEF));                                                                  \
-_-_-_-                                 /* Definition des trois textures.                                                            */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                       Test(IL_FAUT(utiliser_les_differentielles_ROUGE_VERTE_BLEUE))                                             \
-_-_-_-                                 /* Possibilite introduite le 20230125094726...                                               */ \
-_-_-_-                            Bblock                                                                                               \
-_-_-_-                            EGAL(differentielle_x,differentielle_ROUGE);                                                         \
-_-_-_-                            EGAL(differentielle_y,differentielle_VERTE);                                                         \
-_-_-_-                            EGAL(differentielle_z,differentielle_BLEUE);                                                         \
-_-_-_-                                                                                                                                 \
-_-_-_-                            EGAL(utiliser_les_differentielles_ROUGE_VERTE_BLEUE,FAUX);                                           \
-_-_-_-                                 /* Ne sert a rien, mais c'est plus sur...                                                    */ \
-_-_-_-                            Eblock                                                                                               \
-_-_-_-                       ATes                                                                                                      \
-_-_-_-                            Bblock                                                                                               \
-_-_-_-                            EGAL(differentielle_x                                                                                \
-_-_-_-                                ,LIZ14(ponderation_de__u_____dans_dx                                                             \
-_-_-_-                                      ,COND(IL_FAUT(calcul_des_differentielles_avec_u_v_____compatibilite_2009110217)            \
-_-_-_-                                           ,u                                                                                    \
-_-_-_-                                           ,u_effectif_translate                                                                 \
-_-_-_-                                            )                                                                                    \
-_-_-_-                                      ,ponderation_de__v_____dans_dx                                                             \
-_-_-_-                                      ,COND(IL_FAUT(calcul_des_differentielles_avec_u_v_____compatibilite_2009110217)            \
-_-_-_-                                           ,v                                                                                    \
-_-_-_-                                           ,v_effectif_translate                                                                 \
-_-_-_-                                            )                                                                                    \
-_-_-_-                                      ,ponderation_de_Fx_____dans_dx,cx                                                          \
-_-_-_-                                      ,ponderation_de_Fx_u___dans_dx,valeur_de_dF_sur_du____12__Fx                               \
-_-_-_-                                      ,ponderation_de_Fx___v_dans_dx,valeur_de_dF_sur____dv_12__Fx                               \
-_-_-_-                                      ,ponderation_de_Fx_u_v_dans_dx,valeur_de_dF_sur_du_dv_12__Fx                               \
-_-_-_-                                      ,ponderation_de_Fy_____dans_dx,cy                                                          \
-_-_-_-                                      ,ponderation_de_Fy_u___dans_dx,valeur_de_dF_sur_du____12__Fy                               \
-_-_-_-                                      ,ponderation_de_Fy___v_dans_dx,valeur_de_dF_sur____dv_12__Fy                               \
-_-_-_-                                      ,ponderation_de_Fy_u_v_dans_dx,valeur_de_dF_sur_du_dv_12__Fy                               \
-_-_-_-                                      ,ponderation_de_Fz_____dans_dx,cz                                                          \
-_-_-_-                                      ,ponderation_de_Fz_u___dans_dx,valeur_de_dF_sur_du____12__Fz                               \
-_-_-_-                                      ,ponderation_de_Fz___v_dans_dx,valeur_de_dF_sur____dv_12__Fz                               \
-_-_-_-                                      ,ponderation_de_Fz_u_v_dans_dx,valeur_de_dF_sur_du_dv_12__Fz                               \
-_-_-_-                                       )                                                                                         \
-_-_-_-                                 );                                                                                              \
-_-_-_-                            EGAL(differentielle_y                                                                                \
-_-_-_-                                ,LIZ14(ponderation_de__u_____dans_dy                                                             \
-_-_-_-                                      ,COND(IL_FAUT(calcul_des_differentielles_avec_u_v_____compatibilite_2009110217)            \
-_-_-_-                                           ,u                                                                                    \
-_-_-_-                                           ,u_effectif_translate                                                                 \
-_-_-_-                                            )                                                                                    \
-_-_-_-                                      ,ponderation_de__v_____dans_dy                                                             \
-_-_-_-                                      ,COND(IL_FAUT(calcul_des_differentielles_avec_u_v_____compatibilite_2009110217)            \
-_-_-_-                                           ,v                                                                                    \
-_-_-_-                                           ,v_effectif_translate                                                                 \
-_-_-_-                                            )                                                                                    \
-_-_-_-                                      ,ponderation_de_Fx_____dans_dy,cx                                                          \
-_-_-_-                                      ,ponderation_de_Fx_u___dans_dy,valeur_de_dF_sur_du____12__Fx                               \
-_-_-_-                                      ,ponderation_de_Fx___v_dans_dy,valeur_de_dF_sur____dv_12__Fx                               \
-_-_-_-                                      ,ponderation_de_Fx_u_v_dans_dy,valeur_de_dF_sur_du_dv_12__Fx                               \
-_-_-_-                                      ,ponderation_de_Fy_____dans_dy,cy                                                          \
-_-_-_-                                      ,ponderation_de_Fy_u___dans_dy,valeur_de_dF_sur_du____12__Fy                               \
-_-_-_-                                      ,ponderation_de_Fy___v_dans_dy,valeur_de_dF_sur____dv_12__Fy                               \
-_-_-_-                                      ,ponderation_de_Fy_u_v_dans_dy,valeur_de_dF_sur_du_dv_12__Fy                               \
-_-_-_-                                      ,ponderation_de_Fz_____dans_dy,cz                                                          \
-_-_-_-                                      ,ponderation_de_Fz_u___dans_dy,valeur_de_dF_sur_du____12__Fz                               \
-_-_-_-                                      ,ponderation_de_Fz___v_dans_dy,valeur_de_dF_sur____dv_12__Fz                               \
-_-_-_-                                      ,ponderation_de_Fz_u_v_dans_dy,valeur_de_dF_sur_du_dv_12__Fz                               \
-_-_-_-                                       )                                                                                         \
-_-_-_-                                 );                                                                                              \
-_-_-_-                            EGAL(differentielle_z                                                                                \
-_-_-_-                                ,LIZ14(ponderation_de__u_____dans_dz                                                             \
-_-_-_-                                      ,COND(IL_FAUT(calcul_des_differentielles_avec_u_v_____compatibilite_2009110217)            \
-_-_-_-                                           ,u                                                                                    \
-_-_-_-                                           ,u_effectif_translate                                                                 \
-_-_-_-                                            )                                                                                    \
-_-_-_-                                      ,ponderation_de__v_____dans_dz                                                             \
-_-_-_-                                      ,COND(IL_FAUT(calcul_des_differentielles_avec_u_v_____compatibilite_2009110217)            \
-_-_-_-                                           ,v                                                                                    \
-_-_-_-                                           ,v_effectif_translate                                                                 \
-_-_-_-                                            )                                                                                    \
-_-_-_-                                      ,ponderation_de_Fx_____dans_dz,cx                                                          \
-_-_-_-                                      ,ponderation_de_Fx_u___dans_dz,valeur_de_dF_sur_du____12__Fx                               \
-_-_-_-                                      ,ponderation_de_Fx___v_dans_dz,valeur_de_dF_sur____dv_12__Fx                               \
-_-_-_-                                      ,ponderation_de_Fx_u_v_dans_dz,valeur_de_dF_sur_du_dv_12__Fx                               \
-_-_-_-                                      ,ponderation_de_Fy_____dans_dz,cy                                                          \
-_-_-_-                                      ,ponderation_de_Fy_u___dans_dz,valeur_de_dF_sur_du____12__Fy                               \
-_-_-_-                                      ,ponderation_de_Fy___v_dans_dz,valeur_de_dF_sur____dv_12__Fy                               \
-_-_-_-                                      ,ponderation_de_Fy_u_v_dans_dz,valeur_de_dF_sur_du_dv_12__Fy                               \
-_-_-_-                                      ,ponderation_de_Fz_____dans_dz,cz                                                          \
-_-_-_-                                      ,ponderation_de_Fz_u___dans_dz,valeur_de_dF_sur_du____12__Fz                               \
-_-_-_-                                      ,ponderation_de_Fz___v_dans_dz,valeur_de_dF_sur____dv_12__Fz                               \
-_-_-_-                                      ,ponderation_de_Fz_u_v_dans_dz,valeur_de_dF_sur_du_dv_12__Fz                               \
-_-_-_-                                       )                                                                                         \
-_-_-_-                                 );                                                                                              \
-_-_-_-                                 /* Calcul des differentielles approchees. ATTENTION, le 20041110174426 je note lors de       */ \
-_-_-_-                                 /* la mise au point de 'v $xiirs/.PROJ.11.1.$U' que les 'ADD2(...)' et les 'SOUS(...)'       */ \
-_-_-_-                                 /* de la 'DERIVATION_PARTIELLE(...)' ci-dessus peuvent faire sortir des domaines de          */ \
-_-_-_-                                 /* definition des coordonnees {u,v}. Il faut donc bien faire attention aux problemes         */ \
-_-_-_-                                 /* de periodicite et de prolongement dans les cas ou, par exemple, l'une ou l'autre          */ \
-_-_-_-                                 /* des fonctions 'F?(...)' est definie via un champ bidimensionnel...                        */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* Le 20090606170823 fut pris en compte eventuellement {cx,cy,cz} lors de la mise au point   */ \
-_-_-_-                                 /* l'image 'v $xiirs/PROJ.c1'.                                                               */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* Le 20090724120555 les 'LIO14(...)'s qui ne se justifaient plus (puisque qu'il n'y a plus  */ \
-_-_-_-                                 /* de fonctions a evaluer ici...) furent remplaces par des 'LIN14(...)'s...                  */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* Le 20091102170618 {u,v} furent remplaces par {u_effectif_translate,v_effectif_translate}  */ \
-_-_-_-                                 /* plus logiques...                                                                          */ \
-_-_-_-                            Eblock                                                                                               \
-_-_-_-                       ETes                                                                                                      \
-_-_-_-                                                                                                                                 \
-_-_-_-                       GENERATION_DU_TEXTURAGE_DE_LA_SURFACE(texture_x,texture_y,texture_z);                                     \
-_-_-_-                                 /* Calcul des textures en passant de {mu,Mu}x{mv,Mv} a {Xmin,Xmax}x{Ymin,Ymax}.              */ \
-_-_-_-                       EGAL(dcx,BARY(differentielle_x,texture_x,ponderation_ROUGE_pour_dcx));                                    \
-_-_-_-                       EGAL(dcy,BARY(differentielle_y,texture_y,ponderation_VERTE_pour_dcy));                                    \
-_-_-_-                       EGAL(dcz,BARY(differentielle_z,texture_z,ponderation_BLEUE_pour_dcz));                                    \
-_-_-_-                                 /* Calcul des couleurs utiles...                                                             */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                       MEMORISATION_DU_POINT_COURANT_ET_DE_SA_NORMALE_EVENTUELLE(BLOC(calcul_eventuel_point_courant)             \
-_-_-_-                                                                                ,BLOC(Bblock                                     \
-_-_-_-                                                                                      EGAL(dXdu,CALCUL_DE_dF_SUR_du____12(Fx));  \
-_-_-_-                                                                                      EGAL(dYdu,CALCUL_DE_dF_SUR_du____12(Fy));  \
-_-_-_-                                                                                      EGAL(dZdu,CALCUL_DE_dF_SUR_du____12(Fz));  \
-_-_-_-                                 /* Calcul des derivees partielles en 'u'.                                                    */ \
-_-_-_-                                                                                      EGAL(dXdv,CALCUL_DE_dF_SUR____dv_12(Fx));  \
-_-_-_-                                                                                      EGAL(dYdv,CALCUL_DE_dF_SUR____dv_12(Fy));  \
-_-_-_-                                                                                      EGAL(dZdv,CALCUL_DE_dF_SUR____dv_12(Fz));  \
-_-_-_-                                 /* Calcul des derivees partielles en 'v'.                                                    */ \
-_-_-_-                                                                                      Eblock                                     \
-_-_-_-                                                                                      )                                          \
-_-_-_-                                                                                 );                                              \
-_-_-_-                                 /* Memorisation du point courant et eventuellement de sa normale. Ceci fut introduit le      */ \
-_-_-_-                                 /* 20060130085630 pour 'v $xrs/project2D.11$K VISUALISATION_DE_LA_SURFACE_AVEC_DIFFERENCES'  */ \
-_-_-_-                                 /* principalement...                                                                         */ \
-_-_-_-                       Eblock                                                                                                    \
-_-_-_-                       )                                                                                                         \
-_-_-_-                  )                                                                                                              \
-_-_-_-             Eblock
                                        /* Calcul et visualisation de la surface pour un instant donne avec calcul de differences    */
                                        /* finies (soit une approximation de la differentiation...). Cette procedure a ete           */
                                        /* introduite le 20041107143046 pour 'v $xrs/project2D.11$K'...                              */

-define   GENERATION_D_UNE_IMAGE_DE_LA_SURFACE_AVEC_DIFFERENTIATION(Fx,Fy,Fz,calcul_eventuel_point_courant)                             \
-_-_-_-             Bblock                                                                                                              \
-_-_-_-             gGENERATION_D_UNE_IMAGE_DE_LA_SURFACE                                                                               \
-_-_-_-                 (Fx,Fy,Fz                                                                                                       \
-_-_-_-                 ,BLOC(calcul_eventuel_point_courant)                                                                            \
-_-_-_-                 ,BLOC(Bblock                                                                                                    \
-_-_-_-                       DEFV(Float,INIT(differentielle_x,FLOT__UNDEF));                                                           \
-_-_-_-                       DEFV(Float,INIT(differentielle_y,FLOT__UNDEF));                                                           \
-_-_-_-                       DEFV(Float,INIT(differentielle_z,FLOT__UNDEF));                                                           \
-_-_-_-                                 /* Definition des trois differentielles.                                                     */ \
-_-_-_-                       DEFV(Float,INIT(texture_x,FLOT__UNDEF));                                                                  \
-_-_-_-                       DEFV(Float,INIT(texture_y,FLOT__UNDEF));                                                                  \
-_-_-_-                       DEFV(Float,INIT(texture_z,FLOT__UNDEF));                                                                  \
-_-_-_-                                 /* Definition des trois textures.                                                            */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                       Test(IL_FAUT(utiliser_les_differentielles_ROUGE_VERTE_BLEUE))                                             \
-_-_-_-                                 /* Possibilite introduite le 20230125094726...                                               */ \
-_-_-_-                            Bblock                                                                                               \
-_-_-_-                            EGAL(differentielle_x,differentielle_ROUGE);                                                         \
-_-_-_-                            EGAL(differentielle_y,differentielle_VERTE);                                                         \
-_-_-_-                            EGAL(differentielle_z,differentielle_BLEUE);                                                         \
-_-_-_-                                                                                                                                 \
-_-_-_-                            EGAL(utiliser_les_differentielles_ROUGE_VERTE_BLEUE,FAUX);                                           \
-_-_-_-                                 /* Ne sert a rien, mais c'est plus sur...                                                    */ \
-_-_-_-                            Eblock                                                                                               \
-_-_-_-                       ATes                                                                                                      \
-_-_-_-                            Bblock                                                                                               \
-_-_-_-                            EGAL(c_est_le_calcul_de__differentielle_x__differentielle_y__differentielle_z,VRAI);                 \
-_-_-_-                            EGAL(differentielle_x,dFxyz(d#Fx(u_effectif,v_effectif)));                                           \
-_-_-_-                            EGAL(differentielle_y,dFxyz(d#Fy(u_effectif,v_effectif)));                                           \
-_-_-_-                            EGAL(differentielle_z,dFxyz(d#Fz(u_effectif,v_effectif)));                                           \
-_-_-_-                            EGAL(c_est_le_calcul_de__differentielle_x__differentielle_y__differentielle_z,FAUX);                 \
-_-_-_-                                 /* Calcul des differentielles exactes...                                                     */ \
-_-_-_-                            Eblock                                                                                               \
-_-_-_-                       ETes                                                                                                      \
-_-_-_-                                                                                                                                 \
-_-_-_-                       GENERATION_DU_TEXTURAGE_DE_LA_SURFACE(texture_x,texture_y,texture_z);                                     \
-_-_-_-                                 /* Calcul des textures en passant de {mu,Mu}x{mv,Mv} a {Xmin,Xmax}x{Ymin,Ymax}.              */ \
-_-_-_-                       EGAL(dcx,BARY(differentielle_x,texture_x,ponderation_ROUGE_pour_dcx));                                    \
-_-_-_-                       EGAL(dcy,BARY(differentielle_y,texture_y,ponderation_VERTE_pour_dcy));                                    \
-_-_-_-                       EGAL(dcz,BARY(differentielle_z,texture_z,ponderation_BLEUE_pour_dcz));                                    \
-_-_-_-                                 /* Calcul des couleurs utiles...                                                             */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                       MEMORISATION_DU_POINT_COURANT_ET_DE_SA_NORMALE_EVENTUELLE(BLOC(calcul_eventuel_point_courant)             \
-_-_-_-                                                                                ,BLOC(Bblock                                     \
-_-_-_-                                                                                      EGAL(d_u_effectif,pas_de_u_effectif);      \
-_-_-_-                                                                                      EGAL(d_v_effectif,FZERO);                  \
-_-_-_-                                 /* Afin de calculer les derivees partielles en 'u'.                                          */ \
-_-_-_-                                                                                      EGAL(c_est_le_calcul_de__dXdu__dYdu__dZdu  \
-_-_-_-                                                                                          ,VRAI                                  \
-_-_-_-                                                                                           );                                    \
-_-_-_-                                                                                      EGAL(dXdu                                  \
-_-_-_-                                                                                          ,dFxyz(d#Fx(u_effectif,v_effectif))    \
-_-_-_-                                                                                           );                                    \
-_-_-_-                                                                                      EGAL(dYdu                                  \
-_-_-_-                                                                                          ,dFxyz(d#Fy(u_effectif,v_effectif))    \
-_-_-_-                                                                                           );                                    \
-_-_-_-                                                                                      EGAL(dZdu                                  \
-_-_-_-                                                                                          ,dFxyz(d#Fz(u_effectif,v_effectif))    \
-_-_-_-                                                                                           );                                    \
-_-_-_-                                                                                      EGAL(c_est_le_calcul_de__dXdu__dYdu__dZdu  \
-_-_-_-                                                                                          ,FAUX                                  \
-_-_-_-                                                                                           );                                    \
-_-_-_-                                 /* Calcul des derivees partielles en 'u'.                                                    */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                                                                                      EGAL(d_u_effectif,FZERO);                  \
-_-_-_-                                                                                      EGAL(d_v_effectif,pas_de_v_effectif);      \
-_-_-_-                                 /* Afin de calculer les derivees partielles en 'v'.                                          */ \
-_-_-_-                                                                                      EGAL(c_est_le_calcul_de__dXdv__dYdv__dZdv  \
-_-_-_-                                                                                          ,VRAI                                  \
-_-_-_-                                                                                           );                                    \
-_-_-_-                                                                                      EGAL(dXdv                                  \
-_-_-_-                                                                                          ,dFxyz(d#Fx(u_effectif,v_effectif))    \
-_-_-_-                                                                                           );                                    \
-_-_-_-                                                                                      EGAL(dYdv                                  \
-_-_-_-                                                                                          ,dFxyz(d#Fy(u_effectif,v_effectif))    \
-_-_-_-                                                                                           );                                    \
-_-_-_-                                                                                      EGAL(dZdv                                  \
-_-_-_-                                                                                          ,dFxyz(d#Fz(u_effectif,v_effectif))    \
-_-_-_-                                                                                           );                                    \
-_-_-_-                                                                                      EGAL(c_est_le_calcul_de__dXdv__dYdv__dZdv  \
-_-_-_-                                                                                          ,FAUX                                  \
-_-_-_-                                                                                           );                                    \
-_-_-_-                                 /* Calcul des derivees partielles en 'v'.                                                    */ \
-_-_-_-                                                                                      Eblock                                     \
-_-_-_-                                                                                      )                                          \
-_-_-_-                                                                                 );                                              \
-_-_-_-                                 /* Memorisation du point courant et eventuellement de sa normale. Ceci fut introduit le      */ \
-_-_-_-                                 /* 20060130085630 pour 'v $xrs/project2D.11$K VISUALISATION_DE_LA_SURFACE_AVEC_DIFFERENCES'  */ \
-_-_-_-                                 /* principalement...                                                                         */ \
-_-_-_-                       Eblock                                                                                                    \
-_-_-_-                       )                                                                                                         \
-_-_-_-                  )                                                                                                              \
-_-_-_-             Eblock
                                        /* Calcul et visualisation de la surface pour un instant donne avec differentiation          */
                                        /* formelle.                                                                                 */

-define   INITIALISATIONS_COMMUNES_DE_PROJECTION_DE_LA_SURFACE                                                                          \
-_-_-_-             Bblock                                                                                                              \
-_-_-_-             EGAL(nombre_de_periodes_de_la_simulation,UN);                                                                       \
-_-_-_-                                 /* Un seul "tour" suffit...                                                                  */ \
-_-_-_-                                                                                                                                 \
-_-_-_-             EGAL(diviseur_du_pas_de_u,FU);                                                                                      \
-_-_-_-             EGAL(diviseur_du_pas_de_v,FU);                                                                                      \
-_-_-_-                                                                                                                                 \
-_-_-_-             Test(IL_FAUT(forcer_les_extrema_de_u_v_lors_de_la_projection_de_la_surface))                                        \
-_-_-_-                                 /* Test introduit le 20060306164217...                                                       */ \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  EGAL(pas_de_u,DIVI(SOUS(maximum_de_u,minimum_de_u),FLOT(dimX)));                                               \
-_-_-_-                  EGAL(pas_de_v,DIVI(SOUS(maximum_de_v,minimum_de_v),FLOT(dimY)));                                               \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ATes                                                                                                                \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  EGAL(pas_de_u,DIVI(SOUS(sauvegarde_de_maximum_de_u,sauvegarde_de_minimum_de_u),FLOT(dimX)));                   \
-_-_-_-                  EGAL(pas_de_v,DIVI(SOUS(sauvegarde_de_maximum_de_v,sauvegarde_de_minimum_de_v),FLOT(dimY)));                   \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ETes                                                                                                                \
-_-_-_-                                                                                                                                 \
-_-_-_-             EGAL(echantillonnage_de_u,UN);                                                                                      \
-_-_-_-             EGAL(echantillonnage_de_v,UN);                                                                                      \
-_-_-_-             EGAL(translation_de_l_echantillonnage_de_u,ZERO);                                                                   \
-_-_-_-             EGAL(translation_de_l_echantillonnage_de_v,ZERO);                                                                   \
-_-_-_-                                 /* Generation des trois projections d'une surface tel que cela est defini et exploite        */ \
-_-_-_-                                 /* dans 'v $xrs/project2D.11$K P.R.O.J.E.C.T.O.R'. Ceci a ete introduit le 20041125111850.   */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* On notera que pour que cela ait un interet, il faut que :                                 */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  diviseur_du_pas_de_u = 1                                    (dpu=1)      */ \
-_-_-_-                                 /*                  diviseur_du_pas_de_v = 1                                    (dpv=1)      */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                              maximum_de_u - minimum_de_u                                  */ \
-_-_-_-                                 /*                  pas_de_u = -----------------------------                                 */ \
-_-_-_-                                 /*                                         dimX                                              */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                              maximum_de_v - minimum_de_v                                  */ \
-_-_-_-                                 /*                  pas_de_v = -----------------------------                                 */ \
-_-_-_-                                 /*                                         dimY                                              */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* afin de bien "remplir" les matrices {Proj_Fx,Proj_Fy,Proj_Fz}.                            */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* La reinitialisation de l'echantillonnage de la surface a ete introduit le 20050114214615  */ \
-_-_-_-                                 /* car cela manquait effectivement...                                                        */ \
-_-_-_-             Eblock
                                        /* Initialisations communes a toutes les surfaces destinees a permettre la reinjection des   */
                                        /* trois pseudo-projections {Projection_de_Fx,Projection_de_Fy,Projection_de_Fz} dans        */
                                        /* 'v $xrs/project2D.11$K' (introduit sous forme de procedure le 20050203085348...).         */
-define   INITIALISATIONS_SPECIFIQUES_DE_PROJECTION_DE_LA_SURFACE(initialisations)                                                      \
-_-_-_-             Bblock                                                                                                              \
-_-_-_-             Test(IL_FAUT(faire_les_initialisations_specifiques_de_projection_de_la_surface))                                    \
-_-_-_-                                 /* Ce test fut introduit le 20060502142542 pour 'v $xrs/project2D.01$Z initialisations'...   */ \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  BLOC(initialisations;);                                                                                        \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ATes                                                                                                                \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ETes                                                                                                                \
-_-_-_-             Eblock
                                        /* Initialisations specifiques a cette surface destinees a permettre la reinjection des      */
                                        /* trois pseudo-projections {Projection_de_Fx,Projection_de_Fy,Projection_de_Fz} dans        */
                                        /* 'v $xrs/project2D.11$K' (introduit le 20050203103821)...                                  */

-define   NOM_PROJECTION(nom_imageProjectionFxyz,postfixe)                                                                              \
-_-_-_-             COND(IFEQ_chaine(nom_imageProjection,NOM_PIPE_Local)                                                                \
-_-_-_-                 ,nom_imageProjectionFxyz                                                                                        \
-_-_-_-                 ,chain_Aconcaten2_sauf_nom_pipe(nom_imageProjection                                                             \
-_-_-_-                                                ,postfixe                                                                        \
-_-_-_-                                                 )                                                                               \
-_-_-_-                  )

-define   VISUALISATION_GENERALE_DE_LA_SURFACE(calcul_des_parametres,calcul_de_la_surface,Fx,Fy,Fz,Pxyz)                                \
-_-_-_-                                 /* L'argument 'Pxyz' a ete introduit le 20050203103821...                                    */ \
-_-_-_-             Bblock                                                                                                              \
-_-_-_-             DEFV(Float,INIT(sauvegarde_de_minimum_de_u,minimum_de_u));                                                          \
-_-_-_-             DEFV(Float,INIT(sauvegarde_de_maximum_de_u,maximum_de_u));                                                          \
-_-_-_-             DEFV(Float,INIT(sauvegarde_de_minimum_de_v,minimum_de_v));                                                          \
-_-_-_-             DEFV(Float,INIT(sauvegarde_de_maximum_de_v,maximum_de_v));                                                          \
-_-_-_-                                 /* Introduit le 20060306161232 pour etre capable, au cas ou la projection de la surface      */ \
-_-_-_-                                 /* est demandee, d'utiliser les extrema de {u,v} introduit comme parametres et non pas les   */ \
-_-_-_-                                 /* extrema qui, par defaut, sont forces par la procedure 'Pxyz'. Historiquement, cela fut    */ \
-_-_-_-                                 /* introduit pour 'v $xrs/sphere.11$K' et l'image 'v $xiirs/PROJ.C1'...                      */ \
-_-_-_-             BDEFV(imageF,Projection_de_Fx);                                                                                     \
-_-_-_-             BDEFV(imageF,Projection_de_Fy);                                                                                     \
-_-_-_-             BDEFV(imageF,Projection_de_Fz);                                                                                     \
-_-_-_-                                 /* On notera que pour des raisons de simplicite, il faut definir les trois projections de    */ \
-_-_-_-                                 /* la surface meme si 'IL_NE_FAUT_PAS(generer_les_trois_projections_de_la_surface)'...       */ \
-_-_-_-                                                                                                                                 \
-_-_-_-             Test(IFET(IL_FAUT(visualiser_la_droite_tracee_dans_le_plan_uv)                                                      \
-_-_-_-                      ,IL_NE_FAUT_PAS(generer_les_trois_projections_de_la_surface)                                               \
-_-_-_-                       )                                                                                                         \
-_-_-_-                  )                                                                                                              \
-_-_-_-                                 /* Test introduit le 20170125154159 et deplace ici le 20170125155212...                      */ \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  PRINT_ATTENTION("pas de visualisation de la droite du plan {u,v} en l'absence de projection de la surface");   \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ATes                                                                                                                \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ETes                                                                                                                \
-_-_-_-                                                                                                                                 \
-_-_-_-             Test(IL_FAUT(transformer_u_v))                                                                                      \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  ACCES_AUX_IMAGES_FLOTTANTES(image_Coordonnee_U,nom_transformation_u,transformer_u_v_niveau_hors_image);        \
-_-_-_-                  ACCES_AUX_IMAGES_FLOTTANTES(image_Coordonnee_V,nom_transformation_v,transformer_u_v_niveau_hors_image);        \
-_-_-_-                                 /* Chargement eventuel des transformations de {u,v} (introduit le 20060117134939...).        */ \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ATes                                                                                                                \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ETes                                                                                                                \
-_-_-_-                                                                                                                                 \
-_-_-_-             Test(IL_FAUT(trouer_u_v))                                                                                           \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  ACCES_AUX_IMAGES_FLOTTANTES(image_Trous,nom_trouage_u_v,LA_SURFACE_EST_INTEGRE);                               \
-_-_-_-                                 /* Chargement eventuel du "trouage" de {u,v} (introduit le 20060529141942...) tel que par    */ \
-_-_-_-                                 /* defaut il n'y ait pas de trous...                                                         */ \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ATes                                                                                                                \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ETes                                                                                                                \
-_-_-_-                                                                                                                                 \
-_-_-_-             Test(IFOU(IL_NE_FAUT_PAS(generer_les_trois_projections_de_la_surface)                                               \
-_-_-_-                      ,IFET(IL_FAUT(generer_les_trois_projections_de_la_surface)                                                 \
-_-_-_-                           ,EST_VRAI(les_trois_projections_de_la_surface_sont_en_fait_celles_de_la_texture)                      \
-_-_-_-                            )                                                                                                    \
-_-_-_-                       )                                                                                                         \
-_-_-_-                  )                                                                                                              \
-_-_-_-                                 /* Ce test a ete introduit le 20050713150047...                                              */ \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  ACCES_AUX_IMAGES(image_Texture_R,nom_textureR);                                                                \
-_-_-_-                  ACCES_AUX_IMAGES(image_Texture_V,nom_textureV);                                                                \
-_-_-_-                  ACCES_AUX_IMAGES(image_Texture_B,nom_textureB);                                                                \
-_-_-_-                                 /* Chargement eventuel des textures utiles...                                                */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* Le passage de {ImageA1,ImageA2,ImageA3} a {IFmageA1,IFmageA2,IFmageA3} a eu lieu          */ \
-_-_-_-                                 /* le 20050715182842. Je note le 20071021094138 que c'est certainement cette modification    */ \
-_-_-_-                                 /* qui est responsable de la difference qui existe entre 'v $xiirs/CAYA.61.0129' et          */ \
-_-_-_-                                 /* 'v $xiirs/CAYA.A1.0129' par exemple, les differences de couleur venant fort probablement  */ \
-_-_-_-                                 /* de differences de textures ('v $xiirs/$Fnota 20071020113639')...                          */ \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ATes                                                                                                                \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ETes                                                                                                                \
-_-_-_-                                                                                                                                 \
-_-_-_-             Test(IL_FAUT(generer_les_trois_projections_de_la_surface))                                                          \
-_-_-_-                                 /* Cas ou il faut generer les trois projections (introduit le 20041126091042) :              */ \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                                 /* ATTENTION ; jusqu'au 20050628155918, l'ordre des deux initialisations suivantes etaient   */ \
-_-_-_-                                 /* etait l'inverse par erreur. 'INITIALISATIONS_SPECIFIQUES_DE_PROJECTION_DE_LA_SURFACE'     */ \
-_-_-_-                                 /* peut en effet modifier des parametres qui sont exploites (par exemple 'maximum_de_v')     */ \
-_-_-_-                                 /* par 'INITIALISATIONS_COMMUNES_DE_PROJECTION_DE_LA_SURFACE', d'ou l'ordre logique qui      */ \
-_-_-_-                                 /* suit...                                                                                   */ \
-_-_-_-                  INITIALISATIONS_SPECIFIQUES_DE_PROJECTION_DE_LA_SURFACE(Pxyz);                                                 \
-_-_-_-                                 /* Introduit le 20050203085348 pour permettre la reinjection des trois pseudo-projections    */ \
-_-_-_-                                 /* {Projection_de_Fx,Projection_de_Fy,Projection_de_Fz} dans 'v $xrs/project2D.11$K' en      */ \
-_-_-_-                                 /* minimisant les adaptations utiles...                                                      */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                  INITIALISATIONS_COMMUNES_DE_PROJECTION_DE_LA_SURFACE;                                                          \
-_-_-_-                                 /* Mise sous forme d'une procedure le 20050203085348 par symetrie avec ce qui fut introduit  */ \
-_-_-_-                                 /* a cette date avec 'INITIALISATIONS_SPECIFIQUES_DE_PROJECTION_DE_LA_SURFACE'...            */ \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ATes                                                                                                                \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  ACCES_AUX_IMAGES_FLOTTANTES(image_Rayon,nom_rayon,rayon_de_visualisation);                                     \
-_-_-_-                                 /* Chargement eventuel du champ rayon (introduit le 20041229174601)...                       */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* On notera le passage de 'IFmageA1' a 'IFmageA4' le 20050715180458 dans le but de faire    */ \
-_-_-_-                                 /* des textures des images de type 'Float' {IFmageA1,IFmageA2,IFmageA3} si necessaire...     */ \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ETes                                                                                                                \
-_-_-_-                                                                                                                                 \
-_-_-_-             RE_INITIALISATION_DE_L_HORLOGE;                                                                                     \
-_-_-_-                                 /* Depuis que le 19990512152305 a ete mis en place un :                                      */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*        INCREMENTATION_DE_L_HORLOGE(dct);                                                  */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* apres chaque image, l'initialisation de l'horloge ne doit plus etre faite pour chaque     */ \
-_-_-_-                                 /* image, mais une seul fois, au tout debut...                                               */ \
-_-_-_-                                                                                                                                 \
-_-_-_-             Komp(numero_de_la_periode_courante_de_la_simulation,nombre_de_periodes_de_la_simulation)                            \
-_-_-_-                                 /* Le 20090408092756, j'ai voulu introduire ici 'KompParallele(...)' a la place de ce        */ \
-_-_-_-                                 /* 'Komp(...)'. En fait c'est plus delicat que prevu et ce en particulier a cause de la      */ \
-_-_-_-                                 /* variable 'numero_de_la_periode_courante' qui, via 'PASSAGE_A_L_IMAGE_SUIVANTE', est       */ \
-_-_-_-                                 /* incrementee. Elle est differente de 'numero_de_la_periode_courante_de_la_simulation',     */ \
-_-_-_-                                 /* malheureusement, et n'est donc pas geree de facon parallele comme le serait               */ \
-_-_-_-                                 /* 'numero_de_la_periode_courante_de_la_simulation' dans 'KompParallele(...)'...             */ \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  INITIALISATIONS_RELATIVES_A_CHAQUE_NOUVELLE_IMAGE(numero_de_la_periode_courante);                              \
-_-_-_-                                 /* Initialisations necessaires avant le calcul et la generation de chaque nouvelle image.    */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                  BLOC(calcul_des_parametres);                                                                                   \
-_-_-_-                                 /* Calcul des parametres evoluant au cours de la simulation...                               */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                  BLOC(calcul_de_la_surface);                                                                                    \
-_-_-_-                                 /* Calcul de la surface proprement dit...                                                    */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                  Test(IL_FAUT(generer_les_trois_projections_de_la_surface))                                                     \
-_-_-_-                       Bblock                                                                                                    \
-_-_-_-                       Eblock                                                                                                    \
-_-_-_-                  ATes                                                                                                           \
-_-_-_-                       Bblock                                                                                                    \
-_-_-_-                       GENERATION_D_UNE_IMAGE_ET_PASSAGE_A_LA_SUIVANTE(BLOC(VIDE;));                                             \
-_-_-_-                                 /* Generation de l'image courante...                                                         */ \
-_-_-_-                       Eblock                                                                                                    \
-_-_-_-                  ETes                                                                                                           \
-_-_-_-                                                                                                                                 \
-_-_-_-                  INCREMENTATION_DE_L_HORLOGE(dct);                                                                              \
-_-_-_-                                 /* Simulation d'un temps arbitraire (introduit le 19990512094356).                           */ \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             EKom                                                                                                                \
-_-_-_-                                                                                                                                 \
-_-_-_-             Test(IL_FAUT(generer_les_trois_projections_de_la_surface))                                                          \
-_-_-_-                                 /* Cas ou il faut generer les trois projections (introduit le 20041126091042) :              */ \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  Test(EST_VRAI(les_trois_projections_de_la_surface_sont_des_images_standards))                                  \
-_-_-_-                                 /* Cas ou les trois projections sont "standards" (introduit le 20050115113048) :             */ \
-_-_-_-                       Bblock                                                                                                    \
-_-_-_-                       Test(IL_FAUT(conserver_le_zero_des_trois_projections_de_la_surface))                                      \
-_-_-_-                                 /* Cas ou il faut conserver le zero des trois projections (introduit le 20050115115200) :    */ \
-_-_-_-                            Bblock                                                                                               \
-_-_-_-                            CALS(Ifloat_std_avec_le_vrai_zero_et_renormalisation(Image_ROUGE,Projection_de_Fx));                 \
-_-_-_-                            CALS(Ifloat_std_avec_le_vrai_zero_et_renormalisation(Image_VERTE,Projection_de_Fy));                 \
-_-_-_-                            CALS(Ifloat_std_avec_le_vrai_zero_et_renormalisation(Image_BLEUE,Projection_de_Fz));                 \
-_-_-_-                            Eblock                                                                                               \
-_-_-_-                       ATes                                                                                                      \
-_-_-_-                            Bblock                                                                                               \
-_-_-_-                            CALS(Ifloat_std_avec_renormalisation(Image_ROUGE,Projection_de_Fx));                                 \
-_-_-_-                            CALS(Ifloat_std_avec_renormalisation(Image_VERTE,Projection_de_Fy));                                 \
-_-_-_-                            CALS(Ifloat_std_avec_renormalisation(Image_BLEUE,Projection_de_Fz));                                 \
-_-_-_-                            Eblock                                                                                               \
-_-_-_-                       ETes                                                                                                      \
-_-_-_-                                                                                                                                 \
-_-_-_-                       CALi(Iupdate_image(NOM_PROJECTION(nom_imageProjectionFx,c_COORD_X),Image_ROUGE));                         \
-_-_-_-                       CALi(Iupdate_image(NOM_PROJECTION(nom_imageProjectionFy,c_COORD_Y),Image_VERTE));                         \
-_-_-_-                       CALi(Iupdate_image(NOM_PROJECTION(nom_imageProjectionFz,c_COORD_Z),Image_BLEUE));                         \
-_-_-_-                       Eblock                                                                                                    \
-_-_-_-                  ATes                                                                                                           \
-_-_-_-                       Bblock                                                                                                    \
-_-_-_-                                 /* Cas ou les trois projections sont non "standards" :                                       */ \
-_-_-_-                       CALi(IupdateF_image(NOM_PROJECTION(nom_imageProjectionFx,c_COORD_X),Projection_de_Fx));                   \
-_-_-_-                       CALi(IupdateF_image(NOM_PROJECTION(nom_imageProjectionFy,c_COORD_Y),Projection_de_Fy));                   \
-_-_-_-                       CALi(IupdateF_image(NOM_PROJECTION(nom_imageProjectionFz,c_COORD_Z),Projection_de_Fz));                   \
-_-_-_-                       Eblock                                                                                                    \
-_-_-_-                  ETes                                                                                                           \
-_-_-_-                                                                                                                                 \
-_-_-_-                  Test(IFET(IL_FAUT(tracer_une_droite_du_plan_uv)                                                                \
-_-_-_-                           ,IL_FAUT(visualiser_la_droite_tracee_dans_le_plan_uv)                                                 \
-_-_-_-                            )                                                                                                    \
-_-_-_-                       )                                                                                                         \
-_-_-_-                                 /* Test introduit le 20060817180753...                                                       */ \
-_-_-_-                       Bblock                                                                                                    \
-_-_-_-                       CALi(IupdateF_image(nom_imageR_Droite_uv,image_Droite_UV_Calculee__));                                    \
-_-_-_-                                 /* Memorisation de la droite dans le plan {u,v}...                                           */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* Le 20170210130509, 'nom_imageDroite_uv' a ete remplace par 'nom_imageR_Droite_uv' suite   */ \
-_-_-_-                                 /* a l'introduction de 'nom_imageA_Droite_uv' a cette date...                                */ \
-_-_-_-                       Eblock                                                                                                    \
-_-_-_-                  ATes                                                                                                           \
-_-_-_-                       Bblock                                                                                                    \
-_-_-_-                       Eblock                                                                                                    \
-_-_-_-                  ETes                                                                                                           \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ATes                                                                                                                \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  EDITION_DES_EXTREMA_DES_COORDONNEES_ET_DES_DERIVEES;                                                           \
-_-_-_-                                 /* Edition facultative des extrema des coordonnees.                                          */ \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ETes                                                                                                                \
-_-_-_-                                                                                                                                 \
-_-_-_-             EDEFV(imageF,Projection_de_Fz);                                                                                     \
-_-_-_-             EDEFV(imageF,Projection_de_Fy);                                                                                     \
-_-_-_-             EDEFV(imageF,Projection_de_Fx);                                                                                     \
-_-_-_-                                 /* On notera que pour des raisons de simplicite, il faut definir les trois projections de    */ \
-_-_-_-                                 /* la surface meme si 'IL_NE_FAUT_PAS(generer_les_trois_projections_de_la_surface)'...       */ \
-_-_-_-             Eblock
                                        /* Calcul et visualisation de la surface avec evolution temporelle...                        */

-define   VISUALISATION_DE_LA_SURFACE_SANS_DIFFERENTIATION(calcul_des_parametres,Fx,Fy,Fz,Pxyz,calcul_pc)                               \
-_-_-_-                                 /* L'argument 'Pxyz' a ete introduit le 20050203103821...                                    */ \
-_-_-_-                                 /* jusqu'au 20010525121332 'calcul_pc' s'appelait 'calcul_eventuel_point_courant' et son     */ \
-_-_-_-                                 /* nom a ete reduit a cause de la longueur de la ligne qui le reference ci-apres...          */ \
-_-_-_-             Bblock                                                                                                              \
-_-_-_-             VISUALISATION_GENERALE_DE_LA_SURFACE(BLOC(calcul_des_parametres)                                                    \
-_-_-_-                                                 ,BLOC(Bblock                                                                    \
-_-_-_-                                                       GENERATION_D_UNE_IMAGE_DE_LA_SURFACE_SANS_DIFFERENTIATION(Fx,Fy,Fz        \
-_-_-_-                                                                                                                ,BLOC(calcul_pc) \
-_-_-_-                                                                                                                 );              \
-_-_-_-                                                       Eblock                                                                    \
-_-_-_-                                                       )                                                                         \
-_-_-_-                                                 ,Fx,Fy,Fz                                                                       \
-_-_-_-                                                 ,Pxyz                                                                           \
-_-_-_-                                                  );                                                                             \
-_-_-_-             Eblock
                                        /* Calcul sans differentiation et visualisation de la surface avec evolution temporelle...   */
-define   VISUALISATION_DE_LA_SURFACE_AVEC_DIFFERENCES____(calcul_des_parametres,Fx,Fy,Fz,Pxyz,calcul_pc)                               \
-_-_-_-                                 /* L'argument 'Pxyz' a ete introduit le 20050203103821...                                    */ \
-_-_-_-                                 /* jusqu'au 20010525121332 'calcul_pc' s'appelait 'calcul_eventuel_point_courant' et son     */ \
-_-_-_-                                 /* nom a ete reduit a cause de la longueur de la ligne qui le reference ci-apres...          */ \
-_-_-_-             Bblock                                                                                                              \
-_-_-_-             VISUALISATION_GENERALE_DE_LA_SURFACE(BLOC(calcul_des_parametres)                                                    \
-_-_-_-                                                 ,BLOC(Bblock                                                                    \
-_-_-_-                                                       GENERATION_D_UNE_IMAGE_DE_LA_SURFACE_AVEC_DIFFERENCES____(Fx,Fy,Fz        \
-_-_-_-                                                                                                                ,BLOC(calcul_pc) \
-_-_-_-                                                                                                                 );              \
-_-_-_-                                                       Eblock                                                                    \
-_-_-_-                                                       )                                                                         \
-_-_-_-                                                 ,Fx,Fy,Fz                                                                       \
-_-_-_-                                                 ,Pxyz                                                                           \
-_-_-_-                                                  );                                                                             \
-_-_-_-             Eblock
                                        /* Calcul avec evaluation de differences finies (une approximation de la differentiation)    */
                                        /* et visualisation de la surface avec evolution temporelle. Cette procedure a ete           */
                                        /* introduite le 20041107143046 pour 'v $xrs/project2D.11$K'...                              */
-define   VISUALISATION_DE_LA_SURFACE_AVEC_DIFFERENTIATION(calcul_des_parametres,Fx,Fy,Fz,Pxyz,calcul_pc)                               \
-_-_-_-                                 /* L'argument 'Pxyz' a ete introduit le 20050203103821...                                    */ \
-_-_-_-                                 /* jusqu'au 20010525121332 'calcul_pc' s'appelait 'calcul_eventuel_point_courant' et son     */ \
-_-_-_-                                 /* nom a ete reduit a cause de la longueur de la ligne qui le reference ci-apres...          */ \
-_-_-_-             Bblock                                                                                                              \
-_-_-_-             VISUALISATION_GENERALE_DE_LA_SURFACE(BLOC(calcul_des_parametres)                                                    \
-_-_-_-                                                 ,BLOC(Bblock                                                                    \
-_-_-_-                                                       GENERATION_D_UNE_IMAGE_DE_LA_SURFACE_AVEC_DIFFERENTIATION(Fx,Fy,Fz        \
-_-_-_-                                                                                                                ,BLOC(calcul_pc) \
-_-_-_-                                                                                                                 );              \
-_-_-_-                                                       Eblock                                                                    \
-_-_-_-                                                       )                                                                         \
-_-_-_-                                                 ,Fx,Fy,Fz                                                                       \
-_-_-_-                                                 ,Pxyz                                                                           \
-_-_-_-                                                  );                                                                             \
-_-_-_-             Eblock
                                        /* Calcul avec differentiation et visualisation de la surface avec evolution temporelle...   */



Copyright © Jean-François COLONNA, 2019-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2019-2024.