/*************************************************************************************************************************************/ /* */ /* A C C U M U L A T I O N T R I D I M E N S I O N N E L L E D ' U N A L B U M " F L O T T A N T " */ /* A V E C T E X T U R A G E : */ /* */ /* */ /* Nota important : */ /* */ /* Lorsqu'il n'y a aucune rotation (par rapport */ /* a aucun axe), cette accumulation equivaut a une */ /* projection parallele. Cela peut avoir des consequences */ /* inattendues lorsque le 'Z-Buffer' est ensuite utilise, */ /* par exemple, pour un effet de brume. */ /* */ /* Cela s'est vu aux environs du 20171107153651 */ /* lors du calcul de 'v $xiirf/MENG.G2.3.1', pour laquelle */ /* l'image associee 'v $xiirf/MENG.G2.3.2' etait uniformement */ /* blanche (le 'Z-Buffer' ne contenait alors que deux valeurs */ /* differentes : celle du fond et celle de la face avant de */ /* l'Eponge de Menger). Voir 'v $xiirf/$Fnota MENG_G2_3' a */ /* ce propos... */ /* */ /* */ /* Definition : */ /* */ /* Cette commande reconstituent une structure tridimensionnelle */ /* a partir d'une serie de coupes (c'est-a-dire une serie d'images) */ /* avec implicitement un parcours d'arriere en avant (c'est-a-dire */ /* que la premiere image recuperee est mise en arriere-plan et la */ /* derniere au premier-plan), cet ordre pouvant etre inverse... */ /* */ /* Mais, ATTENTION, cette inversion a lieu au moment du */ /* chargement de l'album en memoire, mais elle ne change PAS */ /* l'orientation de l'axe 'OZ'. On aura alors : */ /* */ /* */ /* inverser_l_axe_OZ=FAUX (par defaut) : */ /* */ /* */ /* Z=0 --------------------------------------- */ /* |image 1 | */ /* . | . | */ /* | | */ /* . | . | */ /* | | */ /* . | . | */ /* | | */ /* . | . | */ /* | | */ /* --------------------------------------- | */ /* |image N-2 | | */ /* | | | */ /* | | | */ /* | | | */ /* --------------------------------------- | | */ /* |image N-1 | |--------- */ /* | | | */ /* | | | . */ /* | | | */ /* Z=1 --------------------------------------- | | . */ /* |image N | | | */ /* | | | | . */ /* | | | | */ /* | | | | . */ /* | | | | Y */ /* | | |---- */ /* | | | ^ */ /* | |---- | */ /* | | | */ /* | | | */ /* | | | */ /* | | | */ /* --------------------------------------- O---------> X */ /* / */ /* / */ /* inverser_l_axe_OZ=VRAI : / */ /* / */ /* */ /* Z=0 --------------------------------------- Z */ /* |image N | */ /* . | . | */ /* | | */ /* . | . | */ /* | | */ /* . | . | */ /* | | */ /* . | . | */ /* | | */ /* --------------------------------------- | */ /* |image 3 | | */ /* | | | */ /* | | | */ /* | | | */ /* --------------------------------------- | | */ /* |image 2 | |--------- */ /* | | | */ /* | | | . */ /* | | | */ /* Z=1 --------------------------------------- | | . */ /* |image 1 | | | */ /* | | | | . */ /* | | | | */ /* | | | | . */ /* | | | | */ /* | | |---- */ /* | | | */ /* | |---- */ /* | | */ /* | | */ /* | | */ /* | | */ /* --------------------------------------- */ /* */ /* */ /* Definition de l'axe 'OZ' : */ /* */ /* Je rappelle que la coordonnee 'Z' */ /* n'est le numero d'image que s'il n'y */ /* a pas inversion. Le referentiel {X,Y,Z} */ /* est DIRECT dans TOUS les cas... */ /* */ /* A titre d'exemple, l'experience */ /* suivante a ete effectuee le 20180507135411 en */ /* convertissant (via '$xci/conversion_3D$K') */ /* un champ gaussien dans [0,1], puis en */ /* accumulant toutes les couches avec : */ /* */ /* inverser_ZA=VRAI */ /* */ /* sans rotation aucune... */ /* */ /* La surface ainsi obtenue fut un */ /* plan (image 1) avec un "trou" (jusqu'a */ /* image N) vers l'arriere (qui donc s'eloigne */ /* de l'observateur). */ /* */ /* */ /* Besoins en ressources : */ /* */ /* Lors de la generation de 'v $xiirv/CARB.D2.21' */ /* sur sur '$CMAP28' -ex "porte-brancion"-, il fut */ /* note que pour chacune des composantes chromatiques */ /* de l'image il fallait 16% de la memoire (ce qui */ /* equivaut a environ 8 Go). */ /* */ /* */ /* Author of '$xci/accumule.42$K' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 20100123115431). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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 : */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* F I C H I E R S D ' I N C L U D E S : */ /* */ /*************************************************************************************************************************************/ #include INCLUDES_BASE #include image_image_DI_ALBUM_EXT /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* P A R A M E T R E S : */ /* */ /*************************************************************************************************************************************/ #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... */ #define EPAISSIR_LES_ALBUMS_ARGUMENTS \ FAUX \ /* Indique s'il faut epaissir les albums Argument ('VRAI') ou pas ('FAUX'), la valeur par */ \ /* defaut garantissant la compatibilite anterieure. Ceci a ete introduit le 20210430085517. */ #define ACCELERER_L_ACCUMULATION_AUX_DEPENS_DE_LA_QUALITE \ FAUX \ /* Indique s'il est possible d'accelerer l'accumulation (aux depens de la qualite) lors de */ \ /* phase de mise au point d'une image ('v $xiirc/.MANE.41.4.$U _____Accelerer'). Ceci a ete */ \ /* introduit le 20180124100719... */ #define INVERSER_L_AXE_OZ \ FAUX \ /* Indique s'il faut inverser l'ordre de parcours de l'ensemble des images. On a : */ \ /* */ \ /* FAUX : l'image d'arriere-plan est la premiere de la liste, */ \ /* VRAI : l'image d'arriere-plan est la derniere de la liste. */ \ /* */ #define INCOMPLET_AXE_OZ \ FAUX \ /* Indique s'il peut manquer des images (ceci fut introduit le 20120322085620)... */ #define INCOMPLET_AXE_OZA_VALEUR_STANDARD \ NOIR #define INCOMPLET_AXE_OZA_VALEUR_NON_STANDARD \ FLOT__NOIR #define INCOMPLET_AXE_OZT_VALEUR \ NOIR /* Donne la valeur des images manquantes (ceci fut introduit le 20120322092116)... */ #define FAIRE_UNE_ROTATION_TRIDIMENSIONNELLE \ VRAI \ /* Faut-il faire une rotation tridimensionnelle ('VRAI') ou bien une transformation */ \ /* arbitraire ('FAUX') ce qui ouvre la porte a des 'IFS' tridimensionnelles... */ #define RAPPORT_DE_ZOOM \ ABSENCE_D_EFFET_DE_ZOOM \ /* Rapport de zoom. */ #define ROTATION_OX_IMPLICITE \ FZERO #define ROTATION_OY_IMPLICITE \ FZERO #define ROTATION_OZ_IMPLICITE \ FZERO /* Angles de rotation. */ #define MEMORISER_LE_Z_BUFFER \ FAUX \ /* Indique si le 'Z-Buffer' doit etre fourni comme resultat ('VRAI'), ou bien oublie */ \ /* apres le calcul ('FAUX'). . */ #define VALEUR_INITIALE_DU_Z_BUFFER \ F_MOINS_LE_PETIT_INFINI \ /* Valeur a utiliser pour initialiser le 'Z-Buffer' si cela est necessaire. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* M A C R O S U T I L E S : */ /* */ /*************************************************************************************************************************************/ #include xci/accumule.41.I" /* Introduit le 20120621092247... */ #define imageR \ ImageR #define CHARGEMENT_DE_LA_TEXTURE \ Bblock \ CALi(idAload_album(albumT \ ,nom_albumT \ ,nom_postfixeT \ ,premiere_imageT \ ,pas_des_imagesT \ ,nombre_de_chiffresT \ ,FAUX \ ,UNDEF \ ,inverser_l_axe_OZT \ ,incomplet_axe_OZT \ ,incomplet_axe_OZT_valeur \ ) \ ); \ /* Chargement de l'album d'images Texture... */ \ Eblock \ /* Introduit le 20210430084457 afin de pouvoir separer nettement le cas "standard" du */ \ /* cas "non standard"... */ #define EPAISSISSEMENT_EVENTUEL_D_UN_ALBUM(album) \ Bblock \ Test(IL_FAUT(epaissir_les_albums_arguments)) \ Bblock \ CALS(Aepaississement(album,album,Zmin_argument,Zmax_argument)); \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock \ /* Introduit le 20210430144410 pour simplifier... */ #define DEBUT__DE_LA_DEFINITION_DE_L_AXE_OZ__EVENTUELLEMENT_EPAISSI \ BSaveModifyVariable(Int,Zmin,Zmin_effectif); \ BSaveModifyVariable(Int,Zmax,Zmax_effectif); #define FIN____DE_LA_DEFINITION_DE_L_AXE_OZ__EVENTUELLEMENT_EPAISSI \ ESaveModifyVariable(Int,Zmax); \ ESaveModifyVariable(Int,Zmin); #define DEBUT__DE_LA_DEFINITION_DE_L_AXE_OZ__ARGUMENT \ BSaveModifyVariable(Int,Zmin,Zmin_argument); \ BSaveModifyVariable(Int,Zmax,Zmax_argument); #define FIN____DE_LA_DEFINITION_DE_L_AXE_OZ__ARGUMENT \ ESaveModifyVariable(Int,Zmax); \ ESaveModifyVariable(Int,Zmin); /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A C C U M U L A T I O N T R I D I M E N S I O N N E L L E D ' U N A L B U M " F L O T T A N T " */ /* A V E C T E X T U R A G E : */ /* */ /*************************************************************************************************************************************/ BCommande(nombre_d_arguments,arguments) /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_albumA),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_albumT),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_postfixeA),NOM_UNDEF_VIDE)); /* Nom d'un eventuel postfixe a placer derriere <nom_albumA><numero> (par exemple '$ROUGE'). */ DEFV(Int,INIT(premiere_imageA,PREMIERE_IMAGE)); /* Numero de la premiere image, */ DEFV(Int,INIT(pas_des_imagesA,PAS_DES_IMAGES)); /* Pas de passage d'un numero d'image a une autre. */ DEFV(Int,INIT(nombre_de_chiffresA,NOMBRE_DE_CHIFFRES)); /* Nombre de chiffres codant le numero des images de la serie... */ DEFV(Logical,INIT(epaissir_les_albums_arguments,EPAISSIR_LES_ALBUMS_ARGUMENTS)); /* Indique s'il faut epaissir les albums Argument ('VRAI') ou pas ('FAUX'), la valeur par */ /* defaut garantissant la compatibilite anterieure. Ceci a ete introduit le 20210430085517. */ DEFV(Logical,INIT(accelerer_l_accumulation_aux_depens_de_la_qualite,ACCELERER_L_ACCUMULATION_AUX_DEPENS_DE_LA_QUALITE)); /* Indique s'il est possible d'accelerer l'accumulation (aux depens de la qualite) lors de */ /* phase de mise au point d'une image ('v $xiirc/.MANE.41.4.$U _____Accelerer'). Ceci a ete */ /* introduit le 20180124100719... */ DEFV(Logical,INIT(inverser_l_axe_OZA,INVERSER_L_AXE_OZ)); /* Indique s'il faut inverser l'ordre de parcours de l'ensemble des images. On a : */ /* */ /* FAUX : l'image d'arriere-plan est la premiere de la liste, */ /* VRAI : l'image d'arriere-plan est la derniere de la liste. */ /* */ DEFV(Logical,INIT(incomplet_axe_OZA,INCOMPLET_AXE_OZ)); /* Indique s'il peut manquer des images (ceci fut introduit le 20120322085620)... */ DEFV(genere_p,INIT(incomplet_axe_OZA_valeur_standard,INCOMPLET_AXE_OZA_VALEUR_STANDARD)); DEFV(genere_Float,INIT(incomplet_axe_OZA_valeur_non_standard,INCOMPLET_AXE_OZA_VALEUR_NON_STANDARD)); /* Donne la valeur des images manquantes (ceci fut introduit le 20120322092116)... */ DEFV(CHAR,INIC(POINTERc(nom_postfixeT),NOM_UNDEF_VIDE)); /* Nom d'un eventuel postfixe a placer derriere <nom_albumT><numero> (par exemple '$ROUGE'). */ DEFV(Int,INIT(premiere_imageT,PREMIERE_IMAGE)); /* Numero de la premiere image, */ DEFV(Int,INIT(pas_des_imagesT,PAS_DES_IMAGES)); /* Pas de passage d'un numero d'image a une autre. */ DEFV(Int,INIT(nombre_de_chiffresT,NOMBRE_DE_CHIFFRES)); /* Nombre de chiffres codant le numero des images de la serie... */ DEFV(Logical,INIT(inverser_l_axe_OZT,INVERSER_L_AXE_OZ)); /* Indique s'il faut inverser l'ordre de parcours de l'ensemble des images. On a : */ /* */ /* FAUX : l'image d'arriere-plan est la premiere de la liste, */ /* VRAI : l'image d'arriere-plan est la derniere de la liste. */ /* */ DEFV(Logical,INIT(incomplet_axe_OZT,INCOMPLET_AXE_OZ)); /* Indique s'il peut manquer des images (ceci fut introduit le 20120322085620)... */ DEFV(genere_p,INIT(incomplet_axe_OZT_valeur,INCOMPLET_AXE_OZT_VALEUR)); /* Donne la valeur des images manquantes (ceci fut introduit le 20120322092116)... */ DEFV(Logical,INIT(faire_une_rotation_tridimensionnelle,FAIRE_UNE_ROTATION_TRIDIMENSIONNELLE)); /* Faut-il faire une rotation tridimensionnelle ('VRAI') ou bien une transformation */ /* arbitraire ('FAUX') ce qui ouvre la porte a des 'IFS' tridimensionnelles... */ DEFV(Float,INIT(rapport_DE_ZOOM,RAPPORT_DE_ZOOM)); /* Rapport de zoom. */ DEFV(Float,INIT(angle_de_ROTATION_OX,ROTATION_OX_IMPLICITE)); DEFV(Float,INIT(angle_de_ROTATION_OY,ROTATION_OY_IMPLICITE)); DEFV(Float,INIT(angle_de_ROTATION_OZ,ROTATION_OZ_IMPLICITE)); /* Angles de rotation. */ DEFV(CHAR,INIC(POINTERc(nom_imageZ),NOM_PIPE)); DEFV(Logical,INIT(memoriser_le_Z_Buffer,MEMORISER_LE_Z_BUFFER)); /* Indique si le 'Z-Buffer' doit etre fourni comme resultat ('VRAI'), ou bien oublie */ /* apres le calcul ('FAUX'). . */ /*..............................................................................................................................*/ BSaveModifyVariable(Logical,S_ACCELERATEUR__ALOAD_POINT_COORDONNEES_01_____utiliser_l_accelerateur,VRAI); /* Introduit le 20120620092224... */ EGAL(valider_les_axes_OX_OY_OZ,VRAI); EGAL(coefficient_de_forme_de_l_espace_tridimensionnel,COEFFICIENT_DE_FORME_DE_L_ESPACE_TRIDIMENSIONNEL); /* Introduit le 20140103184234 lors de la mise au point de 'v $xiirv/PIPO.F1.21' a cause */ /* du probleme 'v $xiii/di_album$FON 20120321113814' qui se manifeste, par exemple, si */ /* l'axe 'OZ' est beaucoup plus "court" que les axes 'OX' et/ou 'OY'. Ceci fut complete */ /* le 20140103185926... */ EGAL(Z_Buffer_____valeur_initiale,VALEUR_INITIALE_DU_Z_BUFFER); /* A priori. */ #define Iaccumulation_tri_dimensionnelle_non_standard_texturee_____demi_dimension_gradient_X \ Iaccumulation_tri_dimensionnelle_non_standard_texturee_____demi_dimension_de_calcul_du_gradient_X #define Iaccumulation_tri_dimensionnelle_non_standard_texturee_____demi_dimension_gradient_Y \ Iaccumulation_tri_dimensionnelle_non_standard_texturee_____demi_dimension_de_calcul_du_gradient_Y #define Iaccumulation_tri_dimensionnelle_non_standard_texturee_____demi_dimension_gradient_Z \ Iaccumulation_tri_dimensionnelle_non_standard_texturee_____demi_dimension_de_calcul_du_gradient_Z #define Iaccumulation_tri_dimensionnelle_standard_texturee_____renvoyer_niveau_maximal_albumA \ Iaccumulation_tri_dimensionnelle_standard_texturee_____renvoyer_le_niveau_maximal_de_albumA #define Iaccumulation_tri_dimensionnelle_non_standard_texturee_____renvoyer_niveau_maximal_albumA \ Iaccumulation_tri_dimensionnelle_non_standard_texturee_____renvoyer_le_niveau_maximal_de_albumA #define Iaccumulation_tri_dimensionnelle_standard_texturee_____renvoyer_niveau_maximal_albumT \ Iaccumulation_tri_dimensionnelle_standard_texturee_____renvoyer_le_niveau_maximal_de_albumT #define Iaccumulation_tri_dimensionnelle_non_standard_texturee_____renvoyer_niveau_maximal_albumT \ Iaccumulation_tri_dimensionnelle_non_standard_texturee_____renvoyer_le_niveau_maximal_de_albumT /* Afin de reduire la longueur des lignes qui suivent... */ #define Iaccumulation_tri_dimensionnelle_standard_texturee_____ne_visualiser_que_gradients_nuls \ Iaccumulation_tri_dimensionnelle_standard_texturee_____ne_visualiser_que_les_gradients_nuls #define Iaccumulation_tri_dimensionnelle_non_standard_texturee_____ne_visualiser_que_gradients_nuls \ Iaccumulation_tri_dimensionnelle_non_standard_texturee_____ne_visualiser_que_les_gradients_nuls /* Afin de reduire la longueur des lignes qui suivent... */ GET_ARGUMENTSv(nombre_d_arguments ,BLOC(GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20091211=""compatibilite_20091211=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____compatibilite_20091211 ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____compatibilite_20091211 ); GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20100120=""compatibilite_20100120=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____compatibilite_20100120 ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____compatibilite_20100120 ); GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20100625=""compatibilite_20100625=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____compatibilite_20100625 ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____compatibilite_20100625 ); GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20101008=""compatibilite_20101008=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____compatibilite_20101008 ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____compatibilite_20101008 ); /* Argument introduit le 20101008115337... */ GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20101121=""compatibilite_20101121=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____compatibilite_20101121 ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____compatibilite_20101121 ); /* Argument introduit le 20101121112524... */ GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20101125=""compatibilite_20101125=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____compatibilite_20101125 ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____compatibilite_20101125 ); /* Argument introduit le 20101125125546... */ GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20101127=""compatibilite_20101127=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____compatibilite_20101127 ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____compatibilite_20101127 ); /* Argument introduit le 20101127092939... */ GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20101128=""compatibilite_20101128=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____compatibilite_20101128 ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____compatibilite_20101128 ); /* Argument introduit le 20101128145935... */ GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20141004=""compatibilite_20141004=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____compatibilite_20141004 ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____compatibilite_20141004 ); /* Argument introduit le 20141004184055... */ GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20141005=""compatibilite_20141005=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____compatibilite_20141005 ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____compatibilite_20141005 ); /* Argument introduit le 20141005111657... */ GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20160125=""compatibilite_20160125=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____compatibilite_20160125 ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____compatibilite_20160125 ); /* Argument introduit le 20160125104641... */ GET_ARGUMENT_C("albumA=""A=",nom_albumA); GET_ARGUMENT_C("postfixeA=",nom_postfixeA); GET_ARGUMENT_I("premiereA=",premiere_imageA); GET_ARGUMENTS2_I("pasA=",pas_des_imagesA,pasZ); /* L'argument 'pasZ' fut introduit le 20110119140805... */ GET_ARGUMENT_I("chiffresA=",nombre_de_chiffresA); GET_ARGUMENT_L("epaissir_album=""epaissir_albums=""epaissir=",epaissir_les_albums_arguments); /* Argument introduit le 20210430085517 et le singulier a ete ajoute le 20210501093523 */ /* pour la compatibilite avec 'v $xci/accumule.41$K epaissir_album='... */ GET_ARGUMENT_L("accelerer=",accelerer_l_accumulation_aux_depens_de_la_qualite); GET_ARGUMENT_N("qualite=",accelerer_l_accumulation_aux_depens_de_la_qualite); /* Argument introduit le 20180124100719... */ GET_ARGUMENT_L("inverser_ZA=""inv_ZA=",inverser_l_axe_OZA); GET_ARGUMENT_L("incomplet_ZA=""inc_ZA=",incomplet_axe_OZA); /* Argument introduit le 20120322085620... */ GET_ARGUMENT_P("valeur_standard_incomplet_ZA=""vsinc_ZA=",incomplet_axe_OZA_valeur_standard); GET_ARGUMENT_F("valeur_non_standard_incomplet_ZA=""vnsinc_ZA=",incomplet_axe_OZA_valeur_non_standard); /* Argument introduit le 20120322092116... */ GET_ARGUMENTS2_L("optimiser=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____optimisation_1 ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____optimisation_1 ); /* Introduit le 20170829155720... */ GET_ARGUMENTS2_L("texturer=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____texturer ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____texturer ); /* Introduit le 20101125223030 pour faciliter les tests... */ GET_ARGUMENT_C("albumT=""T=",nom_albumT); GET_ARGUMENT_C("postfixeT=",nom_postfixeT); GET_ARGUMENT_I("premiereT=",premiere_imageT); GET_ARGUMENT_I("pasT=",pas_des_imagesT); GET_ARGUMENT_I("chiffresT=",nombre_de_chiffresT); GET_ARGUMENT_L("inverser_ZT=""inv_ZT=",inverser_l_axe_OZT); /* Argument introduit le 20100624083255... */ GET_ARGUMENT_L("incomplet_ZT=""inc_ZT=",incomplet_axe_OZT); /* Argument introduit le 20120322085620... */ GET_ARGUMENT_P("valeur_standard_incomplet_ZT=""vsinc_ZT=",incomplet_axe_OZT_valeur); /* Argument introduit le 20120322092116... */ GET_ARGUMENT_C("imageR=""R=",nom_imageR); GET_ARGUMENT_L("standard=",les_images_sont_standards); GET_ARGUMENTS2_L("avertir_coordonnees_hors_espace=""ache=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____avertir_coordonnees_hors_espace ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____avertir_coordonnees_hors_espace ); /* Arguments introduits le 20101206153658... */ GET_ARGUMENT_L("rotation=",faire_une_rotation_tridimensionnelle); GET_ARGUMENT_N("transformation_quelconque=""tq=",faire_une_rotation_tridimensionnelle); GET_ARGUMENT_F("ZOOM=",rapport_DE_ZOOM); PROCESS_ARGUMENT_F("ROTATION_OX=",angle_de_ROTATION_OX ,BLOC(VIDE;) ,BLOC(EGAL(vecteurs_____ordre_de_la_ROTATION_0X,nombre_d_arguments_recuperes); ) ); PROCESS_ARGUMENT_F("ROTATION_OY=",angle_de_ROTATION_OY ,BLOC(VIDE;) ,BLOC(EGAL(vecteurs_____ordre_de_la_ROTATION_0Y,nombre_d_arguments_recuperes); ) ); PROCESS_ARGUMENT_F("ROTATION_OZ=",angle_de_ROTATION_OZ ,BLOC(VIDE;) ,BLOC(EGAL(vecteurs_____ordre_de_la_ROTATION_0Z,nombre_d_arguments_recuperes); ) ); GET_ARGUMENT_F("a11=",ASD2(vecteurs_____matrix_3D,cx,cx)); GET_ARGUMENT_F("a12=",ASD2(vecteurs_____matrix_3D,cx,cy)); GET_ARGUMENT_F("a13=",ASD2(vecteurs_____matrix_3D,cx,cz)); GET_ARGUMENT_F("a21=",ASD2(vecteurs_____matrix_3D,cy,cx)); GET_ARGUMENT_F("a22=",ASD2(vecteurs_____matrix_3D,cy,cy)); GET_ARGUMENT_F("a23=",ASD2(vecteurs_____matrix_3D,cy,cz)); GET_ARGUMENT_F("a31=",ASD2(vecteurs_____matrix_3D,cz,cx)); GET_ARGUMENT_F("a32=",ASD2(vecteurs_____matrix_3D,cz,cy)); GET_ARGUMENT_F("a33=",ASD2(vecteurs_____matrix_3D,cz,cz)); GET_ARGUMENTS2_F("tX=""TRANSLATION_OX=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____translation_OX ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____translation_OX ); GET_ARGUMENTS2_F("tY=""TRANSLATION_OY=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____translation_OY ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____translation_OY ); GET_ARGUMENTS2_F("tZ=""TRANSLATION_OZ=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____translation_OZ ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____translation_OZ ); GET_ARGUMENTS__Aload_point_coordonnees_01; /* Introduit sous cette forme le 20120621092247... */ GET_ARGUMENTS2_L("periodiser_X=""per_X=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____periodiser_X ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____periodiser_X ); GET_ARGUMENTS2_L("symetriser_X=""sym_X=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____symetriser_X ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____symetriser_X ); GET_ARGUMENTS2_L("prolonger_X=""pro_X=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____prolonger_X ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____prolonger_X ); GET_ARGUMENTS2_L("periodiser_Y=""per_Y=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____periodiser_Y ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____periodiser_Y ); GET_ARGUMENTS2_L("symetriser_Y=""sym_Y=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____symetriser_Y ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____symetriser_Y ); GET_ARGUMENTS2_L("prolonger_Y=""pro_Y=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____prolonger_Y ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____prolonger_Y ); GET_ARGUMENTS2_L("periodiser_Z=""per_Z=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____periodiser_Z ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____periodiser_Z ); GET_ARGUMENTS2_L("symetriser_Z=""sym_Z=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____symetriser_Z ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____symetriser_Z ); GET_ARGUMENTS2_L("prolonger_Z=""pro_Z=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____prolonger_Z ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____prolonger_Z ); GET_ARGUMENTS2_F("niveau_hors_album=""nha=""niveau_hors_image=""nhi=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____niveau_flottant_hors_image ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____niveau_flottant_hors_image ); GET_ARGUMENTS2_F("niveau_vide=""vide=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____niveau_du_vide_dans_l_album ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____niveau_du_vide_dans_l_album ); /* Argument introduit le 20101008113146... */ GET_ARGUMENTS2_L("accepter_points_isoles=""api=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____accepter_les_points_isoles ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____accepter_les_points_isoles ); /* Argument introduit le 20190208152052... */ GET_ARGUMENTS2_L("Aniveau_maximal=""Amaximum=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____renvoyer_niveau_maximal_albumA ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____renvoyer_niveau_maximal_albumA ); GET_ARGUMENTS2_L("Tniveau_maximal=""Tmaximum=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____renvoyer_niveau_maximal_albumT ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____renvoyer_niveau_maximal_albumT ); /* Argument introduit le 20100703102211... */ /* */ /* Le 20101128092931 '"Tniveau_maximal=""Tmaximum="' a ete modifie dans la mesure ou a */ /* compter de cette date 'albumA' et 'albumT' sont geres de la meme facon, c'est-a-dire a */ /* l'aide de fonctions d'acces entierement compatibles... */ /* */ /* Le 20101129121357 fut finalement introduite une distinction entre 'albumA' et 'albumT'... */ GET_ARGUMENTS2_L("Tperiodiser_X=""Tper_X=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____texture_periodiser_X ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____texture_periodiser_X ); GET_ARGUMENTS2_L("Tsymetriser_X=""Tsym_X=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____texture_symetriser_X ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____texture_symetriser_X ); GET_ARGUMENTS2_L("Tprolonger_X=""Tpro_X=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____texture_prolonger_X ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____texture_prolonger_X ); GET_ARGUMENTS2_L("Tperiodiser_Y=""Tper_Y=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____texture_periodiser_Y ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____texture_periodiser_Y ); GET_ARGUMENTS2_L("Tsymetriser_Y=""Tsym_Y=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____texture_symetriser_Y ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____texture_symetriser_Y ); GET_ARGUMENTS2_L("Tprolonger_Y=""Tpro_Y=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____texture_prolonger_Y ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____texture_prolonger_Y ); GET_ARGUMENTS2_L("Tperiodiser_Z=""Tper_Z=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____texture_periodiser_Z ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____texture_periodiser_Z ); GET_ARGUMENTS2_L("Tsymetriser_Z=""Tsym_Z=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____texture_symetriser_Z ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____texture_symetriser_Z ); GET_ARGUMENTS2_L("Tprolonger_Z=""Tpro_Z=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____texture_prolonger_Z ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____texture_prolonger_Z ); GET_ARGUMENTS2_P("Tniveau_hors_image=""Tnhi=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____texture_niveau_hors_image ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____texture_niveau_hors_image ); /* Arguments introduits le 20100625092256. */ GET_ARGUMENTS2_F("minimum_X=""mX=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____minimum_de_coordonnee_X ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____minimum_de_coordonnee_X ); GET_ARGUMENTS2_F("maximum_X=""MX=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____maximum_de_coordonnee_X ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____maximum_de_coordonnee_X ); GET_ARGUMENTS2_F("minimum_Y=""mY=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____minimum_de_coordonnee_Y ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____minimum_de_coordonnee_Y ); GET_ARGUMENTS2_F("maximum_Y=""MY=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____maximum_de_coordonnee_Y ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____maximum_de_coordonnee_Y ); GET_ARGUMENTS2_F("minimum_Z=""mZ=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____minimum_de_coordonnee_Z ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____minimum_de_coordonnee_Z ); GET_ARGUMENTS2_F("maximum_Z=""MZ=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____maximum_de_coordonnee_Z ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____maximum_de_coordonnee_Z ); /* Arguments introduits le 20160125104641... */ GET_ARGUMENTS2_F("exposant_niveau=""en=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____exposant_du_niveau ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____exposant_du_niveau ); GET_ARGUMENTS2_L("ponderer_directions_niveaux=""pdn=""centre_de_gravite=""cdg=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____calculer_le_centre_de_gravite ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____calculer_le_centre_de_gravite ); GET_ARGUMENTS2_L("maximum_differences=""md=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____utiliser_le_maximum_des_differences ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____utiliser_le_maximum_des_differences ); GET_ARGUMENTS2_N("somme_differences=""sd=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____utiliser_le_maximum_des_differences ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____utiliser_le_maximum_des_differences ); GET_ARGUMENTS2_F("seuil=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____seuil_du_niveau_courant ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____seuil_du_niveau_courant ); GET_ARGUMENTS2_L("cumuler_niveau=""cn=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____cumuler_le_niveau_courant ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____cumuler_le_niveau_courant ); GET_ARGUMENTS2_L("cumuler_niveau_lumineux=""cnl=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____cumuler_le_niveau_lumineux ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____cumuler_le_niveau_lumineux ); GET_ARGUMENTS2_L("cumuler_coordonnees_XYZ=""ccXYZ=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____cumuler_les_coordonnees_XYZ ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____cumuler_les_coordonnees_XYZ ); GET_ARGUMENTS2_F("ponderation_X=""pX=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____ponderation_de_la_coordonnees_X ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____ponderation_de_la_coordonnees_X ); GET_ARGUMENTS2_F("ponderation_Y=""pY=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____ponderation_de_la_coordonnees_Y ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____ponderation_de_la_coordonnees_Y ); GET_ARGUMENTS2_F("ponderation_Z=""pZ=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____ponderation_de_la_coordonnees_Z ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____ponderation_de_la_coordonnees_Z ); GET_ARGUMENTS2_L("cumuler_coordonnees_RPT=""ccRPT=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____cumuler_les_coordonnees_RPT ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____cumuler_les_coordonnees_RPT ); GET_ARGUMENTS2_F("ponderation_R=""pR=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____ponderation_de_la_coordonnees_R ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____ponderation_de_la_coordonnees_R ); GET_ARGUMENTS2_F("ponderation_P=""pP=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____ponderation_de_la_coordonnees_P ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____ponderation_de_la_coordonnees_P ); GET_ARGUMENTS2_F("ponderation_T=""pT=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____ponderation_de_la_coordonnees_T ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____ponderation_de_la_coordonnees_T ); /* Arguments introduits le 20200224132939... */ GET_ARGUMENTS2_F("exposant_X=""eX=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____exposant_de_la_coordonnees_X ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____exposant_de_la_coordonnees_X ); GET_ARGUMENTS2_F("exposant_Y=""eY=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____exposant_de_la_coordonnees_Y ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____exposant_de_la_coordonnees_Y ); GET_ARGUMENTS2_F("exposant_Z=""eZ=""depth_cueing=""depth-cueing=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____exposant_de_la_coordonnees_Z ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____exposant_de_la_coordonnees_Z ); /* Arguments completes le 20100202152514. */ /* */ /* Parametrage du "depth-cueing" : */ /* */ /* exposant_de_la_coordonnees_Z=0 pas de "depth-cueing", */ /* exposant_de_la_coordonnees_Z=1 "depth-cueing" maximal... */ /* */ GET_ARGUMENTS2_L("source_lumineuse=""sl=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____eclairer_par_une_source_lumineuse ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____eclairer_par_une_source_lumineuse ); GET_ARGUMENTS2_F("source_lumineuse_X=""slX=""slx=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____source_lumineuse_X ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____source_lumineuse_X ); GET_ARGUMENTS2_F("source_lumineuse_Y=""slY=""sly=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____source_lumineuse_Y ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____source_lumineuse_Y ); GET_ARGUMENTS2_F("source_lumineuse_Z=""slZ=""slz=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____source_lumineuse_Z ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____source_lumineuse_Z ); GET_ARGUMENTS2_F("source_lumineuse_intensite_speculaire=""slis=""is=""speculaire=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____source_lumineuse_specularite ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____source_lumineuse_specularite ); GET_ARGUMENTS2_I("demi_dimension_gradient_X=""ddgX=""ddgx=""dx=""dX=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____demi_dimension_de_calcul_du_gradient_X ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____demi_dimension_gradient_X ); GET_ARGUMENTS2_I("demi_dimension_gradient_Y=""ddgY=""ddgy=""dy=""dY=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____demi_dimension_de_calcul_du_gradient_Y ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____demi_dimension_gradient_Y ); GET_ARGUMENTS2_I("demi_dimension_gradient_Z=""ddgZ=""ddgz=""dz=""dZ=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____demi_dimension_de_calcul_du_gradient_Z ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____demi_dimension_gradient_Z ); GET_ARGUMENTS2_L("visualiser_que_gradients_nuls=""vqgn=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____ne_visualiser_que_gradients_nuls ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____ne_visualiser_que_gradients_nuls ); /* Argument introduit le 20141005083648... */ GET_ARGUMENTS2_L("visualiser_gradients_nuls=""vgn=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____visualiser_les_gradients_nuls ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____visualiser_les_gradients_nuls ); /* Argument introduit le 20141005111657... */ GET_ARGUMENT_F("Z0=",Z_Buffer_____valeur_initiale); GET_ARGUMENT_L("zbuffer=""zBuffer=""Zbuffer=""ZBuffer=""Z-Buffer=",memoriser_le_Z_Buffer); GET_ARGUMENT_C("imageZ=""Z=",nom_imageZ); GET_ARGUMENTS2_P("niveau_fond=""fond=""nf=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____niveau_du_fond ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____niveau_du_fond ); GET_ARGUMENTS2_L("editer_gradient=""eg=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____editer_gradient ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____editer_gradient ); /* Arguments introduits le 20210424175949... */ /* */ /* Le 20210424185509, je note qu'utiliser simultanement : */ /* */ /* Alleger=VRAI */ /* */ /* est plus que recommande ('v $xci/accumule.42$K 20210425102320' a ce propos...). */ GET_ARGUMENTS2_L("editer_extrema_niveau_resultant=""eenr=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____editer_extrema_niveau_resultant ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____editer_extrema_niveau_resultant ); /* Arguments introduits le 20111121120435... */ GET_ARGUMENTS2_L("renormaliser_niveau_resultant=""rnr=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____renormaliser_niveau_resultant ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____renormaliser_niveau_resultant ); /* Arguments introduits le 20111119115303... */ GET_ARGUMENTS2_F("minimum_niveau_resultant=""minnr=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____minimum_force_du_niveau_resultant ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____minimum_force_du_niveau_resultant ); GET_ARGUMENTS2_F("maximum_niveau_resultant=""maxnr=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____maximum_force_du_niveau_resultant ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____maximum_force_du_niveau_resultant ); /* Arguments introduits le 20111121114716... */ ) ); Test(IFOU(IL_FAUT(Iaccumulation_tri_dimensionnelle_standard_texturee_____editer_gradient) ,IL_FAUT(Iaccumulation_tri_dimensionnelle_non_standard_texturee_____editer_gradient) ) ) Bblock EGAL(gPRINT_DEFAUT_____n_editer_que_le_message_principal,VRAI); /* Forcage introduit le 20210425102320... */ Eblock ATes Bblock Eblock ETes Test(EST_VRAI(les_images_sont_standards)) Bblock Test(IL_NE_FAUT_PAS(FAload_point_coordonnees_01_____interpoler_bilineairement_ou_bicubiquement)) Bblock EGAL(Iaccumulation_tri_dimensionnelle_standard_texturee_____optimisation_1,VRAI); /* Lorsqu'il ne faut pas interpoler, on force l'optimisation (introduit le 20170830085130). */ Eblock ATes Bblock Eblock ETes Eblock ATes Bblock Test(IL_NE_FAUT_PAS(FFAload_point_coordonnees_01_____interpoler_bilineairement_ou_bicubiquement)) Bblock EGAL(Iaccumulation_tri_dimensionnelle_non_standard_texturee_____optimisation_1,VRAI); /* Lorsqu'il ne faut pas interpoler, on force l'optimisation (introduit le 20170830085130). */ Eblock ATes Bblock Eblock ETes Eblock ETes Test(IL_FAUT(accelerer_l_accumulation_aux_depens_de_la_qualite)) /* Test introduit le 20180124100719... */ Bblock Test(IFEQ(DEMI_DIMENSION_XYZ_MATRIX_CALCUL_GRADIENT,UN)) Bblock PRINT_ATTENTION("cette option est sans d'interet car les valeurs par defaut sont les plus petites possibles"); /* Message introduit le 20180124110434... */ Eblock ATes Bblock Test(EST_VRAI(les_images_sont_standards)) Bblock EGAL(Iaccumulation_tri_dimensionnelle_standard_texturee_____demi_dimension_de_calcul_du_gradient_X,UN); EGAL(Iaccumulation_tri_dimensionnelle_standard_texturee_____demi_dimension_de_calcul_du_gradient_Y,UN); EGAL(Iaccumulation_tri_dimensionnelle_standard_texturee_____demi_dimension_de_calcul_du_gradient_Z,UN); /* On notera le 20180124103752 que j'ai essaye un 'CLIR(...)' mais que cela ne fonctionne */ /* pas correctement : l'image resultante est NOIR. Du coup cet option d'acceleration n'a */ /* d'interet que si 'DEMI_DIMENSION_XYZ_MATRIX_CALCUL_GRADIENT' (valeur par defaut de ces */ /* demi-dimensions) est superieure a 1... */ Eblock ATes Bblock EGAL(Iaccumulation_tri_dimensionnelle_non_standard_texturee_____demi_dimension_de_calcul_du_gradient_X,UN); EGAL(Iaccumulation_tri_dimensionnelle_non_standard_texturee_____demi_dimension_de_calcul_du_gradient_Y,UN); EGAL(Iaccumulation_tri_dimensionnelle_non_standard_texturee_____demi_dimension_de_calcul_du_gradient_Z,UN); /* On notera le 20180124103752 que j'ai essaye un 'CLIR(...)' mais que cela ne fonctionne */ /* pas correctement : l'image resultante est NOIR. Du coup cet option d'acceleration n'a */ /* d'interet que si 'DEMI_DIMENSION_XYZ_MATRIX_CALCUL_GRADIENT' (valeur par defaut de ces */ /* demi-dimensions) est superieure a 1... */ Eblock ETes Eblock ETes Eblock ATes Bblock Eblock ETes #undef Iaccumulation_tri_dimensionnelle_non_standard_texturee_____ne_visualiser_que_gradients_nuls #undef Iaccumulation_tri_dimensionnelle_standard_texturee_____ne_visualiser_que_gradients_nuls #undef Iaccumulation_tri_dimensionnelle_non_standard_texturee_____demi_dimension_gradient_Z #undef Iaccumulation_tri_dimensionnelle_non_standard_texturee_____demi_dimension_gradient_Y #undef Iaccumulation_tri_dimensionnelle_non_standard_texturee_____demi_dimension_gradient_X Test(IL_FAUT(faire_une_rotation_tridimensionnelle)) Bblock T_ZOOM(rapport_DE_ZOOM); /* Mise en place du zoom. */ GENERATION_DE_LA_MATRICE_DE_ROTATION(vecteurs_____ordre_de_la_ROTATION_0X ,T_ROTATION_X(angle_de_ROTATION_OX); ,vecteurs_____ordre_de_la_ROTATION_0Y ,T_ROTATION_Y(angle_de_ROTATION_OY); ,vecteurs_____ordre_de_la_ROTATION_0Z ,T_ROTATION_Z(angle_de_ROTATION_OZ); ); /* Mise en place du produit des trois rotations relatives aux trois axes. */ Eblock ATes Bblock /* Dans le cas ou la transformation est arbitraire, les coefficients de la matrice sont */ /* supposes corrects apres leur entree (totale ou partielle...). */ Eblock ETes CALi(Inoir(imageR)); /* Au passage, le 20091212092049 j'ai essaye de charger un fond, mais cela n'a aucun */ /* interet parce que les fonctions 'Iaccumulation_tri_dimensionnelle_...(...)' positionnent */ /* tous les points de 'imageR', meme ceux qui appartiennent au fond... */ Test(EST_VRAI(les_images_sont_standards)) Bblock DEFV(Int,INIT(Zmin_argument,Zmin)); DEFV(Int,INIT(Zmax_argument,Zmax)); /* Definition de l'axe 'Z' argument... */ DEFV(Int,INIT(Zmin_effectif,UNDEF)); DEFV(Int,INIT(Zmax_effectif,UNDEF)); /* Definition de l'axe 'Z' effectivement utilise... */ Test(IL_FAUT(epaissir_les_albums_arguments)) /* Test introduit le 20210430100209... */ Bblock EGAL(Zmin_effectif,Zmin_argument); EGAL(Zmax_effectif,ADD2(Zmin_effectif,LONGUEUR(DOUB(dimZ)))); /* L'epaississement des albums consiste a doubler la dimension de l'axe 'Z'... */ Eblock ATes Bblock EGAL(Zmin_effectif,Zmin_argument); EGAL(Zmax_effectif,Zmax_argument); /* Dans ce cas, l'axe 'Z' ne change pas evidemment... */ Eblock ETes begin_nouveau_block Bblock DEBUT__DE_LA_DEFINITION_DE_L_AXE_OZ__EVENTUELLEMENT_EPAISSI; /* Definition de l'axe des 'Z' eventuellement epaissis... */ BDEFV(album,albumA); /* Definition de l'album d'images Argument avec l'axe des 'Z' eventuellement epaissis... */ BDEFV(album,albumT); /* Definition de l'album d'images Texture avec l'axe des 'Z' eventuellement epaissis... */ begin_nouveau_block Bblock DEBUT__DE_LA_DEFINITION_DE_L_AXE_OZ__ARGUMENT; /* Definition de l'axe des 'Z' argument... */ CHARGEMENT_DE_LA_TEXTURE; /* Chargement de l'album d'images Texture mis sous cette forme le 20210430084457... */ FIN____DE_LA_DEFINITION_DE_L_AXE_OZ__ARGUMENT; Eblock end_nouveau_block EPAISSISSEMENT_EVENTUEL_D_UN_ALBUM(albumT); /* Epaississement eventuel de l'album Texture... */ begin_nouveau_block Bblock DEBUT__DE_LA_DEFINITION_DE_L_AXE_OZ__ARGUMENT; /* Definition de l'axe des 'Z' argument... */ CALi(idAload_album(albumA ,nom_albumA ,nom_postfixeA ,premiere_imageA ,pas_des_imagesA ,nombre_de_chiffresA ,FAUX ,UNDEF ,inverser_l_axe_OZA ,incomplet_axe_OZA ,incomplet_axe_OZA_valeur_standard ) ); /* Chargement de l'album Argument... */ FIN____DE_LA_DEFINITION_DE_L_AXE_OZ__ARGUMENT; Eblock end_nouveau_block EPAISSISSEMENT_EVENTUEL_D_UN_ALBUM(albumA); /* Epaississement eventuel de l'album Argument... */ Test(PAS_D_ERREUR(CODE_ERREUR)) /* A priori, c'est bien 'CODE_ERREUR' de 'idAload_album(...)' que l'on teste ici... */ Bblock CALS(Iaccumulation_tri_dimensionnelle_standard_texturee(imageR,albumA,albumT)); Eblock ATes Bblock Eblock ETes EDEFV(album,albumT); EDEFV(album,albumA); FIN____DE_LA_DEFINITION_DE_L_AXE_OZ__EVENTUELLEMENT_EPAISSI; Eblock end_nouveau_block Eblock ATes Bblock BDEFV(albumF,albumA); /* Definition de l'album d'images Argument... */ BDEFV(album,albumT); /* Definition de l'album d'images Texture... */ CHARGEMENT_DE_LA_TEXTURE; /* Chargement de l'album d'images Texture mis sous cette forme le 20210430084457... */ CALi(idAloadF_album(albumA ,nom_albumA ,nom_postfixeA ,premiere_imageA ,pas_des_imagesA ,nombre_de_chiffresA ,FAUX ,UNDEF ,inverser_l_axe_OZA ,incomplet_axe_OZA ,incomplet_axe_OZA_valeur_non_standard ) ); /* Chargement de l'album Argument... */ Test(PAS_D_ERREUR(CODE_ERREUR)) Bblock CALS(Iaccumulation_tri_dimensionnelle_non_standard_texturee(imageR,albumA,albumT)); Eblock ATes Bblock Eblock ETes EDEFV(album,albumT); /* Definition de l'album d'images Texture... */ EDEFV(albumF,albumA); /* Definition de l'album d'images Argument... */ Eblock ETes Test(PAS_D_ERREUR(CODE_ERREUR)) Bblock CALi(Iupdate_image(nom_imageR,imageR)); Eblock ATes Bblock Eblock ETes Test(IL_FAUT(memoriser_le_Z_Buffer)) Bblock CALi(IupdateF_image(nom_imageZ,Z_Buffer)); /* Introduit le 20091212082256... */ Eblock ATes Bblock Eblock ETes ESaveModifyVariable(Logical,S_ACCELERATEUR__ALOAD_POINT_COORDONNEES_01_____utiliser_l_accelerateur); RETU_Commande; Eblock ECommande