/*************************************************************************************************************************************/ /* */ /* 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 " : */ /* */ /* */ /* 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, soit : */ /* */ /* inverser_l_axe_OZ=FAUX (par defaut) : */ /* */ /* */ /* --------------------------------------- */ /* |image 1 | */ /* . | . | */ /* | | */ /* . | . | */ /* | | */ /* . | . | */ /* | | */ /* . | . | */ /* | | */ /* --------------------------------------- | */ /* |image N-2 | | */ /* | | | */ /* | | | */ /* | | | */ /* --------------------------------------- | | */ /* |image N-1 | |--------- */ /* | | | */ /* | | | . */ /* | | | */ /* --------------------------------------- | | . */ /* |image N | | | */ /* | | | | . */ /* | | | | */ /* | | | | . */ /* | | | | */ /* | | |---- */ /* | | | */ /* | |---- */ /* | | */ /* | | */ /* | | */ /* | | */ /* --------------------------------------- */ /* */ /* */ /* inverser_l_axe_OZ=VRAI : */ /* */ /* */ /* --------------------------------------- */ /* |image N | */ /* . | . | */ /* | | */ /* . | . | */ /* | | */ /* . | . | */ /* | | */ /* . | . | */ /* | | */ /* --------------------------------------- | */ /* |image 3 | | */ /* | | | */ /* | | | */ /* | | | */ /* --------------------------------------- | | */ /* |image 2 | |--------- */ /* | | | */ /* | | | . */ /* | | | */ /* --------------------------------------- | | . */ /* |image 1 | | | */ /* | | | | . */ /* | | | | */ /* | | | | . */ /* | | | | */ /* | | |---- */ /* | | | */ /* | |---- */ /* | | */ /* | | */ /* | | */ /* | | */ /* --------------------------------------- */ /* */ /* */ /* Author of '$xci/accumule.41$K' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 20091120185152). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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_L_ALBUM_ARGUMENT \ FAUX \ /* Indique s'il faut epaissir l'album Argument ('VRAI') ou pas ('FAUX'), la valeur par */ \ /* defaut garantissant la compatibilite anterieure. Ceci a ete introduit le 20210430114236. */ #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. */ \ /* */ \ /* Ceci fut introduit le 20091125131047... */ #define INCOMPLET_AXE_OZ \ FAUX \ /* Indique s'il peut manquer des images (ceci fut introduit le 20120322085610)... */ #define INCOMPLET_AXE_OZ_VALEUR_STANDARD \ NOIR #define INCOMPLET_AXE_OZ_VALEUR_NON_STANDARD \ FLOT__NOIR /* Donne la valeur des images manquantes (ceci fut introduit le 20120322092059)... */ #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 (introduit le 20060603095115). */ #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'). Ceci fut introduit le 20091212082256... */ #define VALEUR_INITIALE_DU_Z_BUFFER \ F_MOINS_LE_PETIT_INFINI \ /* Valeur a utiliser pour initialiser le 'Z-Buffer' si cela est necessaire (introduit le */ \ /* 20091212082256). */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* M A C R O S U T I L E S : */ /* */ /*************************************************************************************************************************************/ #include xci/accumule.41.I" /* Introduit le 20120621092238... */ #define imageR \ ImageR /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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 " : */ /* */ /*************************************************************************************************************************************/ 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_postfixe),NOM_UNDEF_VIDE)); /* Nom d'un eventuel postfixe a placer derriere <nom_albumA><numero> (par exemple '$ROUGE'). */ DEFV(Int,INIT(premiere_image,PREMIERE_IMAGE)); /* Numero de la premiere image, */ DEFV(Int,INIT(pas_des_images,PAS_DES_IMAGES)); /* Pas de passage d'un numero d'image a une autre. */ DEFV(Int,INIT(nombre_de_chiffres,NOMBRE_DE_CHIFFRES)); /* Nombre de chiffres codant le numero des images de la serie... */ DEFV(Logical,INIT(epaissir_l_album_argument,EPAISSIR_L_ALBUM_ARGUMENT)); /* Indique s'il faut epaissir l'album Argument ('VRAI') ou pas ('FAUX'), la valeur par */ /* defaut garantissant la compatibilite anterieure. Ceci a ete introduit le 20210430114236. */ DEFV(Logical,INIT(inverser_l_axe_OZ,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. */ /* */ /* Ceci fut introduit le 20091125131047... */ DEFV(Logical,INIT(incomplet_axe_OZ,INCOMPLET_AXE_OZ)); /* Indique s'il peut manquer des images (ceci fut introduit le 20120322085610)... */ DEFV(genere_p,INIT(incomplet_axe_OZ_valeur_standard,INCOMPLET_AXE_OZ_VALEUR_STANDARD)); DEFV(genere_Float,INIT(incomplet_axe_OZ_valeur_non_standard,INCOMPLET_AXE_OZ_VALEUR_NON_STANDARD)); /* Donne la valeur des images manquantes (ceci fut introduit le 20120322092059)... */ 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 (introduit le 20060603095115). */ 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'). Ceci fut introduit le 20091212082256... */ /*..............................................................................................................................*/ BSaveModifyVariable(Logical,S_ACCELERATEUR__ALOAD_POINT_COORDONNEES_01_____utiliser_l_accelerateur,VRAI); /* Introduit le 20120620092431... */ 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 20140103184105 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 (introduit le 20091212082256)... */ GET_ARGUMENTSv(nombre_d_arguments ,BLOC(GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20091211=""compatibilite_20091211=" ,Iaccumulation_tri_dimensionnelle_standard_____compatibilite_20091211 ,Iaccumulation_tri_dimensionnelle_non_standard_____compatibilite_20091211 ); /* Arguments introduits le 20091211121220... */ GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20100120=""compatibilite_20100120=" ,Iaccumulation_tri_dimensionnelle_standard_____compatibilite_20100120 ,Iaccumulation_tri_dimensionnelle_non_standard_____compatibilite_20100120 ); /* Arguments introduits le 20100120140309... */ GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20101008=""compatibilite_20101008=" ,Iaccumulation_tri_dimensionnelle_standard_____compatibilite_20101008 ,Iaccumulation_tri_dimensionnelle_non_standard_____compatibilite_20101008 ); /* Arguments introduits le 20101008115242... */ GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20101121=""compatibilite_20101121=" ,Iaccumulation_tri_dimensionnelle_standard_____compatibilite_20101121 ,Iaccumulation_tri_dimensionnelle_non_standard_____compatibilite_20101121 ); /* Arguments introduits le 20101121112528... */ GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20101125=""compatibilite_20101125=" ,Iaccumulation_tri_dimensionnelle_standard_____compatibilite_20101125 ,Iaccumulation_tri_dimensionnelle_non_standard_____compatibilite_20101125 ); /* Arguments introduits le 20101125125614... */ GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20101127=""compatibilite_20101127=" ,Iaccumulation_tri_dimensionnelle_standard_____compatibilite_20101127 ,Iaccumulation_tri_dimensionnelle_non_standard_____compatibilite_20101127 ); /* Arguments introduits le 20101127092950... */ GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20101128=""compatibilite_20101128=" ,Iaccumulation_tri_dimensionnelle_standard_____compatibilite_20101128 ,Iaccumulation_tri_dimensionnelle_non_standard_____compatibilite_20101128 ); /* Arguments introduits le 20101128145921... */ GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20141004=""compatibilite_20141004=" ,Iaccumulation_tri_dimensionnelle_standard_____compatibilite_20141004 ,Iaccumulation_tri_dimensionnelle_non_standard_____compatibilite_20141004 ); /* Arguments introduits le 20141004184105... */ GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20141005=""compatibilite_20141005=" ,Iaccumulation_tri_dimensionnelle_standard_____compatibilite_20141005 ,Iaccumulation_tri_dimensionnelle_non_standard_____compatibilite_20141005 ); /* Arguments introduits le 20141005111649... */ GET_ARGUMENTS2_L("Iaccumulation_tri_dimensionnelle_____compatibilite_20160125=""compatibilite_20160125=" ,Iaccumulation_tri_dimensionnelle_standard_____compatibilite_20160125 ,Iaccumulation_tri_dimensionnelle_non_standard_____compatibilite_20160125 ); /* Arguments introduits le 20160125104633... */ GET_ARGUMENT_C("albumA=""A=",nom_albumA); GET_ARGUMENT_C("imageR=""R=",nom_imageR); GET_ARGUMENT_C("postfixe=",nom_postfixe); GET_ARGUMENT_I("premiere=",premiere_image); GET_ARGUMENTS2_I("pas=",pas_des_images,pasZ); /* L'argument 'pasZ' fut introduit le 20110119140601... */ GET_ARGUMENT_I("chiffres=",nombre_de_chiffres); GET_ARGUMENTS2_L("optimiser=" ,Iaccumulation_tri_dimensionnelle_standard_texturee_____optimisation_1 ,Iaccumulation_tri_dimensionnelle_non_standard_texturee_____optimisation_1 ); /* Introduit le 20170829160919... */ GET_ARGUMENT_L("epaissir_album=""epaissir=",epaissir_l_album_argument); /* Argument introduit le 20210430114236... */ GET_ARGUMENT_L("inverser_Z=""inv_Z=",inverser_l_axe_OZ); GET_ARGUMENT_L("incomplet_Z=""inc_Z=",incomplet_axe_OZ); /* Argument introduit le 20120322085610... */ GET_ARGUMENT_P("valeur_standard_incomplet_Z=""vsinc_Z=",incomplet_axe_OZ_valeur_standard); GET_ARGUMENT_F("valeur_non_standard_incomplet_Z=""vnsinc_Z=",incomplet_axe_OZ_valeur_non_standard); /* Argument introduit le 20120322092059... */ GET_ARGUMENT_L("standard=",les_images_sont_standards); GET_ARGUMENTS2_L("avertir_coordonnees_hors_espace=""ache=" ,Iaccumulation_tri_dimensionnelle_standard_____avertir_coordonnees_hors_espace ,Iaccumulation_tri_dimensionnelle_non_standard_____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); /* Ces transformations geometriques ont ete introduites le 20091121091253... */ 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_____translation_OX ,Iaccumulation_tri_dimensionnelle_non_standard_____translation_OX ); GET_ARGUMENTS2_F("tY=""TRANSLATION_OY=" ,Iaccumulation_tri_dimensionnelle_standard_____translation_OY ,Iaccumulation_tri_dimensionnelle_non_standard_____translation_OY ); GET_ARGUMENTS2_F("tZ=""TRANSLATION_OZ=" ,Iaccumulation_tri_dimensionnelle_standard_____translation_OZ ,Iaccumulation_tri_dimensionnelle_non_standard_____translation_OZ ); GET_ARGUMENTS__Aload_point_coordonnees_01; /* Introduit sous cette forme le 20120621092238... */ GET_ARGUMENTS2_L("periodiser_X=""per_X=" ,Iaccumulation_tri_dimensionnelle_standard_____periodiser_X ,Iaccumulation_tri_dimensionnelle_non_standard_____periodiser_X ); GET_ARGUMENTS2_L("symetriser_X=""sym_X=" ,Iaccumulation_tri_dimensionnelle_standard_____symetriser_X ,Iaccumulation_tri_dimensionnelle_non_standard_____symetriser_X ); GET_ARGUMENTS2_L("prolonger_X=""pro_X=" ,Iaccumulation_tri_dimensionnelle_standard_____prolonger_X ,Iaccumulation_tri_dimensionnelle_non_standard_____prolonger_X ); GET_ARGUMENTS2_L("periodiser_Y=""per_Y=" ,Iaccumulation_tri_dimensionnelle_standard_____periodiser_Y ,Iaccumulation_tri_dimensionnelle_non_standard_____periodiser_Y ); GET_ARGUMENTS2_L("symetriser_Y=""sym_Y=" ,Iaccumulation_tri_dimensionnelle_standard_____symetriser_Y ,Iaccumulation_tri_dimensionnelle_non_standard_____symetriser_Y ); GET_ARGUMENTS2_L("prolonger_Y=""pro_Y=" ,Iaccumulation_tri_dimensionnelle_standard_____prolonger_Y ,Iaccumulation_tri_dimensionnelle_non_standard_____prolonger_Y ); GET_ARGUMENTS2_L("periodiser_Z=""per_Z=" ,Iaccumulation_tri_dimensionnelle_standard_____periodiser_Z ,Iaccumulation_tri_dimensionnelle_non_standard_____periodiser_Z ); GET_ARGUMENTS2_L("symetriser_Z=""sym_Z=" ,Iaccumulation_tri_dimensionnelle_standard_____symetriser_Z ,Iaccumulation_tri_dimensionnelle_non_standard_____symetriser_Z ); GET_ARGUMENTS2_L("prolonger_Z=""pro_Z=" ,Iaccumulation_tri_dimensionnelle_standard_____prolonger_Z ,Iaccumulation_tri_dimensionnelle_non_standard_____prolonger_Z ); GET_ARGUMENTS2_F("niveau_hors_album=""nha=""niveau_hors_image=""nhi=" ,Iaccumulation_tri_dimensionnelle_standard_____niveau_flottant_hors_image ,Iaccumulation_tri_dimensionnelle_non_standard_____niveau_flottant_hors_image ); GET_ARGUMENTS2_F("niveau_vide=""vide=" ,Iaccumulation_tri_dimensionnelle_standard_____niveau_du_vide_dans_l_album ,Iaccumulation_tri_dimensionnelle_non_standard_____niveau_du_vide_dans_l_album ); /* Argument introduit le 20101008112957... */ 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 20190208152029... */ GET_ARGUMENTS2_L("Aniveau_maximal=""Amaximum=" ,Iaccumulation_tri_dimensionnelle_standard_____renvoyer_le_niveau_maximal_de_albumA ,Iaccumulation_tri_dimensionnelle_non_standard_____renvoyer_le_niveau_maximal_de_albumA ); /* Argument introduit le 20101129121403... */ GET_ARGUMENTS2_F("minimum_X=""mX=" ,Iaccumulation_tri_dimensionnelle_standard_____minimum_de_coordonnee_X ,Iaccumulation_tri_dimensionnelle_non_standard_____minimum_de_coordonnee_X ); GET_ARGUMENTS2_F("maximum_X=""MX=" ,Iaccumulation_tri_dimensionnelle_standard_____maximum_de_coordonnee_X ,Iaccumulation_tri_dimensionnelle_non_standard_____maximum_de_coordonnee_X ); GET_ARGUMENTS2_F("minimum_Y=""mY=" ,Iaccumulation_tri_dimensionnelle_standard_____minimum_de_coordonnee_Y ,Iaccumulation_tri_dimensionnelle_non_standard_____minimum_de_coordonnee_Y ); GET_ARGUMENTS2_F("maximum_Y=""MY=" ,Iaccumulation_tri_dimensionnelle_standard_____maximum_de_coordonnee_Y ,Iaccumulation_tri_dimensionnelle_non_standard_____maximum_de_coordonnee_Y ); GET_ARGUMENTS2_F("minimum_Z=""mZ=" ,Iaccumulation_tri_dimensionnelle_standard_____minimum_de_coordonnee_Z ,Iaccumulation_tri_dimensionnelle_non_standard_____minimum_de_coordonnee_Z ); GET_ARGUMENTS2_F("maximum_Z=""MZ=" ,Iaccumulation_tri_dimensionnelle_standard_____maximum_de_coordonnee_Z ,Iaccumulation_tri_dimensionnelle_non_standard_____maximum_de_coordonnee_Z ); /* Arguments introduits le 20160125104633... */ GET_ARGUMENTS2_F("exposant_niveau=""en=" ,Iaccumulation_tri_dimensionnelle_standard_____exposant_du_niveau ,Iaccumulation_tri_dimensionnelle_non_standard_____exposant_du_niveau ); GET_ARGUMENTS2_L("ponderer_directions_niveaux=""pdn=""centre_de_gravite=""cdg=" ,Iaccumulation_tri_dimensionnelle_standard_____calculer_le_centre_de_gravite ,Iaccumulation_tri_dimensionnelle_non_standard_____calculer_le_centre_de_gravite ); GET_ARGUMENTS2_L("maximum_differences=""md=" ,Iaccumulation_tri_dimensionnelle_standard_____utiliser_le_maximum_des_differences ,Iaccumulation_tri_dimensionnelle_non_standard_____utiliser_le_maximum_des_differences ); GET_ARGUMENTS2_N("somme_differences=""sd=" ,Iaccumulation_tri_dimensionnelle_standard_____utiliser_le_maximum_des_differences ,Iaccumulation_tri_dimensionnelle_non_standard_____utiliser_le_maximum_des_differences ); /* Arguments introduits le 20091204134434... */ GET_ARGUMENTS2_F("seuil=" ,Iaccumulation_tri_dimensionnelle_standard_____seuil_du_niveau_courant ,Iaccumulation_tri_dimensionnelle_non_standard_____seuil_du_niveau_courant ); /* Argument introduit le 20091206115304... */ GET_ARGUMENTS2_L("cumuler_niveau=""cn=" ,Iaccumulation_tri_dimensionnelle_standard_____cumuler_le_niveau_courant ,Iaccumulation_tri_dimensionnelle_non_standard_____cumuler_le_niveau_courant ); GET_ARGUMENTS2_L("cumuler_niveau_lumineux=""cnl=" ,Iaccumulation_tri_dimensionnelle_standard_____cumuler_le_niveau_lumineux ,Iaccumulation_tri_dimensionnelle_non_standard_____cumuler_le_niveau_lumineux ); /* Argument introduit le 20091123143623... */ GET_ARGUMENTS2_L("cumuler_coordonnees_XYZ=""ccXYZ=" ,Iaccumulation_tri_dimensionnelle_standard_____cumuler_les_coordonnees_XYZ ,Iaccumulation_tri_dimensionnelle_non_standard_____cumuler_les_coordonnees_XYZ ); /* Argument introduit le 20091206115304... */ GET_ARGUMENTS2_F("ponderation_X=""pX=" ,Iaccumulation_tri_dimensionnelle_standard_____ponderation_de_la_coordonnees_X ,Iaccumulation_tri_dimensionnelle_non_standard_____ponderation_de_la_coordonnees_X ); GET_ARGUMENTS2_F("ponderation_Y=""pY=" ,Iaccumulation_tri_dimensionnelle_standard_____ponderation_de_la_coordonnees_Y ,Iaccumulation_tri_dimensionnelle_non_standard_____ponderation_de_la_coordonnees_Y ); GET_ARGUMENTS2_F("ponderation_Z=""pZ=" ,Iaccumulation_tri_dimensionnelle_standard_____ponderation_de_la_coordonnees_Z ,Iaccumulation_tri_dimensionnelle_non_standard_____ponderation_de_la_coordonnees_Z ); GET_ARGUMENTS2_L("cumuler_coordonnees_RPT=""ccRPT=" ,Iaccumulation_tri_dimensionnelle_standard_____cumuler_les_coordonnees_RPT ,Iaccumulation_tri_dimensionnelle_non_standard_____cumuler_les_coordonnees_RPT ); GET_ARGUMENTS2_F("ponderation_R=""pR=" ,Iaccumulation_tri_dimensionnelle_standard_____ponderation_de_la_coordonnees_R ,Iaccumulation_tri_dimensionnelle_non_standard_____ponderation_de_la_coordonnees_R ); GET_ARGUMENTS2_F("ponderation_P=""pP=" ,Iaccumulation_tri_dimensionnelle_standard_____ponderation_de_la_coordonnees_P ,Iaccumulation_tri_dimensionnelle_non_standard_____ponderation_de_la_coordonnees_P ); GET_ARGUMENTS2_F("ponderation_T=""pT=" ,Iaccumulation_tri_dimensionnelle_standard_____ponderation_de_la_coordonnees_T ,Iaccumulation_tri_dimensionnelle_non_standard_____ponderation_de_la_coordonnees_T ); /* Arguments introduits le 20200224132943... */ GET_ARGUMENTS2_F("exposant_X=""eX=" ,Iaccumulation_tri_dimensionnelle_standard_____exposant_de_la_coordonnees_X ,Iaccumulation_tri_dimensionnelle_non_standard_____exposant_de_la_coordonnees_X ); GET_ARGUMENTS2_F("exposant_Y=""eY=" ,Iaccumulation_tri_dimensionnelle_standard_____exposant_de_la_coordonnees_Y ,Iaccumulation_tri_dimensionnelle_non_standard_____exposant_de_la_coordonnees_Y ); GET_ARGUMENTS2_F("exposant_Z=""eZ=""depth_cueing=""depth-cueing=" ,Iaccumulation_tri_dimensionnelle_standard_____exposant_de_la_coordonnees_Z ,Iaccumulation_tri_dimensionnelle_non_standard_____exposant_de_la_coordonnees_Z ); /* Arguments introduits le 20091211213350 et completes le 20100202152504. */ /* */ /* 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_____eclairer_par_une_source_lumineuse ,Iaccumulation_tri_dimensionnelle_non_standard_____eclairer_par_une_source_lumineuse ); GET_ARGUMENTS2_F("source_lumineuse_X=""slX=""slx=" ,Iaccumulation_tri_dimensionnelle_standard_____source_lumineuse_X ,Iaccumulation_tri_dimensionnelle_non_standard_____source_lumineuse_X ); GET_ARGUMENTS2_F("source_lumineuse_Y=""slY=""sly=" ,Iaccumulation_tri_dimensionnelle_standard_____source_lumineuse_Y ,Iaccumulation_tri_dimensionnelle_non_standard_____source_lumineuse_Y ); GET_ARGUMENTS2_F("source_lumineuse_Z=""slZ=""slz=" ,Iaccumulation_tri_dimensionnelle_standard_____source_lumineuse_Z ,Iaccumulation_tri_dimensionnelle_non_standard_____source_lumineuse_Z ); GET_ARGUMENTS2_F("source_lumineuse_intensite_speculaire=""slis=""is=""speculaire=" ,Iaccumulation_tri_dimensionnelle_standard_____source_lumineuse_specularite ,Iaccumulation_tri_dimensionnelle_non_standard_____source_lumineuse_specularite ); /* Les arguments relatifs a la source lumineuse ont ete introduits le 20091123143623 et */ /* completes le 20091126135941 en ce qui concerne la specularite, elle meme completee le */ /* 20091203130549... */ GET_ARGUMENTS2_I("demi_dimension_gradient_X=""ddgX=""ddgx=""dx=""dX=" ,Iaccumulation_tri_dimensionnelle_standard_____demi_dimension_de_calcul_du_gradient_X ,Iaccumulation_tri_dimensionnelle_non_standard_____demi_dimension_de_calcul_du_gradient_X ); GET_ARGUMENTS2_I("demi_dimension_gradient_Y=""ddgY=""ddgy=""dy=""dY=" ,Iaccumulation_tri_dimensionnelle_standard_____demi_dimension_de_calcul_du_gradient_Y ,Iaccumulation_tri_dimensionnelle_non_standard_____demi_dimension_de_calcul_du_gradient_Y ); GET_ARGUMENTS2_I("demi_dimension_gradient_Z=""ddgZ=""ddgz=""dz=""dZ=" ,Iaccumulation_tri_dimensionnelle_standard_____demi_dimension_de_calcul_du_gradient_Z ,Iaccumulation_tri_dimensionnelle_non_standard_____demi_dimension_de_calcul_du_gradient_Z ); /* Les arguments relatifs au calcul du gradient ont ete introduits le 20091123143623... */ /* */ /* Les arguments {"dx=","dX=","dy=","dY=","dz=","dZ="} ont ete introduits le 20100117102306 */ /* par symetrie avec 'v $xci/densite_3D.11$K dx='... */ GET_ARGUMENTS2_L("visualiser_que_gradients_nuls=""vqgn=" ,Iaccumulation_tri_dimensionnelle_standard_____ne_visualiser_que_les_gradients_nuls ,Iaccumulation_tri_dimensionnelle_non_standard_____ne_visualiser_que_les_gradients_nuls ); /* Arguments introduits le 20141005083635... */ GET_ARGUMENTS2_L("visualiser_gradients_nuls=""vgn=" ,Iaccumulation_tri_dimensionnelle_standard_____visualiser_les_gradients_nuls ,Iaccumulation_tri_dimensionnelle_non_standard_____visualiser_les_gradients_nuls ); /* Arguments introduits le 20141005111649... */ 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); /* Les arguments relatifs au 'Z-Buffer' ont ete introduits le 20091123143623... */ GET_ARGUMENTS2_P("niveau_fond=""fond=""nf=" ,Iaccumulation_tri_dimensionnelle_standard_____niveau_du_fond ,Iaccumulation_tri_dimensionnelle_non_standard_____niveau_du_fond ); /* Les arguments relatifs au calcul du gradient ont ete introduits le 20091123143623... */ ) ); 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 20170830141235). */ 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 20170830141235). */ Eblock ATes Bblock Eblock ETes Eblock ETes 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_l_album_argument)) /* 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 BSaveModifyVariable(Int,Zmin,Zmin_effectif); BSaveModifyVariable(Int,Zmax,Zmax_effectif); /* 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... */ begin_nouveau_block Bblock BSaveModifyVariable(Int,Zmin,Zmin_argument); BSaveModifyVariable(Int,Zmax,Zmax_argument); /* Definition de l'axe des 'Z' Argument... */ CALi(idAload_album(albumA ,nom_albumA ,nom_postfixe ,premiere_image ,pas_des_images ,nombre_de_chiffres ,FAUX ,UNDEF ,inverser_l_axe_OZ ,incomplet_axe_OZ ,incomplet_axe_OZ_valeur_standard ) ); /* Chargement de l'album Argument... */ ESaveModifyVariable(Int,Zmax); ESaveModifyVariable(Int,Zmin); Eblock end_nouveau_block Test(IL_FAUT(epaissir_l_album_argument)) Bblock CALS(Aepaississement(albumA,albumA,Zmin_argument,Zmax_argument)); /* Epaississement eventuel de l'album Argument... */ Eblock ATes Bblock Eblock ETes 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(imageR,albumA)); Eblock ATes Bblock Eblock ETes EDEFV(album,albumA); ESaveModifyVariable(Int,Zmax); ESaveModifyVariable(Int,Zmin); Eblock end_nouveau_block Eblock ATes Bblock BDEFV(albumF,albumA); /* Definition de l'album d'images Argument... */ CALi(idAloadF_album(albumA ,nom_albumA ,nom_postfixe ,premiere_image ,pas_des_images ,nombre_de_chiffres ,FAUX ,UNDEF ,inverser_l_axe_OZ ,incomplet_axe_OZ ,incomplet_axe_OZ_valeur_non_standard ) ); /* Chargement de l'album Argument... */ Test(PAS_D_ERREUR(CODE_ERREUR)) Bblock CALS(Iaccumulation_tri_dimensionnelle_non_standard(imageR,albumA)); Eblock ATes Bblock Eblock ETes 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