/*************************************************************************************************************************************/ /* */ /* G E S T I O N D E L ' I N T E R A C T I O N S T A N D A R D : */ /* */ /* */ /* Author of '$xrs/surfaces.13$I' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 1993??????????). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A C C E S A U X F I C H I E R S P A R A M E T R E S : */ /* */ /*************************************************************************************************************************************/ #include xrs/surfaces.33.I" /* Introduit le 20190228164354... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* G E S T I O N D E S P R I M I T I V E S D E V I S U A L I S A T I O N S T A N D A R D S : */ /* */ /*************************************************************************************************************************************/ #define PROCESS_ARGUMENTS_DE_TRANSFORMATION_DE_u_v \ /* Introduit le 20060117133441... */ \ Bblock \ \ DEBUT_D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ /* Introduit le 20060208111433 ('v $xig/fonct$vv$DEF _IMBRICATION_DES__gPROCESS_PARAMETRE'). */ \ \ GET_ARGUMENT_L("UV_transformer=""UV=",transformer_u_v); \ /* Le 20150527143014 je note que lorsque les coordonnees {U,V} sont utilisees, il est */ \ /* fortement conseille de ne pas interpoler dans 'gFFload_point_coordonnees_01(...)' via : */ \ /* */ \ /* tinterpoler=FAUX */ \ /* */ \ /* afin d'eviter des points isoles ou d'autres defauts... */ \ GET_ARGUMENT_L("UV_trouer=",trouer_u_v); \ /* Le "trouage" a ete introduit le 20060530151452... */ \ \ GET_ARGUMENT_L("tore_u=",gestion_torique_de_u); \ GET_ARGUMENT_L("tore_v=",gestion_torique_de_v); \ /* La gestion "torique" de {u,v} a ete introduite le 20060601132725... */ \ \ GET_ARGUMENT_L("UV_periodiser_u=""UV_per_u=",transformer_u_v_periodiser_u); \ GET_ARGUMENT_L("UV_periodiser_v=""UV_per_v=",transformer_u_v_periodiser_v); \ GET_ARGUMENT_L("TUV_periodiser_u=""TUV_per_u=",trouer_u_v_periodiser_u); \ GET_ARGUMENT_L("TUV_periodiser_v=""TUV_per_v=",trouer_u_v_periodiser_v); \ \ GET_ARGUMENT_L("UV_symetriser_u=""UV_sym_u=",transformer_u_v_symetriser_u); \ GET_ARGUMENT_L("UV_symetriser_v=""UV_sym_v=",transformer_u_v_symetriser_v); \ GET_ARGUMENT_L("TUV_symetriser_u=""TUV_sym_u=",trouer_u_v_symetriser_u); \ GET_ARGUMENT_L("TUV_symetriser_v=""TUV_sym_v=",trouer_u_v_symetriser_v); \ \ GET_ARGUMENT_L("UV_prolonger_u=""UV_pro_u=",transformer_u_v_prolonger_u); \ GET_ARGUMENT_L("UV_prolonger_v=""UV_pro_v=",transformer_u_v_prolonger_v); \ GET_ARGUMENT_L("TUV_prolonger_u=""TUV_pro_u=",trouer_u_v_prolonger_u); \ GET_ARGUMENT_L("TUV_prolonger_v=""TUV_pro_v=",trouer_u_v_prolonger_v); \ \ GET_ARGUMENT_F("UV_hors=",transformer_u_v_niveau_hors_image); \ \ GET_ARGUMENT_L("image_Coordonnee_U_interpoler=" \ ,image_Coordonnee_U__interpoler_bilineairement_ou_bicubiquement \ ); \ GET_ARGUMENT_L("image_Coordonnee_U_lineaire=" \ ,image_Coordonnee_U__utiliser_l_interpolation_bilineaire \ ); \ GET_ARGUMENT_N("image_Coordonnee_U_cubique=" \ ,image_Coordonnee_U__utiliser_l_interpolation_bilineaire \ ); \ GET_ARGUMENT_L("image_Coordonnee_U_eviter_discontinuites=" \ ,image_Coordonnee_U__eviter_les_fortes_discontinuites \ ); \ GET_ARGUMENT_F("image_Coordonnee_U_epsilon_discontinuites=" \ ,image_Coordonnee_U__epsilon_detection_des_fortes_discontinuites \ ); \ \ GET_ARGUMENT_L("image_Coordonnee_V_interpoler=" \ ,image_Coordonnee_V__interpoler_bilineairement_ou_bicubiquement \ ); \ GET_ARGUMENT_L("image_Coordonnee_V_lineaire=" \ ,image_Coordonnee_V__utiliser_l_interpolation_bilineaire \ ); \ GET_ARGUMENT_N("image_Coordonnee_V_cubique=" \ ,image_Coordonnee_V__utiliser_l_interpolation_bilineaire \ ); \ GET_ARGUMENT_L("image_Coordonnee_V_eviter_discontinuites=" \ ,image_Coordonnee_V__eviter_les_fortes_discontinuites \ ); \ GET_ARGUMENT_F("image_Coordonnee_V_epsilon_discontinuites=" \ ,image_Coordonnee_V__epsilon_detection_des_fortes_discontinuites \ ); \ \ GET_ARGUMENT_C("imageU=""U=",nom_transformation_u); \ GET_ARGUMENT_C("imageV=""V=",nom_transformation_v); \ /* Ces images ont ete introduites le 20060117135333... */ \ /* */ \ /* Je rappelle le 20160330150619 que les coordonnees {X,Y} de la deformation correspondent */ \ /* aux coordonnees curvilignes {u,v}={latitude,longitude} de la surface... */ \ \ GET_ARGUMENT_L("image_Trous_interpoler=" \ ,image_Trous__interpoler_bilineairement_ou_bicubiquement \ ); \ GET_ARGUMENT_L("image_Trous_lineaire=" \ ,image_Trous__utiliser_l_interpolation_bilineaire \ ); \ GET_ARGUMENT_N("image_Trous_cubique=" \ ,image_Trous__utiliser_l_interpolation_bilineaire \ ); \ GET_ARGUMENT_L("image_Trous_eviter_discontinuites=" \ ,image_Trous__eviter_les_fortes_discontinuites \ ); \ GET_ARGUMENT_F("image_Trous_epsilon_discontinuites=" \ ,image_Trous__epsilon_detection_des_fortes_discontinuites \ ); \ \ GET_ARGUMENT_C("imageTUV=""TUV=",nom_trouage_u_v); \ /* Cette image a ete introduite le 20060529152106... */ \ \ GET_ARGUMENT_L("u_v_arbitraires=""uva=",definir_arbitrairement_les_coordonnees_u_v); \ /* Cette possibilite a ete introduite le 20221221114143... */ \ \ PROCESS_ARGUMENT_I("nombre_elements=""ne=",nombre_d_elements \ ,BLOC(VIDE;) \ ,BLOC(Bblock \ PRINT_AVERTISSEMENT("'ne=' doit etre defini avant toute entree de fichiers"); \ Eblock \ ) \ ); \ /* Cette possibilite a ete introduite le 20221221114143... */ \ /* */ \ /* Je note le 20250123174629 qu'en mode : */ \ /* */ \ /* u_v_arbitraires=VRAI */ \ /* */ \ /* en faisant varier 'nombre_d_elements', on peut faire une animation montrant le */ \ /* construction de la courbe {u,v} sur la surface... */ \ \ GET_ARGUMENT_F("separateur_u_v=""suv=",separateur_de_definition_arbitraire_des_coordonnees_u_v); \ /* Cette possibilite a ete introduite le 20230217095456... */ \ \ PROKESF_ARGUMENT_FICHIER("coordonnees_u=" \ ,fichier_des_coordonnees_u \ ,liste_des_coordonnees_u \ ,COORDONNEE_u_IMPLICITE \ ,lTRANSFORMAT_0d \ ,iGENERATION_D_UN_FICHIER \ ); \ PROKESF_ARGUMENT_FICHIER("coordonnees_v=" \ ,fichier_des_coordonnees_v \ ,liste_des_coordonnees_v \ ,COORDONNEE_v_IMPLICITE \ ,lTRANSFORMAT_0d \ ,iGENERATION_D_UN_FICHIER \ ); \ /* Cette possibilite a ete introduite le 20221221114143... */ \ \ PROKESF_ARGUMENT_FICHIER("coordonnees_ROUGE=" \ ,fichier_des_coordonnees_ROUGE \ ,liste_des_coordonnees_ROUGE \ ,COORDONNEE_ROUGE_IMPLICITE \ ,lTRANSFORMAT_0d \ ,iGENERATION_D_UN_FICHIER \ ); \ PROKESF_ARGUMENT_FICHIER("coordonnees_VERTE=" \ ,fichier_des_coordonnees_VERTE \ ,liste_des_coordonnees_VERTE \ ,COORDONNEE_VERTE_IMPLICITE \ ,lTRANSFORMAT_0d \ ,iGENERATION_D_UN_FICHIER \ ); \ PROKESF_ARGUMENT_FICHIER("coordonnees_BLEUE=" \ ,fichier_des_coordonnees_BLEUE \ ,liste_des_coordonnees_BLEUE \ ,COORDONNEE_BLEUE_IMPLICITE \ ,lTRANSFORMAT_0d \ ,iGENERATION_D_UN_FICHIER \ ); \ /* Cette possibilite a ete introduite le 20230125094540... */ \ \ PROKESF_ARGUMENT_FICHIER("coordonnees_RAYON=" \ ,fichier_des_coordonnees_RAYON \ ,liste_des_coordonnees_RAYON \ ,COORDONNEE_RAYON_IMPLICITE \ ,lTRANSFORMAT_0d \ ,iGENERATION_D_UN_FICHIER \ ); \ /* Introduit le 20240517141440... */ \ \ PROKESF_ARGUMENT_FICHIER("coordonnees_MASSE=" \ ,fichier_des_coordonnees_MASSE \ ,liste_des_coordonnees_MASSE \ ,COORDONNEE_MASSE_IMPLICITE \ ,lTRANSFORMAT_0d \ ,iGENERATION_D_UN_FICHIER \ ); \ /* Introduit le 20240519091309... */ \ \ FIN___D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ /* Introduit le 20060208111433 ('v $xig/fonct$vv$DEF _IMBRICATION_DES__gPROCESS_PARAMETRE'). */ \ \ Eblock #define PROCESS_ARGUMENTS_COMMUNS_D_INTERPOLATION \ /* Introduit le 20170301145128... */ \ Bblock \ \ DEBUT_D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ \ FIN___D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ \ Eblock #ifndef DEFINITION_DES_INTERPOLATIONS_Fx_Fy_Fz # define PROCESS_ARGUMENTS_D_INTERPOLATION \ Bblock \ \ DEBUT_D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ \ PROCESS_ARGUMENTS_COMMUNS_D_INTERPOLATION; \ \ GET_ARGUMENTS7_L("tinterpoler=" \ ,FFload_point_coordonnees_01_____interpoler_bilineairement_ou_bicubiquement \ ,image_Coordonnee_U__interpoler_bilineairement_ou_bicubiquement \ ,image_Coordonnee_V__interpoler_bilineairement_ou_bicubiquement \ ,image_Trous__interpoler_bilineairement_ou_bicubiquement \ ,image_Texture_R__interpoler_bilineairement_ou_bicubiquement \ ,image_Texture_V__interpoler_bilineairement_ou_bicubiquement \ ,image_Texture_B__interpoler_bilineairement_ou_bicubiquement \ ); \ /* Cet argument a ete introduit le 20150527160150... */ \ /* */ \ /* L'utilisation de 'GET_ARGUMENTS7_L(...)' le 20150528113208 est destinee a garantir la */ \ /* compatibilite anterieure a cette date, lorsque "tinterpoler=" controlait toutes les */ \ /* interpolations de 'FFload_point_coordonnees_01(...)'. */ \ GET_ARGUMENTS7_L("tlineaire=""tbilineaire=" \ ,FFload_point_coordonnees_01_____utiliser_l_interpolation_bilineaire \ ,image_Coordonnee_U__utiliser_l_interpolation_bilineaire \ ,image_Coordonnee_V__utiliser_l_interpolation_bilineaire \ ,image_Trous__utiliser_l_interpolation_bilineaire \ ,image_Texture_R__utiliser_l_interpolation_bilineaire \ ,image_Texture_V__utiliser_l_interpolation_bilineaire \ ,image_Texture_B__utiliser_l_interpolation_bilineaire \ ); \ /* L'utilisation de 'GET_ARGUMENTS7_L(...)' le 20150528113208 est destinee a garantir la */ \ /* compatibilite anterieure a cette date, lorsque "tinterpoler=" controlait toutes les */ \ /* interpolations de 'FFload_point_coordonnees_01(...)'. */ \ GET_ARGUMENTS7_N("tcubique=""tbicubique=" \ ,FFload_point_coordonnees_01_____utiliser_l_interpolation_bilineaire \ ,image_Coordonnee_U__utiliser_l_interpolation_bilineaire \ ,image_Coordonnee_V__utiliser_l_interpolation_bilineaire \ ,image_Trous__utiliser_l_interpolation_bilineaire \ ,image_Texture_R__utiliser_l_interpolation_bilineaire \ ,image_Texture_V__utiliser_l_interpolation_bilineaire \ ,image_Texture_B__utiliser_l_interpolation_bilineaire \ ); \ /* ATTENTION : 'FFload_point_coordonnees_01_____utiliser_l_interpolation_bilineaire' est */ \ /* aussi reference dans 'v $xrs/project2D.11$K bilineaire=' (note le 20060602093342...). */ \ /* */ \ /* L'utilisation de 'GET_ARGUMENTS7_N(...)' le 20150528113208 est destinee a garantir la */ \ /* compatibilite anterieure a cette date, lorsque "tinterpoler=" controlait toutes les */ \ /* interpolations de 'FFload_point_coordonnees_01(...)'. */ \ \ FIN___D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ \ Eblock \ /* Arguments d'interpolation par defaut... */ #Aifndef DEFINITION_DES_INTERPOLATIONS_Fx_Fy_Fz # define PROCESS_ARGUMENTS_D_INTERPOLATION \ Bblock \ \ DEBUT_D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ \ PROCESS_ARGUMENTS_COMMUNS_D_INTERPOLATION; \ \ GET_ARGUMENTSa_L("tinterpoler=" \ ,FFload_point_coordonnees_01_____interpoler_bilineairement_ou_bicubiquement \ ,Image_Fx__interpoler_bilineairement_ou_bicubiquement \ ,Image_Fy__interpoler_bilineairement_ou_bicubiquement \ ,Image_Fz__interpoler_bilineairement_ou_bicubiquement \ ,image_Coordonnee_U__interpoler_bilineairement_ou_bicubiquement \ ,image_Coordonnee_V__interpoler_bilineairement_ou_bicubiquement \ ,image_Trous__interpoler_bilineairement_ou_bicubiquement \ ,image_Texture_R__interpoler_bilineairement_ou_bicubiquement \ ,image_Texture_V__interpoler_bilineairement_ou_bicubiquement \ ,image_Texture_B__interpoler_bilineairement_ou_bicubiquement \ ); \ GET_ARGUMENTSa_L("tlineaire=""tbilineaire=" \ ,FFload_point_coordonnees_01_____utiliser_l_interpolation_bilineaire \ ,Image_Fx__utiliser_l_interpolation_bilineaire \ ,Image_Fy__utiliser_l_interpolation_bilineaire \ ,Image_Fz__utiliser_l_interpolation_bilineaire \ ,image_Coordonnee_U__utiliser_l_interpolation_bilineaire \ ,image_Coordonnee_V__utiliser_l_interpolation_bilineaire \ ,image_Trous__utiliser_l_interpolation_bilineaire \ ,image_Texture_R__utiliser_l_interpolation_bilineaire \ ,image_Texture_V__utiliser_l_interpolation_bilineaire \ ,image_Texture_B__utiliser_l_interpolation_bilineaire \ ); \ GET_ARGUMENTSa_N("tcubique=""tbicubique=" \ ,FFload_point_coordonnees_01_____utiliser_l_interpolation_bilineaire \ ,Image_Fx__utiliser_l_interpolation_bilineaire \ ,Image_Fy__utiliser_l_interpolation_bilineaire \ ,Image_Fz__utiliser_l_interpolation_bilineaire \ ,image_Coordonnee_U__utiliser_l_interpolation_bilineaire \ ,image_Coordonnee_V__utiliser_l_interpolation_bilineaire \ ,image_Trous__utiliser_l_interpolation_bilineaire \ ,image_Texture_R__utiliser_l_interpolation_bilineaire \ ,image_Texture_V__utiliser_l_interpolation_bilineaire \ ,image_Texture_B__utiliser_l_interpolation_bilineaire \ ); \ \ FIN___D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ \ Eblock \ /* Arguments d'interpolation par defaut avec ceux relatifs a {Fx,Fy,Fz}... */ #Eifndef DEFINITION_DES_INTERPOLATIONS_Fx_Fy_Fz #define PROCESS_ARGUMENTS_DE_PROJECTION_DE_LA_SURFACE \ /* Introduit le 20041126093302... */ \ Bblock \ \ DEBUT_D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ /* Introduit le 20060208111433 ('v $xig/fonct$vv$DEF _IMBRICATION_DES__gPROCESS_PARAMETRE'). */ \ \ GET_ARGUMENT_L("projeter=""projections=""projection=",generer_les_trois_projections_de_la_surface); \ GET_ARGUMENT_L("isp=""initialisations_projection=" \ ,faire_les_initialisations_specifiques_de_projection_de_la_surface \ ); \ /* Introduit le 20060502143135 pour 'v $xrs/project2D.01$Z initialisations'... */ \ GET_ARGUMENT_L("fuvp=""forcer_uv_projection=",forcer_les_extrema_de_u_v_lors_de_la_projection_de_la_surface); \ /* Introduit le 20060306160958 pour 'v $xrs/sphere.11$K' et l'image 'v $xiirs/PROJ.C1'... */ \ GET_ARGUMENT_L("tp=""transformer_projections=",les_trois_projections_de_la_surface_doivent_etre_transformees); \ /* Introduit le 20090606104410... */ \ GET_ARGUMENT_L("pt=""projeter_textures=",les_trois_projections_de_la_surface_sont_en_fait_celles_de_la_texture); \ GET_ARGUMENT_N("projeter_coordonnees=""pc=" \ ,les_trois_projections_de_la_surface_sont_en_fait_celles_de_la_texture \ ); \ GET_ARGUMENT_L("pt_apres=""projeter_textures_apres_mapping=" \ ,les_trois_projections_de_la_texture_sont_mappees_sur_la_surface \ ); \ GET_ARGUMENT_N("pt_avant=""projeter_textures_avant_mapping=" \ ,les_trois_projections_de_la_texture_sont_mappees_sur_la_surface \ ); \ /* Cet argument a ete introduit le 20050820082505... */ \ \ PROCESS_ARGUMENTS_D_INTERPOLATION; \ \ GET_ARGUMENT_L("tpasX_et_pasY=""tpasXY=",FFload_point_coordonnees_01_____utiliser_pasX_et_pasY); \ /* ATTENTION : 'FFload_point_coordonnees_01_____utiliser_pasX_et_pasY' est */ \ /* aussi reference dans 'v $xrs/project2D.11$K pasX_et_pasY=' (note le 20070406093111...). */ \ GET_ARGUMENT_I("tpasX=",FFload_point_coordonnees_01_____pasX); \ /* ATTENTION : 'FFload_point_coordonnees_01_____pasX' est */ \ /* aussi reference dans 'v $xrs/project2D.11$K pasX=' (note le 20070406093111...). */ \ GET_ARGUMENT_I("tpasY=",FFload_point_coordonnees_01_____pasY); \ /* ATTENTION : 'FFload_point_coordonnees_01_____pasY' est */ \ /* aussi reference dans 'v $xrs/project2D.11$K pasY=' (note le 20070406093111...). */ \ /* */ \ /* Les options de 'gFFload_point_coordonnees_01(...)' ont ete introduites le 20050715183925 */ \ /* mais on notera bien qu'elles portent sur 'gFFload_point_coordonnees_01(...)' de facon */ \ /* generale et non pas uniquement pour la projection des textures. Cela pourra interferer */ \ /* avec l'usage qui en est fait dans 'v $xrs/project2D.11$K FFload_point_coordonnees_01'... */ \ \ GET_ARGUMENT_L("standard=""projections_standard=",les_trois_projections_de_la_surface_sont_des_images_standards); \ /* L'option "projections_standard=", relatives a des images Resultats, a ete introduite */ \ /* le 20050725121009 "par symetrie" avec l'option "textures_standard=", qui elle est */ \ /* relative a des images Arguments. Cela facilitera donc l'utilisation de ces options... */ \ GET_ARGUMENT_L("zero=",conserver_le_zero_des_trois_projections_de_la_surface); \ GET_ARGUMENT_C("imagePTR=""imagePFx=""PTR=""PFx=",nom_imageProjectionFx); \ GET_ARGUMENT_C("imagePTV=""imagePFy=""PTV=""PFy=",nom_imageProjectionFy); \ GET_ARGUMENT_C("imagePTB=""imagePFz=""PTB=""PFz=",nom_imageProjectionFz); \ GET_ARGUMENT_C("imageP=""P=",nom_imageProjection); \ /* Arguments introduits le 20120531144845... */ \ /* */ \ /* Je rappelle le 20160330150619 que les coordonnees {X,Y} de la texture correspondent */ \ /* aux coordonnees curvilignes {u,v}={latitude,longitude} de la surface... */ \ \ GET_ARGUMENT_C("imageRDUV=",nom_imageR_Droite_uv); \ GET_ARGUMENT_L("visualiser_droite_uv=""vduv=",visualiser_la_droite_tracee_dans_le_plan_uv); \ /* Introduits le 20060817180436. Cela demandera en general de plus : */ \ /* */ \ /* maillage_uv=VRAI */ \ /* projeter=VRAI */ \ /* forcer_uv_projection=VRAI */ \ /* */ \ /* Ces arguments sont venus de 'PROCESS_ARGUMENTS_DE_DEFINITION_DES_COORDONNEES_CURVILIGNES' */ \ /* jusqu'ici le 20060831094638 puisque, logiquement, leur usage est conditionne par l'etat */ \ /* de 'IL_FAUT(generer_les_trois_projections_de_la_surface)'... */ \ /* */ \ /* Le 20170210130208, 'nom_imageDroite_uv' a ete remplace par 'nom_imageR_Droite_uv' suite */ \ /* a l'introduction de 'nom_imageA_Droite_uv' a cette date... */ \ \ FIN___D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ /* Introduit le 20060208111433 ('v $xig/fonct$vv$DEF _IMBRICATION_DES__gPROCESS_PARAMETRE'). */ \ \ Eblock #define PROCESS_ARGUMENTS_DE_VISUALISATION_DE_LA_TEXTURE \ Bblock \ \ DEBUT_D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ /* Introduit le 20060208111433 ('v $xig/fonct$vv$DEF _IMBRICATION_DES__gPROCESS_PARAMETRE'). */ \ \ GET_ARGUMENT_F("vu=""mp=""meridiens_paralleles=""lignes_de_coordonnees=""lc=""intersections=""grossissement=" \ ,grossissement_du_rayon_de_visualisation_aux_intersections_des_lignes_de_coordonnees \ ); \ /* Introduit le 20041229183107. On notera que ce parametre est introduit ici alors qu'il */ \ /* serait plus logique dans 'PROCESS_ARGUMENTS_DE_VISUALISATION'. Mais en fait, cela */ \ /* simplifie les choses de le faire ici. D'autre part, l'application de ce grossissement */ \ /* est fait dans 'v $xrs/surfaces.12$I GENERATION_DU_TEXTURAGE_DE_LA_SURFACE'... */ \ /* */ \ /* Le 20041230101304, j'ai ajoute quelques synonymes, dont "mp=" et "vu=" destines a */ \ /* rappeler a quoi correspondent {u,v} : */ \ /* */ \ /* -------------------- */ \ /* | | */ \ /* | \|/ */ \ /* */ \ /* u=constante : "Paralleles", */ \ /* v=constante : "Meridiens". */ \ /* */ \ /* | /|\ */ \ /* | | */ \ /* -------------------- */ \ /* */ \ \ GET_ARGUMENT_L("ignorer_points_lointains=""ipl=",ignorer_les_points_trop_lointains); \ GET_ARGUMENT_F("distance_points_lointains=""dpl=",distance_des_points_trop_lointains); \ /* Introduits le 20120606144241... */ \ \ GET_ARGUMENT_L("AXES_COORDONNEES_FERMES_OUVERTS__texturage_____compatibilite_20130220=""compatibilite_20130220=" \ ,AXES_COORDONNEES_FERMES_OUVERTS__texturage_surfaces_____compatibilite_20130220 \ ); \ /* Introduit le 20130220132223... */ \ \ GET_ARGUMENT_L("texture_compatibilite_20170303=",texture_____compatibilite_20170303); \ /* Introduit le 20170303103205... */ \ \ GET_ARGUMENT_L("T_periodiser_X=""T_per_X=",textures_periodiser_X); \ GET_ARGUMENT_L("T_periodiser_Y=""T_per_Y=",textures_periodiser_Y); \ GET_ARGUMENT_L("T_symetriser_X=""T_sym_X=",textures_symetriser_X); \ GET_ARGUMENT_L("T_symetriser_Y=""T_sym_Y=",textures_symetriser_Y); \ GET_ARGUMENT_L("T_prolonger_X=""T_pro_X=",textures_prolonger_X); \ GET_ARGUMENT_L("T_prolonger_Y=""T_pro_Y=",textures_prolonger_Y); \ GET_ARGUMENT_F("T_hors=",textures_niveau_hors_image); \ /* Jusqu'au 20060117133441, il y avait 'GET_ARGUMENT_P(...)' ci-dessus par erreur, comme */ \ /* 'v $xrs/surfaces.14$I 20060117133441'... */ \ \ GET_ARGUMENT_L("ts=""textures_standard=""texture_standard=",les_textures_sont_des_images_standards); \ /* Introduit le 20050715181241... */ \ \ GET_ARGUMENT_L("cdts=""conserver_dynamique_textures_standards=" \ ,la_dynamique_des_textures_standards_doit_etre_conservee \ ); \ /* Introduit le 20221005114248... */ \ \ GET_ARGUMENT_L("image_Texture_R_interpoler=" \ ,image_Texture_R__interpoler_bilineairement_ou_bicubiquement \ ); \ GET_ARGUMENT_L("image_Texture_R_lineaire=" \ ,image_Texture_R__utiliser_l_interpolation_bilineaire \ ); \ GET_ARGUMENT_N("image_Texture_R_cubique=" \ ,image_Texture_R__utiliser_l_interpolation_bilineaire \ ); \ GET_ARGUMENT_L("image_Texture_R_eviter_discontinuites=" \ ,image_Texture_R__eviter_les_fortes_discontinuites \ ); \ GET_ARGUMENT_F("image_Texture_R_epsilon_discontinuites=" \ ,image_Texture_R__epsilon_detection_des_fortes_discontinuites \ ); \ /* Arguments introduits le 20150528132326... */ \ \ GET_ARGUMENT_L("image_Texture_V_interpoler=" \ ,image_Texture_V__interpoler_bilineairement_ou_bicubiquement \ ); \ GET_ARGUMENT_L("image_Texture_V_lineaire=" \ ,image_Texture_V__utiliser_l_interpolation_bilineaire \ ); \ GET_ARGUMENT_N("image_Texture_V_cubique=" \ ,image_Texture_V__utiliser_l_interpolation_bilineaire \ ); \ GET_ARGUMENT_L("image_Texture_V_eviter_discontinuites=" \ ,image_Texture_V__eviter_les_fortes_discontinuites \ ); \ GET_ARGUMENT_F("image_Texture_V_epsilon_discontinuites=" \ ,image_Texture_V__epsilon_detection_des_fortes_discontinuites \ ); \ /* Arguments introduits le 20150528132326... */ \ \ GET_ARGUMENT_L("image_Texture_B_interpoler=" \ ,image_Texture_B__interpoler_bilineairement_ou_bicubiquement \ ); \ GET_ARGUMENT_L("image_Texture_B_lineaire=" \ ,image_Texture_B__utiliser_l_interpolation_bilineaire \ ); \ GET_ARGUMENT_N("image_Texture_B_cubique=" \ ,image_Texture_B__utiliser_l_interpolation_bilineaire \ ); \ GET_ARGUMENT_L("image_Texture_B_eviter_discontinuites=" \ ,image_Texture_B__eviter_les_fortes_discontinuites \ ); \ GET_ARGUMENT_F("image_Texture_B_epsilon_discontinuites=" \ ,image_Texture_B__epsilon_detection_des_fortes_discontinuites \ ); \ /* Arguments introduits le 20150528132326... */ \ \ GET_ARGUMENT_C("imageTR=""TR=",nom_textureR); \ GET_ARGUMENT_C("imageTV=""TV=",nom_textureV); \ GET_ARGUMENT_C("imageTB=""TB=",nom_textureB); \ GET_ARGUMENT_F("ROUGE_T=",ponderation_ROUGE_pour_dcx); \ GET_ARGUMENT_F("VERTE_T=",ponderation_VERTE_pour_dcy); \ GET_ARGUMENT_F("BLEUE_T=",ponderation_BLEUE_pour_dcz); \ \ /* Le parametre 'prendre_la_valeur_absolue_des_differentielles' introduit le */ \ /* 20060131120029 a ete transfere dans 'v $xrv/champs_5.1A$I 20060201094519' afin */ \ /* d'en augmenter la portee... */ \ \ GET_ARGUMENT_L("rayon_compatibilite_20170303=",rayon_de_visualisation_____compatibilite_20170303); \ /* Introduit le 20170303103205... */ \ \ GET_ARGUMENT_L("R_periodiser_X=""R_per_X=",rayon_periodiser_X); \ GET_ARGUMENT_L("R_periodiser_Y=""R_per_Y=",rayon_periodiser_Y); \ GET_ARGUMENT_L("R_symetriser_X=""R_sym_X=",rayon_symetriser_X); \ GET_ARGUMENT_L("R_symetriser_Y=""R_sym_Y=",rayon_symetriser_Y); \ GET_ARGUMENT_L("R_prolonger_X=""R_pro_X=",rayon_prolonger_X); \ GET_ARGUMENT_L("R_prolonger_Y=""R_pro_Y=",rayon_prolonger_Y); \ GET_ARGUMENT_F("R_hors=",rayon_niveau_hors_image); \ /* Introduits le 20170303103414... */ \ \ GET_ARGUMENT_L("image_Rayon_interpoler=" \ ,image_Rayon__interpoler_bilineairement_ou_bicubiquement \ ); \ GET_ARGUMENT_L("image_Rayon_lineaire=" \ ,image_Rayon__utiliser_l_interpolation_bilineaire \ ); \ GET_ARGUMENT_N("image_Rayon_cubique=" \ ,image_Rayon__utiliser_l_interpolation_bilineaire \ ); \ GET_ARGUMENT_L("image_Rayon_eviter_discontinuites=" \ ,image_Rayon__eviter_les_fortes_discontinuites \ ); \ GET_ARGUMENT_F("image_Rayon_epsilon_discontinuites=" \ ,image_Rayon__epsilon_detection_des_fortes_discontinuites \ ); \ \ GET_ARGUMENT_C("imageRAYON=""RAYON=",nom_rayon); \ /* Le champ rayon a ete introduit le 20041229173848... */ \ \ GET_ARGUMENT_L("colorier_numero_points=""cnp=",colorier_avec_le_numero_des_points); \ /* Introduit le 20170213101455. Il est alors suggere de l'utiliser conjointement avec : */ \ /* */ \ /* centre_des_spheres=VRAI */ \ /* extrema_differentielles_arbitraires=FAUX */ \ /* */ \ \ FIN___D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ /* Introduit le 20060208111433 ('v $xig/fonct$vv$DEF _IMBRICATION_DES__gPROCESS_PARAMETRE'). */ \ \ Eblock #define PROCESS_ARGUMENTS_DE_VISUALISATION_DE_LA_NORMALE \ Bblock \ \ DEBUT_D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ /* Introduit le 20060208111433 ('v $xig/fonct$vv$DEF _IMBRICATION_DES__gPROCESS_PARAMETRE'). */ \ \ GET_ARGUMENT_L("normale=",visualiser_la_normale); \ GET_ARGUMENT_I("pointsN=",nombre_absolu_de_points_sur_une_normale); \ GET_ARGUMENT_F("facteurN=",facteur_de_la_normale); \ GET_ARGUMENT_F("rayonN=",facteur_du_rayon_de_visualisation_pour_la_normale); \ \ GET_ARGUMENT_F("facteur_ROUGE_N=",facteur_du_ROUGE_pour_la_normale); \ GET_ARGUMENT_F("facteur_VERTE_N=",facteur_du_VERTE_pour_la_normale); \ GET_ARGUMENT_F("facteur_BLEUE_N=",facteur_du_BLEUE_pour_la_normale); \ /* Ces trois facteurs ont ete introduits le 20060207093944... */ \ GET_ARGUMENT_F("pROUGE_N1=",ponderation1_ROUGE_pour_la_normale); \ GET_ARGUMENT_F("pVERTE_N1=",ponderation1_VERTE_pour_la_normale); \ GET_ARGUMENT_F("pBLEUE_N1=",ponderation1_BLEUE_pour_la_normale); \ \ GET_ARGUMENT_F("nROUGE_N=",niveau_ROUGE_pour_la_normale); \ GET_ARGUMENT_F("nVERTE_N=",niveau_VERTE_pour_la_normale); \ GET_ARGUMENT_F("nBLEUE_N=",niveau_BLEUE_pour_la_normale); \ GET_ARGUMENT_F("pROUGE_N2=",ponderation2_ROUGE_pour_la_normale); \ GET_ARGUMENT_F("pVERTE_N2=",ponderation2_VERTE_pour_la_normale); \ GET_ARGUMENT_F("pBLEUE_N2=",ponderation2_BLEUE_pour_la_normale); \ /* Ces six parametres ont ete introduits le 20060207110735. On notera que par symetrie */ \ /* avec les trois nouveaux parametres {pROUGE_N2,pVERTE_N2,pBLEUE_N2}, les trois anciens */ \ /* parametres {ROUGE_N,VERTE_N,BLEUE_N} furent changes en {pROUGE_N1,pVERTE_N1,pBLEUE_N1}. */ \ \ FIN___D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ /* Introduit le 20060208111433 ('v $xig/fonct$vv$DEF _IMBRICATION_DES__gPROCESS_PARAMETRE'). */ \ \ Eblock #define PROCESS_ARGUMENTS_DE_DEFINITION_DES_COORDONNEES_CURVILIGNES \ Bblock \ \ DEBUT_D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ /* Introduit le 20060208111433 ('v $xig/fonct$vv$DEF _IMBRICATION_DES__gPROCESS_PARAMETRE'). */ \ \ GET_ARGUMENT_L("luv=""lister_u_v=",lister_les_coordonnees_u_v_des_points); \ /* Introduit le 20060410111431... */ \ \ GET_ARGUMENT_L("majoration_maximum_des_coordonnees_u_v_____compatibilite_20160414=""compatibilite_20160414=" \ ,majoration_du_maximum_des_coordonnees_u_v_____compatibilite_20160414 \ ); \ GET_ARGUMENT_F("epsilon_majoration_maximum_des_coordonnees_u_v=""epsilon_maximum_u_v=""eMuv=" \ ,epsilon_de_majoration_du_maximum_des_coordonnees_u_v \ ); \ /* Introduit le 20160414102214 et complete le 20160414145313 avec le 'epsilon'... */ \ \ GET_ARGUMENT_F("mu=",minimum_de_u); \ GET_ARGUMENT_F("Mu=",maximum_de_u); \ GET_ARGUMENT_F("pas_u=""pu=",pas_de_u); \ GET_ARGUMENT_I("eu=",echantillonnage_de_u); \ GET_ARGUMENT_I("teu=",translation_de_l_echantillonnage_de_u); \ GET_ARGUMENT_F("dpu=",diviseur_du_pas_de_u); \ \ GET_ARGUMENT_F("mv=",minimum_de_v); \ GET_ARGUMENT_F("Mv=",maximum_de_v); \ GET_ARGUMENT_F("pas_v=""pv=",pas_de_v); \ GET_ARGUMENT_I("ev=",echantillonnage_de_v); \ GET_ARGUMENT_I("tev=",translation_de_l_echantillonnage_de_v); \ GET_ARGUMENT_F("dpv=",diviseur_du_pas_de_v); \ \ GET_ARGUMENT_I("nombre_inter_paralleles=""nip=""niu=""nombre_paralleles=",nombre_d_inters_u); \ GET_ARGUMENT_I("nombre_points_entre_deux_paralleles=""npp=""npu=""nombre_intervalles_entre_deux_paralleles=" \ ,nombre_de_points_dans_un_inter_u \ ); \ GET_ARGUMENT_I("nombre_inter_meridiens=""nim=""niv=""nombre_meridiens=",nombre_d_inters_v); \ GET_ARGUMENT_I("nombre_points_entre_deux_meridiens=""npm=""npv=""nombre_intervalles_entre_deux_meridiens=" \ ,nombre_de_points_dans_un_inter_v \ ); \ /* Pour ameliorer encore la comprehension, le 20161212120957 "nombre_paralleles=" et */ \ /* "nombre_meridiens=" ont ete introduits... */ \ /* */ \ /* On notera le 20200619094321 que les "nombres de points" sont en fait des */ \ /* "nombres de points moins 1" ou "nombre d'intervalles", d'ou les nouveaux arguments */ \ /* introduits a cette date ('v $xiirs/$Fnota Debut_listG_SPHE_Q1' qui a permis de */ \ /* verifier cela...). */ \ PROCESS_ARGUMENT_L("faciliter_parametrage_u_v=""fpuv=" \ ,faciliter_le_parametrage_de_u_v \ ,BLOC(VIDE;) \ ,BLOC(Bblock \ DEFV(Positive,INIT(nombre_de_points_a_visualiser \ ,SUCC(MUL3(nombre_d_inters_v \ ,nombre_d_inters_u \ ,ADD2(SUCC(nombre_de_points_dans_un_inter_u) \ ,SUCC(nombre_de_points_dans_un_inter_v) \ ) \ ) \ ) \ ) \ ); \ /* On notera le 20200402123231, le nombre de points representatifs d'une surface. Soit */ \ /* donc : */ \ /* */ \ /* nombre_paralleles=NP */ \ /* nombre_points_entre_deux_paralleles=Np2P */ \ /* nombre_meridiens=NM */ \ /* nombre_points_entre_deux_meridiens=Np2M */ \ /* */ \ /* Chaque meridien est donc represente par : */ \ /* */ \ /* NP.(Np2P+1) points */ \ /* */ \ /* Chaque parallele est donc represente par : */ \ /* */ \ /* NM.(Np2M+1) points */ \ /* */ \ /* Il y a donc au total : */ \ /* */ \ /* NM.[NP.(Np2P+1)] + NP.[NM.(Np2M+1)] = NM.NP.[(Np2P+1)+(Np2M+1)] */ \ /* */ \ /* points a visualiser... */ \ /* */ \ /* Cette variable a ete introduite le 20200403094849, ainsi que le 'SUCC(...)' qui fait */ \ /* suite a la remarque 'v $xiirs/$Fnota existence.de.65601.points'... */ \ \ Test(IFLE(nombre_de_points_a_visualiser \ ,nombre_maximal_de_points_visualisables \ ) \ ) \ Bblock \ Test(IL_FAUT(faciliter_le_parametrage_de_u_v)) \ Bblock \ Test(IFOU(IFOU(IFEQ(nombre_d_inters_u \ ,NOMBRE_D_INTERS_u \ ) \ ,IFEQ(nombre_de_points_dans_un_inter_u \ ,NOMBRE_DE_POINTS_DANS_UN_INTER_u \ ) \ ) \ ,IFOU(IFEQ(nombre_d_inters_v \ ,NOMBRE_D_INTERS_v \ ) \ ,IFEQ(nombre_de_points_dans_un_inter_v \ ,NOMBRE_DE_POINTS_DANS_UN_INTER_v \ ) \ ) \ ) \ ) \ /* Test introduit le 20161205101245... */ \ Bblock \ PRINT_ATTENTION("argument 'faciliter_parametrage_u_v=' mal place ?"); \ /* Pour voir le bon ordre de definition des arguments, 'v $xrs/surfaces.14$I 20191015170625. */ \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ \ EGAL(nombre_de_points_dans_un_inter_u \ ,MAX2(nombre_de_points_dans_un_inter_u,NOMBRE_DE_POINTS_DANS_UN_INTER_u) \ ); \ EGAL(pas_de_u,DIVI(SOUS(maximum_de_u,minimum_de_u),FLOT(nombre_d_inters_u))); \ EGAL(echantillonnage_de_u,nombre_de_points_dans_un_inter_u); \ EGAL(diviseur_du_pas_de_u,FLOT(nombre_de_points_dans_un_inter_u)); \ \ EGAL(nombre_de_points_dans_un_inter_v \ ,MAX2(nombre_de_points_dans_un_inter_v,NOMBRE_DE_POINTS_DANS_UN_INTER_v) \ ); \ EGAL(pas_de_v,DIVI(SOUS(maximum_de_v,minimum_de_v),FLOT(nombre_d_inters_v))); \ EGAL(echantillonnage_de_v,nombre_de_points_dans_un_inter_v); \ EGAL(diviseur_du_pas_de_v,FLOT(nombre_de_points_dans_un_inter_v)); \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock \ ATes \ Bblock \ PRINT_ERREUR("Trop de points seront a visualiser, la commande est donc abortee."); \ CAL1(Prer2("(%d sont a visualiser, alors que seulement %d sont visualisables)\n" \ ,nombre_de_points_a_visualiser \ ,nombre_maximal_de_points_visualisables \ ) \ ); \ /* Message introduit le 20200403094849... */ \ \ ABORT_Commande; \ Eblock \ ETes \ Eblock \ ) \ ); \ /* Introduits le 20160414104726 pour faciliter le parametrage de l'espace {u,v}... */ \ /* */ \ /* ATTENTION : l'argument "fpuv=" doit absolument etre reference APRES tous ceux qui */ \ /* participent a la definition de l'espace {u,v} etant donnee la programmation de */ \ /* 'PROCESS_ARGUMENT_L(...)'. */ \ \ FIN___D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ /* Introduit le 20060208111433 ('v $xig/fonct$vv$DEF _IMBRICATION_DES__gPROCESS_PARAMETRE'). */ \ \ Eblock #define PROCESS_ARGUMENTS_DE_DEFINITION_D_UNE_DROITE_DU_PLAN_UV \ Bblock \ \ DEBUT_D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ /* Introduit le 20060208111433 ('v $xig/fonct$vv$DEF _IMBRICATION_DES__gPROCESS_PARAMETRE'). */ \ \ GET_ARGUMENT_L("muv=""maillage_uv=",visualiser_les_points_du_maillage_uv); \ /* Introduits le 20060814185543... */ \ \ GET_ARGUMENT_L("duv=""droite_uv=",tracer_une_droite_du_plan_uv); \ GET_ARGUMENT_L("tracer_une_droite_du_plan_uv_____compatibilite_20170130=""compatibilite_20170130=" \ ,tracer_une_droite_du_plan_uv_____compatibilite_20170130 \ ); \ GET_ARGUMENT_F("Aduv=",coefficient_A_d_une_droite_du_plan_uv); \ GET_ARGUMENT_F("Bduv=",coefficient_B_d_une_droite_du_plan_uv); \ GET_ARGUMENT_F("Cduv=",coefficient_C_d_une_droite_du_plan_uv); \ GET_ARGUMENT_F("Fduv=",coefficient_F_d_une_droite_du_plan_uv); \ GET_ARGUMENT_F("Gduv=",coefficient_G_d_une_droite_du_plan_uv); \ GET_ARGUMENT_F("Hduv=",coefficient_H_d_une_droite_du_plan_uv); \ GET_ARGUMENT_F("Eduv=",epsilon_de_definition_d_une_droite_du_plan_uv); \ /* Introduits le 20060813111518 et completes le 20170124105727 avec {F,G,H}... */ \ /* */ \ /* On notera le 20170130111050 que si l'on souhaite, par exemple, une droite qui soit la */ \ /* diagonale principale du domaine [$MiNu,$MaXu]x[$MiNv,$MaXv], il faut prendre : */ \ /* */ \ /* Aduv = `calcul (($MaXv)-($MiNv))/(($MaXu)-($MiNu))` */ \ /* Bduv = -1 */ \ /* Cduv = $MiNv */ \ /* */ \ /* La "compatibilite_20170130" a ete introduite le 20170130143608... */ \ GET_ARGUMENT_F("muduv=",minimum_de_u_du_domaine_d_une_droite_du_plan_uv); \ GET_ARGUMENT_F("Muduv=",maximum_de_u_du_domaine_d_une_droite_du_plan_uv); \ GET_ARGUMENT_F("mvduv=",minimum_de_v_du_domaine_d_une_droite_du_plan_uv); \ GET_ARGUMENT_F("Mvduv=",maximum_de_v_du_domaine_d_une_droite_du_plan_uv); \ /* Introduits le 20060818092338... */ \ \ GET_ARGUMENT_C("imageADUV=",nom_imageA_Droite_uv); \ /* Introduits le 20170210130208... */ \ GET_ARGUMENT_L("imageA_Droite_uv_interpoler=" \ ,imageA_Droite_uv__interpoler_bilineairement_ou_bicubiquement \ ); \ GET_ARGUMENT_N("imageA_Droite_uv_cubique=" \ ,imageA_Droite_uv__utiliser_l_interpolation_bilineaire \ ); \ GET_ARGUMENT_L("imageA_Droite_uv_eviter_discontinuites=" \ ,imageA_Droite_uv__eviter_les_fortes_discontinuites \ ); \ GET_ARGUMENT_F("imageA_Droite_uv_epsilon_discontinuites=" \ ,imageA_Droite_uv__epsilon_detection_des_fortes_discontinuites \ ); \ /* Introduits le 20170228182517 et modifie le 20170301145128 en creant des variables */ \ /* "locales" suite a l'introduction de 'v $xrs/surfaces.12$I sgFFload_point_coordonnees_01'. */ \ \ FIN___D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ /* Introduit le 20060208111433 ('v $xig/fonct$vv$DEF _IMBRICATION_DES__gPROCESS_PARAMETRE'). */ \ \ Eblock \ /* Introduit le 20060831112009 afin d'isoler ces parametres de ceux qui sont definis dans */ \ /* 'PROCESS_ARGUMENTS_DE_DEFINITION_DES_COORDONNEES_CURVILIGNES' afin de les rendre non */ \ /* accessibles si necessaire (par exemple dans 'v $xrs/CalabiYau.12$K' ainsi que dans */ \ /* 'v $xrs/CalabiYau.12$K' pour lesquels la surface est en fait un assemblage de surfaces */ \ /* elementaires -ou "patches"-...). */ #define PROCESS_ARGUMENTS_DE_DEFINITION_DE_LA_COORDONNEE_DE_PARAMETRAGE_DU_PLAN \ Bblock \ \ DEBUT_D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ \ GET_ARGUMENT_F("mt=",minimum_de_t); \ GET_ARGUMENT_F("Mt=",maximum_de_t); \ GET_ARGUMENT_F("pas_t=",pas_de_t); \ /* On notera que l'on ne peut utiliser ici : */ \ /* */ \ /* GET_ARGUMENT_F("pt=",pas_de_t); */ \ /* */ \ /* a cause de : */ \ /* */ \ /* GET_ARGUMENT_L("pt=""projeter_textures=",...); */ \ /* */ \ /* ci-dessus (dans 'PROCESS_ARGUMENTS_DE_PROJECTION_DE_LA_SURFACE')... */ \ \ FIN___D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ \ Eblock \ /* Introduit le 20220513175413 afin d'isoler ces parametres de ceux qui sont definis dans */ #define PROCESS_ARGUMENTS_DE_DIFFERENTIATION_PAR_DIFFERENCES \ Bblock \ \ DEBUT_D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ /* Introduit le 20060208111433 ('v $xig/fonct$vv$DEF _IMBRICATION_DES__gPROCESS_PARAMETRE'). */ \ \ GET_ARGUMENT_L("hddu=",le_pas_de_u_de_differentiation_est_homothetique); \ GET_ARGUMENT_L("hddv=",le_pas_de_v_de_differentiation_est_homothetique); \ /* Introduit le 20041119150651... */ \ \ GET_ARGUMENT_F("ddu=",diviseur_de_differentiation_de_u); \ GET_ARGUMENT_F("ddv=",diviseur_de_differentiation_de_v); \ \ GET_ARGUMENT_L("calcul_differentielles_____compatibilite_2009110217=""compatibilite_2009110217=" \ ,calcul_des_differentielles_avec_u_v_____compatibilite_2009110217 \ ); \ /* Introduit le 20091102172230... */ \ \ GET_ARGUMENT_F("dxu=",ponderation_de__u_____dans_dx); \ GET_ARGUMENT_F("dxv=",ponderation_de__v_____dans_dx); \ /* Introduit le 20090723214313... */ \ GET_ARGUMENT_F("dxFx=",ponderation_de_Fx_____dans_dx); \ GET_ARGUMENT_F("dxFxu=",ponderation_de_Fx_u___dans_dx); \ GET_ARGUMENT_F("dxFxv=",ponderation_de_Fx___v_dans_dx); \ GET_ARGUMENT_F("dxFxuv=",ponderation_de_Fx_u_v_dans_dx); \ \ GET_ARGUMENT_F("dxFy=",ponderation_de_Fy_____dans_dx); \ GET_ARGUMENT_F("dxFyu=",ponderation_de_Fy_u___dans_dx); \ GET_ARGUMENT_F("dxFyv=",ponderation_de_Fy___v_dans_dx); \ GET_ARGUMENT_F("dxFyuv=",ponderation_de_Fy_u_v_dans_dx); \ \ GET_ARGUMENT_F("dxFz=",ponderation_de_Fz_____dans_dx); \ GET_ARGUMENT_F("dxFzu=",ponderation_de_Fz_u___dans_dx); \ GET_ARGUMENT_F("dxFzv=",ponderation_de_Fz___v_dans_dx); \ GET_ARGUMENT_F("dxFzuv=",ponderation_de_Fz_u_v_dans_dx); \ \ GET_ARGUMENT_F("dyu=",ponderation_de__u_____dans_dy); \ GET_ARGUMENT_F("dyv=",ponderation_de__v_____dans_dy); \ /* Introduit le 20090723214313... */ \ GET_ARGUMENT_F("dyFx=",ponderation_de_Fx_____dans_dy); \ GET_ARGUMENT_F("dyFxu=",ponderation_de_Fx_u___dans_dy); \ GET_ARGUMENT_F("dyFxv=",ponderation_de_Fx___v_dans_dy); \ GET_ARGUMENT_F("dyFxuv=",ponderation_de_Fx_u_v_dans_dy); \ \ GET_ARGUMENT_F("dyFy=",ponderation_de_Fy_____dans_dy); \ GET_ARGUMENT_F("dyFyu=",ponderation_de_Fy_u___dans_dy); \ GET_ARGUMENT_F("dyFyv=",ponderation_de_Fy___v_dans_dy); \ GET_ARGUMENT_F("dyFyuv=",ponderation_de_Fy_u_v_dans_dy); \ \ GET_ARGUMENT_F("dyFz=",ponderation_de_Fz_____dans_dy); \ GET_ARGUMENT_F("dyFzu=",ponderation_de_Fz_u___dans_dy); \ GET_ARGUMENT_F("dyFzv=",ponderation_de_Fz___v_dans_dy); \ GET_ARGUMENT_F("dyFzuv=",ponderation_de_Fz_u_v_dans_dy); \ \ GET_ARGUMENT_F("dzu=",ponderation_de__u_____dans_dz); \ GET_ARGUMENT_F("dzv=",ponderation_de__v_____dans_dz); \ /* Introduit le 20090723214313... */ \ GET_ARGUMENT_F("dzFx=",ponderation_de_Fx_____dans_dz); \ GET_ARGUMENT_F("dzFxu=",ponderation_de_Fx_u___dans_dz); \ GET_ARGUMENT_F("dzFxv=",ponderation_de_Fx___v_dans_dz); \ GET_ARGUMENT_F("dzFxuv=",ponderation_de_Fx_u_v_dans_dz); \ \ GET_ARGUMENT_F("dzFy=",ponderation_de_Fy_____dans_dz); \ GET_ARGUMENT_F("dzFyu=",ponderation_de_Fy_u___dans_dz); \ GET_ARGUMENT_F("dzFyv=",ponderation_de_Fy___v_dans_dz); \ GET_ARGUMENT_F("dzFyuv=",ponderation_de_Fy_u_v_dans_dz); \ \ GET_ARGUMENT_F("dzFz=",ponderation_de_Fz_____dans_dz); \ GET_ARGUMENT_F("dzFzu=",ponderation_de_Fz_u___dans_dz); \ GET_ARGUMENT_F("dzFzv=",ponderation_de_Fz___v_dans_dz); \ GET_ARGUMENT_F("dzFzuv=",ponderation_de_Fz_u_v_dans_dz); \ \ FIN___D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ /* Introduit le 20060208111433 ('v $xig/fonct$vv$DEF _IMBRICATION_DES__gPROCESS_PARAMETRE'). */ \ /* */ \ /* Le 20090606172901 furent introduites les ponderations relatives a {cx,cy,cz} (baptisees */ \ /* 'ponderation_de_F?_____dans_d?') nulles par defaut pour des raisons de compatibilite */ \ /* anterieure... */ \ \ Eblock \ /* Introduit le 20041118143736... */ #define PROCESS_ARGUMENTS_DE_PERMUTATION_DES_COORDONNEES_ET_DES_DIFFERENTIELLES \ Bblock \ \ DEBUT_D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ /* Introduit le 20060208111433 ('v $xig/fonct$vv$DEF _IMBRICATION_DES__gPROCESS_PARAMETRE'). */ \ \ GET_ARGUMENT_L("permuter_coordonnees_differentielles=""pcd=",permuter_les_coordonnees_et_les_differentielles); \ \ FIN___D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ /* Introduit le 20060208111433 ('v $xig/fonct$vv$DEF _IMBRICATION_DES__gPROCESS_PARAMETRE'). */ \ \ Eblock \ /* Introduit le 20050615083350... */ #ifdef PRAGMA_CPP_____AUTORISER_LE_GooF # ifdef SI_L_ARITHMETIQUE_ETENDUE_DES_NOMBRES_FLOTTANTS_EST_ACTIVABLE_ALORS_L_UTILISER_AUSSI_POUR_LES_DERIVEES # define PROCESS_ARGUMENTS_D_ACTIVATION_DE_L_ARITHMETIQUE_ETENDUE_ET_NON_BASIQUE_POUR_dFx_dFy_dFz \ Bblock \ \ DEBUT_D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ \ @ ifndef PRAGMA_CPP_____MODULE_NON_DERIVABLE@@@ \ PROCESS_ARGUMENT_L("arithmetique_etendue_dFx_dFy_dFz=""ariedF=""ariedf=""aried=" \ ,dFx_dFy_dFz____`use_arithmetique_etendue_et_non_basique \ ,BLOC(VIDE;) \ ,BLOC(Bblock \ EGAL(si_le_GooF_est_activable`use_arithmetique_etendue_et_non_basique \ ,NEUL(dFx_dFy_dFz____`use_arithmetique_etendue_et_non_basique) \ ); \ Eblock \ ) \ ); \ PROCESS_ARGUMENT_N("arithmetique_de_base_dFx_dFy_dFz=""aribdF=""aribdf=""aribd=" \ ,dFx_dFy_dFz____`use_arithmetique_etendue_et_non_basique \ ,BLOC(VIDE;) \ ,BLOC(Bblock \ EGAL(si_le_GooF_est_activable`use_arithmetique_etendue_et_non_basique \ ,NOTL(dFx_dFy_dFz____`use_arithmetique_etendue_et_non_basique) \ ); \ Eblock \ ) \ ); \ /* Le 20201012170616, je decouvre que ce sont ces directives conditionnees par la variable */ \ /* 'PRAGMA_CPP_____MODULE_NON_DERIVABLE' qui sont responsables de l'apparition du message */ \ /* 'v $xig/fonct$vv$DEF le.calcul.du.nombre.maximal.d.arguments.regroupes.en' lorsque */ \ /* l'option : */ \ /* */ \ /* @define PRAGMA_CPP_____MODULE_NON_DERIVABLE */ \ /* */ \ /* est presente dans 'v $xrs/Horner42.11$K PRAGMA_CPP_____MODULE_NON_DERIVABLE'... */ \ /* Supprimer ces directives fait disparaitre le probleme... */ \ /* */ \ /* En fait le probleme venait de 'v $xcc/cpp$Z 20201013131140' qui faisait que certaines */ \ /* recuperations d'arguments qui etaient conditionnelles (ici via 'MODULE_NON_DERIVABLE') */ \ /* etaient malgre tout comptabilisees dans 'v $xcc/cpp$Z NoMbRe_PaRaMeTrEs' et dans ce */ \ /* cas il semblait y en avoir plus qu'en realite... */ \ @ Aifndef PRAGMA_CPP_____MODULE_NON_DERIVABLE@@@ \ BLOC(VIDE;); \ @ Eifndef PRAGMA_CPP_____MODULE_NON_DERIVABLE@@@ \ \ FIN___D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ \ Eblock \ /* Introduit le 20080125084000 et decoupe en {Fx,Fy,Fz} et {dFX,dFy,dFz} le 20080126105643. */ # Aifdef SI_L_ARITHMETIQUE_ETENDUE_DES_NOMBRES_FLOTTANTS_EST_ACTIVABLE_ALORS_L_UTILISER_AUSSI_POUR_LES_DERIVEES # define PROCESS_ARGUMENTS_D_ACTIVATION_DE_L_ARITHMETIQUE_ETENDUE_ET_NON_BASIQUE_POUR_dFx_dFy_dFz \ Bblock \ \ DEBUT_D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ \ BLOC(VIDE;); \ \ FIN___D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ \ Eblock \ /* Introduit le 20080125084000 et decoupe en {Fx,Fy,Fz} et {dFX,dFy,dFz} le 20080126105643. */ # Eifdef SI_L_ARITHMETIQUE_ETENDUE_DES_NOMBRES_FLOTTANTS_EST_ACTIVABLE_ALORS_L_UTILISER_AUSSI_POUR_LES_DERIVEES # define PROCESS_ARGUMENTS_D_ACTIVATION_DE_L_ARITHMETIQUE_ETENDUE_ET_NON_BASIQUE_POUR_Fx_Fy_Fz \ Bblock \ \ DEBUT_D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ \ PROCESS_ARGUMENT_L("arithmetique_etendue_Fx_Fy_Fz=""arieF=""arief=" \ ,Fx_Fy_Fz____`use_arithmetique_etendue_et_non_basique \ ,BLOC(VIDE;) \ ,BLOC(Bblock \ EGAL(si_le_GooF_est_activable`use_arithmetique_etendue_et_non_basique \ ,Fx_Fy_Fz____`use_arithmetique_etendue_et_non_basique \ ); \ Eblock \ ) \ ); \ PROCESS_ARGUMENT_N("arithmetique_de_base_Fx_Fy_Fz=""aribF=""aribf=" \ ,Fx_Fy_Fz____`use_arithmetique_etendue_et_non_basique \ ,BLOC(VIDE;) \ ,BLOC(Bblock \ EGAL(si_le_GooF_est_activable`use_arithmetique_etendue_et_non_basique \ ,NOTL(Fx_Fy_Fz____`use_arithmetique_etendue_et_non_basique) \ ); \ Eblock \ ) \ ); \ \ PROCESS_ARGUMENTS_D_ACTIVATION_DE_L_ARITHMETIQUE_ETENDUE_ET_NON_BASIQUE_POUR_dFx_dFy_dFz; \ \ FIN___D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ \ Eblock \ /* Introduit le 20080125084000 et decoupe en {Fx,Fy,Fz} et {dFX,dFy,dFz} le 20080126105643. */ #Aifdef PRAGMA_CPP_____AUTORISER_LE_GooF # define PROCESS_ARGUMENTS_D_ACTIVATION_DE_L_ARITHMETIQUE_ETENDUE_ET_NON_BASIQUE_POUR_Fx_Fy_Fz \ Bblock \ \ DEBUT_D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ \ BLOC(VIDE;); \ \ FIN___D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \ \ Eblock \ /* Introduit le 20080125084000... */ #Eifdef PRAGMA_CPP_____AUTORISER_LE_GooF