/*************************************************************************************************************************************/
/* */
/* 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... */