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