/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N D U M O D I F I C A T E U R D E C H A M P : */
/* */
/* */
/* Author of '$xci/modifi_ch.04$I' : */
/* */
/* Jean-Francois Colonna (LACTAMME, 20050826154118). */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* G E N E R A T I O N D U C H A M P : */
/* */
/*************************************************************************************************************************************/
#define MODIFICATION_DU_CHAMP_DEMANDE(Fmodificateur,nom_de_l_imageR,nom_de_l_imageA,BorneInf,BorneSup,Zf,SequenceConversion) \
Bblock \
CALi(gInettoyage(les_images_sont_standards,ImageR,IFmageR)); \
/* Initialisation de l'image Resultat. */ \
\
Test(PAS_D_ERREUR(CODE_ERROR(gIload_image(les_images_sont_standards,ImageA,IFmageA,nom_de_l_imageA)))) \
Bblock \
Test(EST_VRAI(les_images_sont_standards)) \
Bblock \
/* Cas d'une image 'image' : */ \
BDEFV(imageF,ImageA_renormalisee); \
/* Image Argument renormalisee... */ \
BDEFV(imageF,ImageA_modifiee); \
/* Image Resultat dans un intervalle a priori inconnu d'ou la renormalisation a priori... */ \
\
CALS(Istd_float(ImageA_renormalisee,BorneInf,BorneSup,ImageA)); \
/* Mise de l'image Argument dans [a,b]. */ \
CALS(IFmodification_champ(ImageA_modifiee \
,amplificateur_de_la_fonction \
,aFONCTION(Fmodificateur) \
,translateur_de_la_fonction \
,ADRESSE(translation) \
,ADRESSE(echelle) \
,ImageA_renormalisee \
) \
); \
/* Application de la modification demandee... */ \
BLOC(SequenceConversion); \
/* Et conversion inverse... */ \
\
EDEFV(imageF,ImageA_modifiee); \
/* Image Resultat dans un intervalle a priori inconnu d'ou la renormalisation a priori... */ \
EDEFV(imageF,ImageA_renormalisee); \
/* Image Argument renormalisee... */ \
Eblock \
ATes \
Bblock \
/* Cas d'une image 'imageF' : */ \
CALS(IFmodification_champ(IFmageR \
,amplificateur_de_la_fonction \
,aFONCTION(Fmodificateur) \
,translateur_de_la_fonction \
,ADRESSE(translation) \
,ADRESSE(echelle) \
,IFmageA \
) \
); \
/* Application de la modification demandee... */ \
Eblock \
ETes \
\
CALi(gIupdate_image(les_images_sont_standards,nom_de_l_imageR,ImageR,IFmageR)); \
Eblock \
ATes \
Bblock \
Test__CODE_ERREUR__ERREUR07; \
Eblock \
ETes \
Eblock \
/* Modification du champ demande par la fonction 'Fmodificateur(...)' suivant ; */ \
/* */ \
/* NIVEAU(X,Y) = Amplificateur*Fonction[(Ex.Xf + Tx),(Ey.Yf + Ty)] + Translateur */ \
/* */ \
/* ou {X,Y} designent les coordonnees du point courant et {Xf,Yf} ces memes coordonnees */ \
/* normalisees, avec : */ \
/* */ \
/* {Ex,Ey} = echelle */ \
/* {Tx,Ty} = translation */ \
/* */ \
/* et 'Amplificateur' et 'Translateur' designent 'amplificateur_de_la_fonction' */ \
/* et 'translateur_de_la_fonction' respectivement... */