/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C A L C U L   D E   L A   D R O I T E   P R O P R E M E N T   D I T  :                                                     */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Nota :                                                                                                                     */
/*                                                                                                                                   */
/*                    Les programmes '$K's qui utiliseront                                                                           */
/*                  les fichiers '$xrs/droites.*$I' ressemblent                                                                      */
/*                  beaucoup a ceux qui referencent '$xrs/surfaces.*$I'                                                              */
/*                  lorsque ces derniers utilisent les options :                                                                     */
/*                                                                                                                                   */
/*                                      maillage_uv=FAUX droite_uv=VRAI                                                              */
/*                                      tracer_une_droite_du_plan_uv_____compatibilite_20170130=...                                  */
/*                                      Aduv=... Bduv=... Cduv=...                                                                   */
/*                                                                                                                                   */
/*                  ('v $xiirv/KNOT.11.3.1' par exemple).                                                                            */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xrs/droites.12$I' :                                                                                            */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 20220514093628).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C A L C U L   D E   L A   D R O I T 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  :                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
-define   gGENERATION_D_UNE_IMAGE_DE_LA_DROITE(Fx,Fy,Fz,calcul_eventuel_point_courant,sequence_de_generation)                           \
-_-_-_-             Bblock                                                                                                              \
-_-_-_-             DEFV(Float,INIT(minimum_de_t_effectif,minimum_de_t));                                                               \
-_-_-_-             DEFV(Float,INIT(maximum_de_t_effectif,maximum_de_t));                                                               \
-_-_-_-             DEFV(Float,INIT(pas_de_t_effectif,pas_de_t));                                                                       \
-_-_-_-                                                                                                                                 \
-_-_-_-             DEFV(Float,INIT(minimum_de_u_effectif,minimum_de_u));                                                               \
-_-_-_-             DEFV(Float,INIT(maximum_de_u_effectif,maximum_de_u));                                                               \
-_-_-_-                                                                                                                                 \
-_-_-_-             DEFV(Float,INIT(minimum_de_v_effectif,minimum_de_v));                                                               \
-_-_-_-             DEFV(Float,INIT(maximum_de_v_effectif,maximum_de_v));                                                               \
-_-_-_-                                                                                                                                 \
-_-_-_-             FDoIn(t,minimum_de_t_effectif,maximum_de_t_effectif,pas_de_t_effectif)                                              \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  DEFV(Float,INIT(u,FLOT__UNDEF));                                                                               \
-_-_-_-                  DEFV(Float,INIT(v,FLOT__UNDEF));                                                                               \
-_-_-_-                                                                                                                                 \
-_-_-_-                  EGAL(u,t);                                                                                                     \
-_-_-_-                  EGAL(v                                                                                                         \
-_-_-_-                      ,AXPB(NEGA(DIVZ(coefficient_A_d_une_droite_du_plan_uv,coefficient_B_d_une_droite_du_plan_uv))              \
-_-_-_-                           ,u                                                                                                    \
-_-_-_-                           ,NEGA(DIVZ(coefficient_C_d_une_droite_du_plan_uv,coefficient_B_d_une_droite_du_plan_uv))              \
-_-_-_-                            )                                                                                                    \
-_-_-_-                       );                                                                                                        \
-_-_-_-                                 /* L'equation de la droite est :                                                             */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  A.u + B.v + C = 0                                                        */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /* ce qui peut s'ecrire en coordonnees parametriques (fonction de 't') :                     */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  u(t) = t                                                                 */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                            A       C                                                      */ \
-_-_-_-                                 /*                  v(t) = - ---.u - ---                                                     */ \
-_-_-_-                                 /*                            B       B                                                      */ \
-_-_-_-                                 /* en supposant evidemment :                                                                 */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                 /*                  B # 0                                                                    */ \
-_-_-_-                                 /*                                                                                           */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                  begin_nouveau_block                                                                                            \
-_-_-_-                       Bblock                                                                                                    \
-_-_-_-                       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             \
-_-_-_-                                                                          )                                                      \
-_-_-_-                                            )                                                                                    \
-_-_-_-                                       )                                                                                         \
-_-_-_-                            );                                                                                                   \
-_-_-_-                       DEFV(Float,INIT(u_effectif_translate,FLOT__UNDEF));                                                       \
-_-_-_-                       DEFV(Float,INIT(d_u_effectif,d_u));                                                                       \
-_-_-_-                                 /* Definition de la differentielle de la coordonnee 'u' effective.                           */ \
-_-_-_-                       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             \
-_-_-_-                                                                          )                                                      \
-_-_-_-                                            )                                                                                    \
-_-_-_-                                       )                                                                                         \
-_-_-_-                            );                                                                                                   \
-_-_-_-                       DEFV(Float,INIT(v_effectif_translate,FLOT__UNDEF));                                                       \
-_-_-_-                       DEFV(Float,INIT(d_v_effectif,d_v));                                                                       \
-_-_-_-                                 /* Definition de la differentielle de la coordonnee 'v' effective.                           */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                       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)                                    \
-_-_-_-                                 )                                                                                               \
-_-_-_-                            );                                                                                                   \
-_-_-_-                                 /* Gestion "torique" des coordonnees {u,v}...                                                */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                       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 droite...                                               */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                       BLOC(sequence_de_generation);                                                                             \
-_-_-_-                                                                                                                                 \
-_-_-_-                       Eblock                                                                                                    \
-_-_-_-                  end_nouveau_block                                                                                              \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             EFDoI                                                                                                               \
-_-_-_-             Eblock
                                        /* Calcul et visualisation generale de la surface pour un instant donne.                     */

-define   GENERATION_D_UNE_IMAGE_DE_LA_DROITE_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}...                                   */ \
-_-_-_-                                                                                                                                 \
-_-_-_-             gGENERATION_D_UNE_IMAGE_DE_LA_DROITE                                                                                \
-_-_-_-                 (Fx,Fy,Fz                                                                                                       \
-_-_-_-                 ,BLOC(calcul_eventuel_point_courant)                                                                            \
-_-_-_-                 ,BLOC(Bblock                                                                                                    \
-_-_-_-                       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}.                                 */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                       LISTER_EVENTUELLEMENT_LES_COORDONNEES_u_v_DES_POINTS;                                                     \
-_-_-_-                                                                                                                                 \
-_-_-_-                       RECHERCHE_DES_EXTREMA_DES_COORDONNEES_ET_DES_DERIVEES;                                                    \
-_-_-_-                                                                                                                                 \
-_-_-_-                       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   GENERATION_D_UNE_IMAGE_DE_LA_DROITE_AVEC_DIFFERENCES____(Fx,Fy,Fz,calcul_eventuel_point_courant)                              \
-_-_-_-             Bblock                                                                                                              \
-_-_-_-             gGENERATION_D_UNE_IMAGE_DE_LA_DROITE                                                                                \
-_-_-_-                 (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 (destinee historiquement a '$LACT18')...                                     */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                       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.                                                    */ \
-_-_-_-                       EGAL(dcx,differentielle_x);                                                                               \
-_-_-_-                       EGAL(dcy,differentielle_y);                                                                               \
-_-_-_-                       EGAL(dcz,differentielle_z);                                                                               \
-_-_-_-                                 /* Calcul des couleurs utiles...                                                             */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                       BLOC(calcul_eventuel_point_courant);                                                                      \
-_-_-_-                                 /* Calculs eventuels d'informations specifiques au point courant...                          */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                       RECHERCHE_DES_EXTREMA_DES_COORDONNEES_ET_DES_DERIVEES;                                                    \
-_-_-_-                                                                                                                                 \
-_-_-_-                       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 avec calcul de differences    */
                                        /* finies (soit une approximation de la differentiation...).                                 */

-define   GENERATION_D_UNE_IMAGE_DE_LA_DROITE_AVEC_DIFFERENTIATION(Fx,Fy,Fz,calcul_eventuel_point_courant)                              \
-_-_-_-             Bblock                                                                                                              \
-_-_-_-             gGENERATION_D_UNE_IMAGE_DE_LA_DROITE                                                                                \
-_-_-_-                 (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.                                                     */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                       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...                                                     */ \
-_-_-_-                       EGAL(dcx,differentielle_x);                                                                               \
-_-_-_-                       EGAL(dcy,differentielle_y);                                                                               \
-_-_-_-                       EGAL(dcz,differentielle_z);                                                                               \
-_-_-_-                                 /* Calcul des couleurs utiles...                                                             */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                       BLOC(calcul_eventuel_point_courant);                                                                      \
-_-_-_-                                 /* Calculs eventuels d'informations specifiques au point courant...                          */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                       RECHERCHE_DES_EXTREMA_DES_COORDONNEES_ET_DES_DERIVEES;                                                    \
-_-_-_-                                                                                                                                 \
-_-_-_-                       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 avec differentiation          */
                                        /* formelle.                                                                                 */

-define   VISUALISATION_GENERALE_DE_LA_DROITE(calcul_des_parametres,calcul_de_la_surface,Fx,Fy,Fz,Pxyz)                                 \
-_-_-_-             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));                                                          \
-_-_-_-                                                                                                                                 \
-_-_-_-             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)                                               \
-_-_-_-                       )                                                                                                         \
-_-_-_-                  )                                                                                                              \
-_-_-_-                  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}...                                       */ \
-_-_-_-                  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} tel que par defaut il n'y ait pas de trous...   */ \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ATes                                                                                                                \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             ETes                                                                                                                \
-_-_-_-                                                                                                                                 \
-_-_-_-             RE_INITIALISATION_DE_L_HORLOGE;                                                                                     \
-_-_-_-                                                                                                                                 \
-_-_-_-             Komp(numero_de_la_periode_courante_de_la_simulation,nombre_de_periodes_de_la_simulation)                            \
-_-_-_-                  Bblock                                                                                                         \
-_-_-_-                  INITIALISATIONS_RELATIVES_A_CHAQUE_NOUVELLE_IMAGE(numero_de_la_periode_courante);                              \
-_-_-_-                                 /* Initialisations necessaires avant le calcul et la generation de chaque nouvelle image.    */ \
-_-_-_-                                                                                                                                 \
-_-_-_-                  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...                                                       */ \
-_-_-_-                  Eblock                                                                                                         \
-_-_-_-             EKom                                                                                                                \
-_-_-_-                                                                                                                                 \
-_-_-_-             EDITION_DES_EXTREMA_DES_COORDONNEES_ET_DES_DERIVEES;                                                                \
-_-_-_-                                 /* Edition facultative des extrema des coordonnees.                                          */ \
-_-_-_-                                                                                                                                 \
-_-_-_-             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_DROITE_SANS_DIFFERENTIATION(calcul_des_parametres,Fx,Fy,Fz,Pxyz,calcul_pc)                                \
-_-_-_-             Bblock                                                                                                              \
-_-_-_-             VISUALISATION_GENERALE_DE_LA_DROITE(BLOC(calcul_des_parametres)                                                     \
-_-_-_-                                                ,BLOC(Bblock                                                                     \
-_-_-_-                                                      GENERATION_D_UNE_IMAGE_DE_LA_DROITE_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_DROITE_AVEC_DIFFERENCES____(calcul_des_parametres,Fx,Fy,Fz,Pxyz,calcul_pc)                                \
-_-_-_-             Bblock                                                                                                              \
-_-_-_-             VISUALISATION_GENERALE_DE_LA_DROITE(BLOC(calcul_des_parametres)                                                     \
-_-_-_-                                                ,BLOC(Bblock                                                                     \
-_-_-_-                                                      GENERATION_D_UNE_IMAGE_DE_LA_DROITE_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.                                 */
-define   VISUALISATION_DE_LA_DROITE_AVEC_DIFFERENTIATION(calcul_des_parametres,Fx,Fy,Fz,Pxyz,calcul_pc)                                \
-_-_-_-             Bblock                                                                                                              \
-_-_-_-             VISUALISATION_GENERALE_DE_LA_DROITE(BLOC(calcul_des_parametres)                                                     \
-_-_-_-                                                ,BLOC(Bblock                                                                     \
-_-_-_-                                                      GENERATION_D_UNE_IMAGE_DE_LA_DROITE_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, 2022-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2022-2024.