/*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D ' U N P R O J E C T O R T R I D I M E N S I O N N E L : */ /* */ /* */ /* Author of '$xrs/project3D.11$K' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 20050619121603). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* I N T E R F A C E ' listG ' : */ /* */ /* */ /* :Debut_listG: */ /* :Fin_listG: */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D I R E C T I V E S S P E C I F I Q U E S D E C O M P I L A T I O N : */ /* */ /*************************************************************************************************************************************/ @define PRAGMA_CPP_____MODULE_NON_DERIVABLE @define PRAGMA_CL_____MODULE_NON_OPTIMISABLE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* F I C H I E R S D ' I N C L U D E S : */ /* */ /*************************************************************************************************************************************/ #include INCLUDES_BASE #include image_image_IMAGESF_EXT /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N S D E B A S E E T U N I V E R S E L L E S : */ /* */ /*************************************************************************************************************************************/ #include xrv/dimensionnement.01.vv.I" /* Introduit le 20111209173117... */ #include xrk/attractor.11.I" #include xrv/particule.41.I" /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 3 */ /* D E F I N I T I O N D E L ' E S P A C E P H Y S I Q U E D A N S R ( D E B U T ) : */ /* */ /* */ /* Nota : */ /* */ /* Les extrema des coordonnees {x,y,z} */ /* ainsi que ceux de leurs differentielles */ /* {dx,dy,dz} sont fixees un peu arbitrairement */ /* et sans etre parametrees. */ /* */ /* */ /*************************************************************************************************************************************/ #include xrs/project3D.18.I" /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 3 */ /* D E F I N I T I O N D E L ' E S P A C E P H Y S I Q U E D A N S R ( D E B U T ) : */ /* */ /*************************************************************************************************************************************/ #include xrk/attractor.12.I" #include xrs/project3D.19.I" /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D ' U N P R O J E C T O R T R I D I M E N S I O N N E L : */ /* */ /* */ /* Definition de la variete ('v $xrs/project3D.11$K') : */ /* */ /* Le projector tridimensionnel est defini parametriquement */ /* en fonction des trois parametres 'u', 'v' et 'w' : */ /* */ /* F (u,v,w) = A .AlbumX(u,v,w) + T */ /* x x x */ /* */ /* F (u,v,w) = A .AlbumY(u,v,w) + T */ /* y y y */ /* */ /* F (u,v,w) = A .AlbumZ(u,v,w) + T */ /* z z z */ /* */ /* (ou 'Album?(u,v,w)' sont des albums flottants indexes */ /* par (u,v,w) -coordonnees flottantes {Xf,Yf,Zf} respectivement- */ /* a l'aide d'une procedure d'interpolation bicubique) */ /* */ /* avec : */ /* */ /* u E [ 0 , 1 ] (--O--> Xf) */ /* */ /* v E [ 0 , 1 ] (--O--> Yf) */ /* */ /* w E [ 0 , 1 ] (--O--> Zf) */ /* */ /* */ /*************************************************************************************************************************************/ #include xrs/project3D.12.I" #include xrs/project3D.14.I" /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E S T R O I S A L B U M S D E F I N I S S A N T */ /* L E S T R O I S P R O J E C T I O N S : */ /* */ /*************************************************************************************************************************************/ #define VISUALISER_UNE_VARIETE_TRIDIMENSIONNELLE \ VRAI DEFV(Local,DEFV(Logical,INIT(visualiser_une_variete_tridimensionnelle,VISUALISER_UNE_VARIETE_TRIDIMENSIONNELLE))); /* Ceci fut introduit le 20060502145146 afin de permettre de visualiser une variete */ /* tridimensionnelle (ce qui correspond a l'unique fonction anterieure) ou bien un */ /* ensemble de surfaces bidimensionnelles... */ #define AMPLIFICATEUR_DES_IMAGES \ FU DEFV(Local,DEFV(Float,INIT(Album_Fx_amplificateur,AMPLIFICATEUR_DES_IMAGES))); DEFV(Local,DEFV(Float,INIT(Album_Fy_amplificateur,AMPLIFICATEUR_DES_IMAGES))); DEFV(Local,DEFV(Float,INIT(Album_Fz_amplificateur,AMPLIFICATEUR_DES_IMAGES))); /* Amplificateurs pour {Fx,Fy,Fz}. */ #define TRANSLATEUR_DES_IMAGES \ FZERO DEFV(Local,DEFV(Float,INIT(Album_Fx_translateur,TRANSLATEUR_DES_IMAGES))); DEFV(Local,DEFV(Float,INIT(Album_Fy_translateur,TRANSLATEUR_DES_IMAGES))); DEFV(Local,DEFV(Float,INIT(Album_Fz_translateur,TRANSLATEUR_DES_IMAGES))); /* Translateurs pour {Fx,Fy,Fz}. */ #define PERIODISER_u_v_w \ VRAI DEFV(Local,DEFV(Logical,INIT(Album_Fx_periodiser_u,PERIODISER_u_v_w))); DEFV(Local,DEFV(Logical,INIT(Album_Fy_periodiser_u,PERIODISER_u_v_w))); DEFV(Local,DEFV(Logical,INIT(Album_Fz_periodiser_u,PERIODISER_u_v_w))); /* Faut-il periodiser {u} pour {Fx,Fy,Fz} ? */ DEFV(Local,DEFV(Logical,INIT(Album_Fx_periodiser_v,PERIODISER_u_v_w))); DEFV(Local,DEFV(Logical,INIT(Album_Fy_periodiser_v,PERIODISER_u_v_w))); DEFV(Local,DEFV(Logical,INIT(Album_Fz_periodiser_v,PERIODISER_u_v_w))); /* Faut-il periodiser {v} pour {Fx,Fy,Fz} ? */ DEFV(Local,DEFV(Logical,INIT(Album_Fx_periodiser_w,PERIODISER_u_v_w))); DEFV(Local,DEFV(Logical,INIT(Album_Fy_periodiser_w,PERIODISER_u_v_w))); DEFV(Local,DEFV(Logical,INIT(Album_Fz_periodiser_w,PERIODISER_u_v_w))); /* Faut-il periodiser {w} pour {Fx,Fy,Fz} ? */ #define SYMETRISER_u_v_w \ FAUX DEFV(Local,DEFV(Logical,INIT(Album_Fx_symetriser_u,SYMETRISER_u_v_w))); DEFV(Local,DEFV(Logical,INIT(Album_Fy_symetriser_u,SYMETRISER_u_v_w))); DEFV(Local,DEFV(Logical,INIT(Album_Fz_symetriser_u,SYMETRISER_u_v_w))); /* Faut-il periodiser {u} pour {Fx,Fy,Fz} ? Ceci a ete introduit le 20050721102546... */ DEFV(Local,DEFV(Logical,INIT(Album_Fx_symetriser_v,SYMETRISER_u_v_w))); DEFV(Local,DEFV(Logical,INIT(Album_Fy_symetriser_v,SYMETRISER_u_v_w))); DEFV(Local,DEFV(Logical,INIT(Album_Fz_symetriser_v,SYMETRISER_u_v_w))); /* Faut-il periodiser {v} pour {Fx,Fy,Fz} ? Ceci a ete introduit le 20050721102546... */ DEFV(Local,DEFV(Logical,INIT(Album_Fx_symetriser_w,SYMETRISER_u_v_w))); DEFV(Local,DEFV(Logical,INIT(Album_Fy_symetriser_w,SYMETRISER_u_v_w))); DEFV(Local,DEFV(Logical,INIT(Album_Fz_symetriser_w,SYMETRISER_u_v_w))); /* Faut-il periodiser {w} pour {Fx,Fy,Fz} ? Ceci a ete introduit le 20050721102546... */ #define PROLONGER_u_v_w \ FAUX DEFV(Local,DEFV(Logical,INIT(Album_Fx_prolonger_u,PROLONGER_u_v_w))); DEFV(Local,DEFV(Logical,INIT(Album_Fy_prolonger_u,PROLONGER_u_v_w))); DEFV(Local,DEFV(Logical,INIT(Album_Fz_prolonger_u,PROLONGER_u_v_w))); /* Faut-il prolonger {u} pour {Fx,Fy,Fz} ? */ DEFV(Local,DEFV(Logical,INIT(Album_Fx_prolonger_v,PROLONGER_u_v_w))); DEFV(Local,DEFV(Logical,INIT(Album_Fy_prolonger_v,PROLONGER_u_v_w))); DEFV(Local,DEFV(Logical,INIT(Album_Fz_prolonger_v,PROLONGER_u_v_w))); /* Faut-il prolonger {v} pour {Fx,Fy,Fz} ? */ DEFV(Local,DEFV(Logical,INIT(Album_Fx_prolonger_w,PROLONGER_u_v_w))); DEFV(Local,DEFV(Logical,INIT(Album_Fy_prolonger_w,PROLONGER_u_v_w))); DEFV(Local,DEFV(Logical,INIT(Album_Fz_prolonger_w,PROLONGER_u_v_w))); /* Faut-il prolonger {w} pour {Fx,Fy,Fz} ? */ #define NIVEAU_HORS_PROJECTION \ FZERO DEFV(Local,DEFV(genere_Float,INIT(Album_Fx_niveau_hors_album,NIVEAU_HORS_PROJECTION))); DEFV(Local,DEFV(genere_Float,INIT(Album_Fy_niveau_hors_album,NIVEAU_HORS_PROJECTION))); DEFV(Local,DEFV(genere_Float,INIT(Album_Fz_niveau_hors_album,NIVEAU_HORS_PROJECTION))); /* Niveau hors-album pour {Fx,Fy,Fz}. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* F O N C T I O N S D E V I S U A L I S A T I O N E T D ' I N T E R P O L A T I O N : */ /* */ /*************************************************************************************************************************************/ #include xrs/volumes.21.I" #define RENORMALISER_ARBITRAIREMENT_LES_DIFFERENTIELLES \ FAUX \ /* Pour ne pas renormaliser arbitrairement les differentielles, et ce afin de prendre en */ \ /* compte leur extrema veritables dans 'RENORMALISATION_D_UNE_LISTE_DE_POINTS'. Ceci a ete */ \ /* introduit le 20050621111640... */ \ /* */ \ /* Le 20060505173308 en calculant 'v $xiirs/SPHE.72' et 'v $xiirs/SPHE.73.2D', j'ai note */ \ /* une difference de comportement au niveau du parametre "eda=" (ou de son "complement" */ \ /* "edc=") venant du fait que le programme 'v $xrs/project2D.11$K' ne definit pas */ \ /* 'RENORMALISER_ARBITRAIREMENT_LES_DIFFERENTIELLES' et c'est donc la valeur par */ \ /* defaut ('VRAI') qui est utilisee. Alors qu'en ce qui concerne 'v $xrs/project3D.11$K', */ \ /* celui-ci lui donne la valeur 'FAUX', ce qui est donc fait ici... */ #define EDITER_LES_EXTREMA_S_ILS_SONT_HORS_PREVISIONS \ FAUX \ /* Afin de ne pas editer par defaut a la fin la valeur des extrema de {x,y,z} et {dx,dy,dz} */ \ /* lorsqu'ils sont en dehors de {?min_ESPACE,?max_ESPACE} et de {d?min_ESPACE,d?max_ESPACE} */ \ /* respectivement. */ #include xci/sequence.01.I" /* ATTENTION, on definit ainsi le symbole 'DERNIERE_IMAGE' qui ne sert a rien ici, puisque */ /* c'est en effet 'Zmax' qui joue ce role... */ #include xrs/project3D.13.I" /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E S T R O I S F O N C T I O N S ' F ' : */ /* */ /*************************************************************************************************************************************/ #include xrs/project3D.11.I" /* ATTENTION, il est imperatif que les fonctions derivables formellement soient definies */ /* dans un fichier a part afin qu'elles ne soient pas l'objet d'une double definition. En */ /* effet, on trouve dans 'v $xcc/cpp$Z' : */ /* */ /* $CA $module$w */ /* | $xcp/cpp$X ... -c$PASSE_D -e$PASSE_5 */ /* > $fichierR */ /* */ /* Ainsi, si par exemple la definition de 'RAYON(h,theta)' etait faite localement dans le */ /* fichier '$xrf/recursif.11$K', cette definition apparaitrait deux fois dans le fichier */ /* '$module$w' : une premiere fois en tete, provenant de '$PASSE_D' ou l'on ne trouve que */ /* les definitions du type '-define ...', puis une deuxieme fois a la suite, la ou se trouve */ /* concatene au fichier '$module$W' des '-define ...' le fichier '$fichierA' a compiler... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* P O U R D E S R A I S O N S D E C O M P A T I B I L I T E : */ /* */ /*************************************************************************************************************************************/ #include xrk/integr.1B.vv.I" /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E S I N I T I A L I S A T I O N S : */ /* */ /*************************************************************************************************************************************/ #include xrk/attractor.18.I" /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D ' U N P R O J E C T O R T R I D I M E N S I O N N E L : */ /* */ /*************************************************************************************************************************************/ BCommande(nombre_d_arguments,arguments) /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock #include xrs/volumes.41.I" /* Introduit le 20150528140534... */ DEFV(CHAR,INIC(POINTERc(nom_albumFx),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_postfixeFx),NOM_UNDEF_VIDE)); DEFV(Int,INIT(premiere_imageFx,PREMIERE_IMAGE)); DEFV(Int,INIT(pas_des_imagesFx,PAS_DES_IMAGES)); DEFV(Int,INIT(nombre_de_chiffresFx,NOMBRE_DE_CHIFFRES)); /* Definition de l'album 'Fx'... */ DEFV(CHAR,INIC(POINTERc(nom_albumFy),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_postfixeFy),NOM_UNDEF_VIDE)); DEFV(Int,INIT(premiere_imageFy,PREMIERE_IMAGE)); DEFV(Int,INIT(pas_des_imagesFy,PAS_DES_IMAGES)); DEFV(Int,INIT(nombre_de_chiffresFy,NOMBRE_DE_CHIFFRES)); /* Definition de l'album 'Fy'... */ DEFV(CHAR,INIC(POINTERc(nom_albumFz),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_postfixeFz),NOM_UNDEF_VIDE)); DEFV(Int,INIT(premiere_imageFz,PREMIERE_IMAGE)); DEFV(Int,INIT(pas_des_imagesFz,PAS_DES_IMAGES)); DEFV(Int,INIT(nombre_de_chiffresFz,NOMBRE_DE_CHIFFRES)); /* Definition de l'album 'Fz'... */ DEFV(Logical,INIT(Album_Fx__interpoler_bilineairement_ou_bicubiquement ,FFAload_point_coordonnees_01_____interpoler_bilineairement_ou_bicubiquement ) ); DEFV(Logical,INIT(Album_Fx__utiliser_l_interpolation_bilineaire ,FFAload_point_coordonnees_01_____utiliser_l_interpolation_bilineaire ) ); DEFV(Logical,INIT(Album_Fy__interpoler_bilineairement_ou_bicubiquement ,FFAload_point_coordonnees_01_____interpoler_bilineairement_ou_bicubiquement ) ); DEFV(Logical,INIT(Album_Fy__utiliser_l_interpolation_bilineaire ,FFAload_point_coordonnees_01_____utiliser_l_interpolation_bilineaire ) ); DEFV(Logical,INIT(Album_Fz__interpoler_bilineairement_ou_bicubiquement ,FFAload_point_coordonnees_01_____interpoler_bilineairement_ou_bicubiquement ) ); DEFV(Logical,INIT(Album_Fz__utiliser_l_interpolation_bilineaire ,FFAload_point_coordonnees_01_____utiliser_l_interpolation_bilineaire ) ); /* Definition des interpolations des albums {Fx,Fy,Fz} (introduite le 20150528104916). */ /* */ /* Je rappelle le 20200727133833 que ces differents parametres initialises a l'aide des */ /* parametres 'FFAload_point_coordonnees_01_____...' sont en fait utilises explicitement */ /* dans 'v $xrs/project3D.11$I Fx_Projector3D_1' par exemple... */ #include xrs/volumes.22.I" /*..............................................................................................................................*/ BSaveModifyVariable(Logical,S_ACCELERATEUR__ALOAD_POINT_COORDONNEES_01_____utiliser_l_accelerateur,VRAI); /* Introduit le 20120620091925... */ EGAL(AXES_COORDONNEES_FERMES_OUVERTS_____compatibilite_20090929,VRAI); /* Introduit le 20101005092842 car, en effet, sans cela les images faites anterieurement */ /* au 20090929092932 n'etaient pas reproductibles (des defauts importants apparaissaient */ /* en particulier a la peripherie des "objets"). */ INITIALISATIONS_GENERALES; /* Initialisations generales faites au tout debut... */ #include xrv/champs_5.1A.I" #define DEFINITION_DES_INTERPOLATIONS_Fx_Fy_Fz /* Afin de generer les 'GET_ARGUMENT_L(...)' de compatibilite (introduit le 20150528104916). */ #include xrs/volumes.13.I" GET_ARGUMENTSv(nombre_d_arguments ,BLOC(PROCESS_ARGUMENTS_GEOMETRIQUES; GET_ARGUMENT_L("variete_tridimensionnelle=""3D=",visualiser_une_variete_tridimensionnelle); GET_ARGUMENT_N("variete_bidimensionnelle=""2D=",visualiser_une_variete_tridimensionnelle); GET_ARGUMENT_C("albumFx=""Fx=",nom_albumFx); GET_ARGUMENT_C("postfixeFx=",nom_postfixeFx); GET_ARGUMENT_I("premiereFx=",premiere_imageFx); GET_ARGUMENT_I("pasFx=",pas_des_imagesFx); GET_ARGUMENT_I("chiffresFx=",nombre_de_chiffresFx); GET_ARGUMENT_C("albumFy=""Fy=",nom_albumFy); GET_ARGUMENT_C("postfixeFy=",nom_postfixeFy); GET_ARGUMENT_I("premiereFy=",premiere_imageFy); GET_ARGUMENT_I("pasFy=",pas_des_imagesFy); GET_ARGUMENT_I("chiffresFy=",nombre_de_chiffresFy); GET_ARGUMENT_C("albumFz=""Fz=",nom_albumFz); GET_ARGUMENT_C("postfixeFz=",nom_postfixeFz); GET_ARGUMENT_I("premiereFz=",premiere_imageFz); GET_ARGUMENT_I("pasFz=",pas_des_imagesFz); GET_ARGUMENT_I("chiffresFz=",nombre_de_chiffresFz); GET_ARGUMENT_F("aFx=",Album_Fx_amplificateur); GET_ARGUMENT_F("tFx=""bFx=",Album_Fx_translateur); GET_ARGUMENT_F("aFy=",Album_Fy_amplificateur); GET_ARGUMENT_F("tFy=""bFy=",Album_Fy_translateur); GET_ARGUMENT_F("aFz=",Album_Fz_amplificateur); GET_ARGUMENT_F("tFz=""bFz=",Album_Fz_translateur); GET_ARGUMENT_L("Fx_periodiser_u=""Fx_per_u=",Album_Fx_periodiser_u); GET_ARGUMENT_L("Fx_symetriser_u=""Fx_sym_u=",Album_Fx_symetriser_u); GET_ARGUMENT_L("Fx_prolonger_u=""Fx_pro_u=",Album_Fx_prolonger_u); GET_ARGUMENT_L("Fx_periodiser_v=""Fx_per_v=",Album_Fx_periodiser_v); GET_ARGUMENT_L("Fx_symetriser_v=""Fx_sym_v=",Album_Fx_symetriser_v); GET_ARGUMENT_L("Fx_prolonger_v=""Fx_pro_v=",Album_Fx_prolonger_v); GET_ARGUMENT_L("Fx_periodiser_w=""Fx_per_w=",Album_Fx_periodiser_w); GET_ARGUMENT_L("Fx_symetriser_w=""Fx_sym_w=",Album_Fx_symetriser_w); GET_ARGUMENT_L("Fx_prolonger_w=""Fx_pro_w=",Album_Fx_prolonger_w); GET_ARGUMENT_F("Fx_hors=",Album_Fx_niveau_hors_album); GET_ARGUMENT_L("Fx_interpoler=",Album_Fx__interpoler_bilineairement_ou_bicubiquement); GET_ARGUMENT_L("Fx_lineaire=""Fx_bilineaire=",Album_Fx__utiliser_l_interpolation_bilineaire); GET_ARGUMENT_N("Fx_cubique=""Fx_bicubique=",Album_Fx__utiliser_l_interpolation_bilineaire); /* Arguments introduits le 20150528104916... */ GET_ARGUMENT_L("Fy_periodiser_u=""Fy_per_u=",Album_Fy_periodiser_u); GET_ARGUMENT_L("Fy_symetriser_u=""Fy_sym_u=",Album_Fy_symetriser_u); GET_ARGUMENT_L("Fy_prolonger_u=""Fy_pro_u=",Album_Fy_prolonger_u); GET_ARGUMENT_L("Fy_periodiser_v=""Fy_per_v=",Album_Fy_periodiser_v); GET_ARGUMENT_L("Fy_symetriser_v=""Fy_sym_v=",Album_Fy_symetriser_v); GET_ARGUMENT_L("Fy_prolonger_v=""Fy_pro_v=",Album_Fy_prolonger_v); GET_ARGUMENT_L("Fy_periodiser_w=""Fy_per_w=",Album_Fy_periodiser_w); GET_ARGUMENT_L("Fy_symetriser_w=""Fy_sym_w=",Album_Fy_symetriser_w); GET_ARGUMENT_L("Fy_prolonger_w=""Fy_pro_w=",Album_Fy_prolonger_w); GET_ARGUMENT_F("Fy_hors=",Album_Fy_niveau_hors_album); GET_ARGUMENT_L("Fy_interpoler=",Album_Fy__interpoler_bilineairement_ou_bicubiquement); GET_ARGUMENT_L("Fy_lineaire=""Fy_bilineaire=",Album_Fy__utiliser_l_interpolation_bilineaire); GET_ARGUMENT_N("Fy_cubique=""Fy_bicubique=",Album_Fy__utiliser_l_interpolation_bilineaire); /* Arguments introduits le 20150528104916... */ GET_ARGUMENT_L("Fz_periodiser_u=""Fz_per_u=",Album_Fz_periodiser_u); GET_ARGUMENT_L("Fz_symetriser_u=""Fz_sym_u=",Album_Fz_symetriser_u); GET_ARGUMENT_L("Fz_prolonger_u=""Fz_pro_u=",Album_Fz_prolonger_u); GET_ARGUMENT_L("Fz_periodiser_v=""Fz_per_v=",Album_Fz_periodiser_v); GET_ARGUMENT_L("Fz_symetriser_v=""Fz_sym_v=",Album_Fz_symetriser_v); GET_ARGUMENT_L("Fz_prolonger_v=""Fz_pro_v=",Album_Fz_prolonger_v); GET_ARGUMENT_L("Fz_periodiser_w=""Fz_per_w=",Album_Fz_periodiser_w); GET_ARGUMENT_L("Fz_symetriser_w=""Fz_sym_w=",Album_Fz_symetriser_w); GET_ARGUMENT_L("Fz_prolonger_w=""Fz_pro_w=",Album_Fz_prolonger_w); GET_ARGUMENT_F("Fz_hors=",Album_Fz_niveau_hors_album); GET_ARGUMENT_L("Fz_interpoler=",Album_Fz__interpoler_bilineairement_ou_bicubiquement); GET_ARGUMENT_L("Fz_lineaire=""Fz_bilineaire=",Album_Fz__utiliser_l_interpolation_bilineaire); GET_ARGUMENT_N("Fz_cubique=""Fz_bicubique=",Album_Fz__utiliser_l_interpolation_bilineaire); /* Arguments introduits le 20150528104916... */ GET_ARGUMENT_L("AccelerateurALoadPoint=""AccALP=" ,S_ACCELERATEUR__ALOAD_POINT_COORDONNEES_01_____utiliser_l_accelerateur ); /* Arguments introduits le 20120312133002... */ GET_ARGUMENT_L("interpoler2D=""inter2D=" ,FFload_point_coordonnees_01_____interpoler_bilineairement_ou_bicubiquement ); GET_ARGUMENT_N("ne_pas_interpoler2D=""ninter2D=" ,FFload_point_coordonnees_01_____interpoler_bilineairement_ou_bicubiquement ); /* Parametres introduits le 20090720120452 pour le mode "2D=VRAI"... */ GET_ARGUMENT_L("lineaire2D=""bilineaire2D=" ,FFload_point_coordonnees_01_____utiliser_l_interpolation_bilineaire ); GET_ARGUMENT_N("cubique2D=""bicubique2D=" ,FFload_point_coordonnees_01_____utiliser_l_interpolation_bilineaire ); GET_ARGUMENT_L("pasX_et_pasY2D=""pasXY2D=" ,FFload_point_coordonnees_01_____utiliser_pasX_et_pasY ); GET_ARGUMENT_I("pasX2D=",FFload_point_coordonnees_01_____pasX); GET_ARGUMENT_I("pasY2D=",FFload_point_coordonnees_01_____pasY); /* Parametres introduits le 20090720120452 pour le mode "2D=VRAI"... */ GET_ARGUMENT_L("interpoler=""inter=""interpoler3D=""inter3D=" ,FFAload_point_coordonnees_01_____interpoler_bilineairement_ou_bicubiquement ); GET_ARGUMENT_N("ne_pas_interpoler=""ninter=""ne_pas_interpoler3D=""ninter3D=" ,FFAload_point_coordonnees_01_____interpoler_bilineairement_ou_bicubiquement ); /* Parametres introduits le 20090720120452. */ GET_ARGUMENT_L("lineaire=""bilineaire=""lineaire3D=""bilineaire3D=" ,FFAload_point_coordonnees_01_____utiliser_l_interpolation_bilineaire ); GET_ARGUMENT_N("cubique=""bicubique=""cubique3D=""bicubique3D=" ,FFAload_point_coordonnees_01_____utiliser_l_interpolation_bilineaire ); GET_ARGUMENT_L("pasX_et_pasY_et_pasZ=""pasXYZ=""pasX_et_pasY_et_pasZ3D=""pasXYZ3D=" ,FFAload_point_coordonnees_01_____utiliser_pasX_et_pasY_et_pasZ ); GET_ARGUMENT_I("pasX=""pasX3D=",FFAload_point_coordonnees_01_____pasX); GET_ARGUMENT_I("pasY=""pasY3D=",FFAload_point_coordonnees_01_____pasY); GET_ARGUMENT_I("pasZ=""pasZ3D=",FFAload_point_coordonnees_01_____pasZ); PROCESS_ARGUMENTS_DE_DERIVATION_PARTIELLE_NUMERIQUE; PROCESS_ARGUMENTS_DE_COLORIAGE; PROCESS_ARGUMENTS_DE_VISUALISATION; PROCESS_ARGUMENTS_DE_PERMUTATION_DES_COORDONNEES_ET_DES_DIFFERENTIELLES; /* Introduit le 20050623090501. */ PROCESS_ARGUMENTS_DE_TRANSFORMATION_DE_u_v_w; /* Introduit le 20060530144819... */ PROCESS_ARGUMENTS_DE_VISUALISATION_DE_LA_TEXTURE; /* Introduit le 20050622101102... */ PROCESS_ARGUMENTS_DE_DEFINITION_DES_COORDONNEES_CURVILIGNES; PROCESS_ARGUMENTS_DE_GESTION_DE_LA_RELATIVITE_RESTREINTE; ) ); #include xrs/volumes.12.I" /* Visualisation et evolution du volume au cours du temps... */ Test(IL_NE_FAUT_PAS(visualiser_une_variete_tridimensionnelle)) Bblock EGAL(pas_de_w,DIVI(SOUS(maximum_de_w,minimum_de_w),dimZN)); /* Lorsque l'on doit visualiser une (ou plusieurs) variete(s) bidimensionnelle(s), le */ /* pas de 'w' doit etre force. Ceci fut introduit le 20060504111145... */ EGAL(echantillonnage_de_w,ECHANTILLONNAGE_DE_u_DE_v_ET_DE_w); EGAL(translation_de_l_echantillonnage_de_w,TRANSLATION_DE_L_ECHANTILLONNAGE_DE_u_DE_v_ET_DE_w); EGAL(diviseur_du_pas_de_w,DIVISEUR_DU_PAS_DE_u_DE_v_ET_DE_w); EGAL(diviseur_de_differentiation_de_w,DIVISEUR_DE_DIFFERENTIATION_DE_u_DE_v_ET_DE_w); /* Mise en place a priori des valeurs par defaut (introduit le 20060509091338 car manquait). */ Eblock ATes Bblock Eblock ETes begin_nouveau_block Bblock BDEFV(albumF,Album_Fx); BDEFV(albumF,Album_Fy); BDEFV(albumF,Album_Fz); /* Definition des trois projections. */ CALi(dAloadF_album(Album_Fx ,nom_albumFx ,nom_postfixeFx ,premiere_imageFx ,pas_des_imagesFx ,nombre_de_chiffresFx ,FAUX ,UNDEF ,FAUX ) ); CALi(dAloadF_album(Album_Fy ,nom_albumFy ,nom_postfixeFy ,premiere_imageFy ,pas_des_imagesFy ,nombre_de_chiffresFy ,FAUX ,UNDEF ,FAUX ) ); CALi(dAloadF_album(Album_Fz ,nom_albumFz ,nom_postfixeFz ,premiere_imageFz ,pas_des_imagesFz ,nombre_de_chiffresFz ,FAUX ,UNDEF ,FAUX ) ); /* L'argument 'Inv' ('FAUX') a ete introduit le 20091125135306... */ VISUALISATION_DU_VOLUME_AVEC_DIFFERENCES_ET_AVEC_TEXTURAGE____(BLOC(VIDE;) ,Fx_Projector3D_1,Fy_Projector3D_1,Fz_Projector3D_1 /* Fonctions definissant parametriquement la surface... */ ,Pxyz_Projector3D_1 ,BLOC(VIDE;) /* Il n'y a rien de specifique a calculer pour le point courant... */ ); EDEFV(albumF,Album_Fz); EDEFV(albumF,Album_Fy); EDEFV(albumF,Album_Fx); /* Definition des trois projections. */ Eblock end_nouveau_block ESaveModifyVariable(Logical,S_ACCELERATEUR__ALOAD_POINT_COORDONNEES_01_____utiliser_l_accelerateur); RETU_Commande; Eblock ECommande