/*************************************************************************************************************************************/
/* */
/* G E S T I O N D E S C O U L E U R S : */
/* */
/* */
/* Author of '$xrv/particule.51$I' : */
/* */
/* Jean-Francois Colonna (LACTAMME, 20001218133336). */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* P A S S A G E D E S F A U S S E S A U X V R A I E S C O U L E U R S : */
/* */
/*************************************************************************************************************************************/
Bblock
Test(IFNE_chaine(nom_paletteA,NOM_PIPE))
Bblock
DEFV(genere_Float,INIT(niveau,FLOT__NIVEAU_UNDEF));
/* Niveau de fausse couleur... */
CALS(Iload_palette_de_couleurs(nom_paletteA,ESPACE_DE_COULEURS_RVB));
/* Chargement de la palette de couleurs... */
PUSH_FILTRAGE;
/* Sauvegarde de l'etat courant du filtrage des niveaux. */
SET_FILTRAGE(ACTIF);
/* On autorise tous les filtrages afin d'avoir la 'SUBSTITUTION'. */
PUSH_SUBSTITUTION;
/* Sauvegarde de la substitution courante. */
Komp(numero_des_points,nombre_d_iterations)
Bblock
EGAL(niveau
,AXPB(facteur_d_homothetie_des_couleurs
,OPC1(EST_VRAI(les_niveaux_sont_denormalises)
,NEUT
,__DENORMALISE_NIVEAU_AVEC_MODULO____
,ACCES_LISTE(liste_initiale_des_NIVEAU,numero_des_points)
)
,constante_de_translation_des_couleurs
)
);
/* J'ai remplace '__DENORMALISE_NIVEAU(...)' par '__DENORMALISE_NIVEAU_AVEC_MODULO____(...)' */
/* le 20131205162300 car, en effet, cette derniere procedure a l'avantage de repeter modulo */
/* les niveaux et donc de periodiser des palettes, a condition donc que les niveaux ne */
/* soient pas dans [0,1], mais dans [0,N] (avec N=2, 3,...). */
Test(IFEXff(niveau,FLOT__NOIR,FLOT__BLANC))
Bblock
PRINT_ERREUR("un niveau de fausse couleur est hors de [NOIR,BLANC]");
CAL1(Prer1("il vaut %f et va donc etre seuille\n",niveau));
EGAL(niveau,TRNP(niveau));
CAL1(Prer1("ce qui donne %f\n",niveau));
Eblock
ATes
Bblock
Eblock
ETes
SUBSTITUTION(L_SUBSTITUTION_ROUGE);
EGAL(ACCES_LISTE(liste_initiale_des_ROUGE,numero_des_points)
,FLOT(Nsubstitution(GENP(niveau)))
);
SUBSTITUTION(L_SUBSTITUTION_VERTE);
EGAL(ACCES_LISTE(liste_initiale_des_VERTE,numero_des_points)
,FLOT(Nsubstitution(GENP(niveau)))
);
SUBSTITUTION(L_SUBSTITUTION_BLEUE);
EGAL(ACCES_LISTE(liste_initiale_des_BLEUE,numero_des_points)
,FLOT(Nsubstitution(GENP(niveau)))
);
Eblock
EKom
PULL_SUBSTITUTION;
PULL_FILTRAGE;
/* Et restauration des conditions initiales... */
EGAL(facteur_d_homothetie_des_couleurs,FACTEUR_D_HOMOTHETIE_DES_COULEURS);
EGAL(constante_de_translation_des_couleurs,CONSTANTE_DE_TRANSLATION_DES_COULEURS);
/* Une transformation du type '1.c+0' sera appliquee aux couleurs... */
Eblock
ATes
Bblock
Eblock
ETes
Eblock
Copyright © Jean-François Colonna, 2019-2021.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / Ecole Polytechnique, 2019-2021.