_______________________________________________________________________________________________________________________________________ /*************************************************************************************************************************************/ /* */ /* F O N C T I O N S C O M P L E X E S E T H Y P E R - C O M P L E X E S */ /* D E T R A N S F O R M A T I O N D E S I M A G E S : */ /* */ /* */ /* Definition : */ /* */ /* Dans ce fichier se trouvent un */ /* certain nombre de fonctions de */ /* manipulation des images par */ /* transformations conformes. */ /* */ /* */ /* Notations : */ /* */ /* Par ces fonctions, on va passer */ /* d'un espace bidimensionnel a un autre */ /* espace bidimensionnel en notant : */ /* */ /* NORM_X : cNORMALISE_OX */ /* NORM_Y : cNORMALISE_OY */ /* */ /* DENORM_X : lDENORMALISE_OX */ /* DENORM_Y : lDENORMALISE_OY */ /* */ /* pc : point_courant */ /* pm : point_manoeuvre */ /* np : {new_X,new_Y} */ /* */ /* f : facteur_multiplicatif[_effectif] */ /* */ /* RhX : R_facteur_homothetie_X */ /* RhY : R_facteur_homothetie_Y */ /* */ /* AhX : A_facteur_homothetie_X */ /* AhY : A_facteur_homothetie_Y */ /* */ /* AtrX : A_translation__dX_____ */ /* AtrY : A_translation__dY_____ */ /* RtrX : R_translation__dX_____ */ /* RtrY : R_translation__dY_____ */ /* */ /* avec symboliquement : */ /* */ /* pm = TransformationConforme(pc) */ /* */ /* et : */ /* */ /* LoadPoint(pc) --> StorePoint(np) par defaut, */ /* LoadPoint(np) --> StorePoint(pc) si 'IL_FAUT(..._permuter_les_coordonnees_...)' */ /* */ /* */ /* 1-Cas dit du "PLAN_IMAGE" : */ /* */ /* */ /* YMAX1 ------------------ YMAX2 ------------------ */ /* | | | | */ /* | | | | */ /* | * | | | */ /* | pc | | | */ /* | | | | */ /* | | | * | */ /* | | | pm | */ /* | | | | */ /* | | | | */ /* YMIN1 ------------------ YMIN2 ------------------ */ /* */ /* XMIN1 XMAX1 XMIN2 XMAX2 */ /* */ /* */ /* Reelle(pc) = X +DENORM_X(AtrX) Reelle(np) = RhX.f.Reelle(pm) +DENORM_X(RtrX) */ /* Imaginaire(pc) = Y +DENORM_Y(AtrY) Imaginaire(np) = RhY.f.Imaginaire(pm)+DENORM_X(RtrX) */ /* */ /* XMIN1 = Xmin+DENORM_X(AtrX) */ /* XMAX1 = Xmax+DENORM_X(AtrX) */ /* */ /* YMIN1 = Ymin+DENORM_Y(AtrY) */ /* YMAY1 = Ymax+DENORM_Y(AtrY) */ /* */ /* */ /* 2-Cas dit du "PLAN_COMPLEXE" : */ /* */ /* */ /* YMAX1 ------------------ YMAX2 ------------------ */ /* | | | | */ /* | | | | */ /* | * | | | */ /* | pc | | | */ /* | | | | */ /* | | | * | */ /* | | | pm | */ /* | | | | */ /* | | | | */ /* YMIN1 ------------------ YMIN2 ------------------ */ /* */ /* XMIN1 XMAX1 XMIN2 XMAX2 */ /* */ /* */ /* Reelle(pc) = AhX.NORM_X(X) +AtrX Reelle(np) = RhX.f.Reelle(pm) +RtrX */ /* Imaginaire(pc) = AhY.NORM_Y(Y) +AtrY Imaginaire(np) = RhY.f.Imaginaire(pm)+RtrX */ /* */ /* XMIN1 = AhX.NORM_X(Xmin)+AtrX */ /* = 0 +AtrX */ /* XMAX1 = AhX.NORM_X(Xmax)+AtrX */ /* = AhX +AtrX */ /* */ /* YMIN1 = AhY.NORM_Y(Ymin)+AtrY */ /* = 0 +AtrY */ /* YMAY1 = AhY.NORM_Y(Ymax)+AtrY */ /* = AhY +AtrY */ /* */ /* */ /* Author of '$ximcf/conformes$FON' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 19870000000000). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* C O N T R O L E D E L ' A R I T H M E T I Q U E E T E N D U E */ /* L O R S D E C A L C U L S S U R L E S N O M B R E S C O M P L E X E S : */ /* */ /*************************************************************************************************************************************/ #ifdef FAIRE_EVENTUELLEMENT_DE_L_ARITHMETIQUE_ETENDUE_DANS_LES_NOMBRES_COMPLEXES DEFV(Common,DEFV(Logical,_______VERSION__ximcf_conformes_____ARITHMETIQUE_ETENDUE_DANS_LES_NOMBRES_COMPLEXES)); /* Indicateur introduit le 20070129121935... */ #Aifdef FAIRE_EVENTUELLEMENT_DE_L_ARITHMETIQUE_ETENDUE_DANS_LES_NOMBRES_COMPLEXES DEFV(Common,DEFV(Logical,_______VERSION__ximcf_conformes_____ARITHMETIQUE_DE_BASE_DANS_LES_NOMBRES_COMPLEXES)); /* Indicateur introduit le 20070129132455... */ #Eifdef FAIRE_EVENTUELLEMENT_DE_L_ARITHMETIQUE_ETENDUE_DANS_LES_NOMBRES_COMPLEXES _______________________________________________________________________________________________________________________________________ _______________________________________________________________________________________________________________________________________ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N G E N E R A L E D E S T R A N S F O R M A T I O N S C O N F O R M E S */ /* D A N S L E S P L A N S I M A G E E T C O M P L E X E R E S P E C T I V E M E N T : */ /* */ /*************************************************************************************************************************************/ /* ATTENTION : 'TRANSFORMATIONS_CONFORMES_____permuter_les_coordonnees_de_load_et_de_store' */ /* ne peut etre defini ici puisqu'il est reference dans chacun des blocs de fonctions qui */ /* suivent alors qu'il ne peut etre defini qu'une seule fois (dans le premier bloc...). */ #define COORDONNEES_EFFECTIVES_DE_store_load(new_X,new_Y,old_X,old_Y) \ /* On notera les correspondances suivantes : */ \ /* */ \ /* {old_X,old_Y} --> point_courant ('store(...)' par defaut) */ \ /* */ \ /* /\ */ \ /* et : || */ \ /* || */ \ /* */ \ /* {new_X,new_Y} --> point_manoeuvre ('load(...)' par defaut) */ \ /* */ \ /* "par defaut" signifiant que les coordonnees de 'load' et de 'store' ne sont pas permutees */ \ /* ('IL_NE_FAUT_PAS(..._____permuter_les_coordonnees_de_load_et_de_store)'). */ \ DEFV(Int,INIT(new_X_effectif,new_X)); \ DEFV(Int,INIT(new_Y_effectif,new_Y)); \ DEFV(Int,INIT(old_X_effectif,old_X)); \ DEFV(Int,INIT(old_Y_effectif,old_Y)); \ \ Test(IL_FAUT(TRANSFORMATIONS_CONFORMES_____permuter_les_coordonnees_de_load_et_de_store)) \ Bblock \ EGAL(new_X_effectif,old_X); \ EGAL(new_Y_effectif,old_Y); \ EGAL(old_X_effectif,new_X); \ EGAL(old_Y_effectif,new_Y); \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ \ Test(IL_FAUT(TRANSFORMATIONS_CONFORMES_____editer_les_extrema_des_coordonnees_de_load_et_de_store)) \ Bblock \ Test(IFET(IFEQ(X,Xmin),IFEQ(Y,Ymin))) \ Bblock \ EGAL(TRANSFORMATIONS_CONFORMES_____minimum__old_X__de_load_et_de_store,INFINI); \ EGAL(TRANSFORMATIONS_CONFORMES_____maximum__old_X__de_load_et_de_store,MOINS_L_INFINI); \ \ EGAL(TRANSFORMATIONS_CONFORMES_____minimum__old_Y__de_load_et_de_store,INFINI); \ EGAL(TRANSFORMATIONS_CONFORMES_____maximum__old_Y__de_load_et_de_store,MOINS_L_INFINI); \ \ EGAL(TRANSFORMATIONS_CONFORMES_____minimum__new_X__de_load_et_de_store,INFINI); \ EGAL(TRANSFORMATIONS_CONFORMES_____maximum__new_X__de_load_et_de_store,MOINS_L_INFINI); \ \ EGAL(TRANSFORMATIONS_CONFORMES_____minimum__new_Y__de_load_et_de_store,INFINI); \ EGAL(TRANSFORMATIONS_CONFORMES_____maximum__new_Y__de_load_et_de_store,MOINS_L_INFINI); \ /* Initialisation du processus... */ \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ \ Test(IL_FAUT(TRANSFORMATIONS_CONFORMES_____editer_les_extrema_des_coordonnees_de_load_et_de_store)) \ Bblock \ EGAL(TRANSFORMATIONS_CONFORMES_____minimum__old_X__de_load_et_de_store \ ,MIN2(TRANSFORMATIONS_CONFORMES_____minimum__old_X__de_load_et_de_store,old_X) \ ); \ EGAL(TRANSFORMATIONS_CONFORMES_____maximum__old_X__de_load_et_de_store \ ,MAX2(TRANSFORMATIONS_CONFORMES_____maximum__old_X__de_load_et_de_store,old_X) \ ); \ \ EGAL(TRANSFORMATIONS_CONFORMES_____minimum__old_Y__de_load_et_de_store \ ,MIN2(TRANSFORMATIONS_CONFORMES_____minimum__old_Y__de_load_et_de_store,old_Y) \ ); \ EGAL(TRANSFORMATIONS_CONFORMES_____maximum__old_Y__de_load_et_de_store \ ,MAX2(TRANSFORMATIONS_CONFORMES_____maximum__old_Y__de_load_et_de_store,old_Y) \ ); \ \ EGAL(TRANSFORMATIONS_CONFORMES_____minimum__new_X__de_load_et_de_store \ ,MIN2(TRANSFORMATIONS_CONFORMES_____minimum__new_X__de_load_et_de_store,new_X) \ ); \ EGAL(TRANSFORMATIONS_CONFORMES_____maximum__new_X__de_load_et_de_store \ ,MAX2(TRANSFORMATIONS_CONFORMES_____maximum__new_X__de_load_et_de_store,new_X) \ ); \ \ EGAL(TRANSFORMATIONS_CONFORMES_____minimum__new_Y__de_load_et_de_store \ ,MIN2(TRANSFORMATIONS_CONFORMES_____minimum__new_Y__de_load_et_de_store,new_Y) \ ); \ EGAL(TRANSFORMATIONS_CONFORMES_____maximum__new_Y__de_load_et_de_store \ ,MAX2(TRANSFORMATIONS_CONFORMES_____maximum__new_Y__de_load_et_de_store,new_Y) \ ); \ /* Recherche des extrema... */ \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ \ Test(IL_FAUT(TRANSFORMATIONS_CONFORMES_____editer_les_extrema_des_coordonnees_de_load_et_de_store)) \ Bblock \ Test(IFET(IFEQ(X,Xmax),IFEQ(Y,Ymax))) \ Bblock \ CAL3(Prme4("[%d,%d]x[%d,%d]" \ ,TRANSFORMATIONS_CONFORMES_____minimum__new_X__de_load_et_de_store \ ,TRANSFORMATIONS_CONFORMES_____maximum__new_X__de_load_et_de_store \ ,TRANSFORMATIONS_CONFORMES_____minimum__new_Y__de_load_et_de_store \ ,TRANSFORMATIONS_CONFORMES_____maximum__new_Y__de_load_et_de_store \ ) \ ); \ \ Test(IL_NE_FAUT_PAS(TRANSFORMATIONS_CONFORMES_____permuter_les_coordonnees_de_load_et_de_store)) \ Bblock \ CALS(FPrme0(" --> ")); \ Eblock \ ATes \ Bblock \ CALS(FPrme0(" <-- ")); \ Eblock \ ETes \ \ CAL3(Prme4("[%d,%d]x[%d,%d]" \ ,TRANSFORMATIONS_CONFORMES_____minimum__old_X__de_load_et_de_store \ ,TRANSFORMATIONS_CONFORMES_____maximum__old_X__de_load_et_de_store \ ,TRANSFORMATIONS_CONFORMES_____minimum__old_Y__de_load_et_de_store \ ,TRANSFORMATIONS_CONFORMES_____maximum__old_Y__de_load_et_de_store \ ) \ ); \ \ CALS(Fsauts_de_lignes(UN)); \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ \ Test(IL_FAUT(TRANSFORMATIONS_CONFORMES_____editer_les_coordonnees_de_load_et_de_store)) \ Bblock \ CALS(FPrme0("PlanImage... : ")); \ \ CAL3(Prme2("{%d,%d}" \ ,new_X \ ,new_Y \ ) \ ); \ \ Test(IL_NE_FAUT_PAS(TRANSFORMATIONS_CONFORMES_____permuter_les_coordonnees_de_load_et_de_store)) \ Bblock \ CALS(FPrme0(" --> ")); \ Eblock \ ATes \ Bblock \ CALS(FPrme0(" <-- ")); \ Eblock \ ETes \ \ CAL3(Prme2("{%d,%d}" \ ,old_X \ ,old_Y \ ) \ ); \ \ CALS(Fsauts_de_lignes(UN)); \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ /* Procedure de permutation eventuelle des coordonnees (introduite le 20120521150042) et */ \ /* completee le 20120528091800 pour editer eventuellement les "extrema" des coordonnees */ \ /* (le mot 'extrema' est entre quotes car, en effet, pour 'point_manoeuvre' cela peut ne */ \ /* pas etre les extrema...), puis encore completee le 20120604120312 afin de pouvoir */ \ /* editer les coordonnees elles-memes... */ #define store_point_load_point(imageA,new_X,new_Y,imageR,old_X,old_Y) \ Bblock \ COORDONNEES_EFFECTIVES_DE_store_load(new_X,new_Y,old_X,old_Y); \ /* Permutation eventuelle de {old_X,old_Y} et de {new_X,new_Y}... */ \ \ OPC5(IL_NE_FAUT_PAS(TRANSFORMATIONS_CONFORMES_____store_point_modulo__plutot_que__store_point_valide) \ ,store_point_valide \ ,store_point_modulo \ ,OPC3(IL_NE_FAUT_PAS(TRANSFORMATIONS_CONFORMES_____load_point_valide__plutot_que__load_point_modulo) \ ,load_point_modulo \ ,load_point_valide \ ,imageA \ ,new_X_effectif \ ,new_Y_effectif \ ) \ ,imageR \ ,old_X_effectif \ ,old_Y_effectif \ ,FVARIABLE \ ); \ Eblock \ /* Procedure de load puis de store "standard" (introduite le 20120521150042). */ #define storeF_point_loadF_point(imageA,new_X,new_Y,imageR,old_X,old_Y) \ Bblock \ COORDONNEES_EFFECTIVES_DE_store_load(new_X,new_Y,old_X,old_Y); \ /* Permutation eventuelle de {old_X,old_Y} et de {new_X,new_Y}... */ \ \ OPC4(IL_NE_FAUT_PAS(TRANSFORMATIONS_CONFORMES_____store_point_modulo__plutot_que__store_point_valide) \ ,storeF_point_valide \ ,storeF_point_modulo \ ,OPC3(IL_NE_FAUT_PAS(TRANSFORMATIONS_CONFORMES_____load_point_valide__plutot_que__load_point_modulo) \ ,loadF_point_modulo \ ,loadF_point_valide \ ,imageA \ ,new_X_effectif \ ,new_Y_effectif \ ) \ ,imageR \ ,old_X_effectif \ ,old_Y_effectif \ ); \ Eblock \ /* Procedure de load puis de store "flottant" (introduite le 20120521150042). */ #define storeJ_point_loadJ_point(imageA,new_X,new_Y,imageR,old_X,old_Y) \ Bblock \ COORDONNEES_EFFECTIVES_DE_store_load(new_X,new_Y,old_X,old_Y); \ /* Permutation eventuelle de {old_X,old_Y} et de {new_X,new_Y}... */ \ \ OPC4(IL_NE_FAUT_PAS(TRANSFORMATIONS_CONFORMES_____store_point_modulo__plutot_que__store_point_valide) \ ,storeRJ_point_valide \ ,storeRJ_point_valide \ /* ATTENTION : 'storeRJ_point_modulo(...)' n'existe pas a la date du 20120604154933... */ \ ,OPC3(IL_NE_FAUT_PAS(TRANSFORMATIONS_CONFORMES_____load_point_valide__plutot_que__load_point_modulo) \ ,loadRJ_point_modulo \ ,loadRJ_point_modulo \ /* ATTENTION : 'loadRJ_point_valide(...)' n'existe pas a la date du 20120604154933... */ \ ,imageA \ ,new_X_effectif \ ,new_Y_effectif \ ) \ ,imageR \ ,old_X_effectif \ ,old_Y_effectif \ ); \ OPC4(IL_NE_FAUT_PAS(TRANSFORMATIONS_CONFORMES_____store_point_modulo__plutot_que__store_point_valide) \ ,storeIJ_point_valide \ ,storeIJ_point_valide \ /* ATTENTION : 'storeIJ_point_modulo(...)' n'existe pas a la date du 20120604154933... */ \ ,OPC3(IL_NE_FAUT_PAS(TRANSFORMATIONS_CONFORMES_____load_point_valide__plutot_que__load_point_modulo) \ ,loadIJ_point_modulo \ ,loadIJ_point_modulo \ /* ATTENTION : 'loadIJ_point_valide(...)' n'existe pas a la date du 20120604154933... */ \ ,imageA \ ,new_X_effectif \ ,new_Y_effectif \ ) \ ,imageR \ ,old_X_effectif \ ,old_Y_effectif \ ); \ Eblock \ /* Procedure de load puis de store "complexe" (introduite le 20120521150042). */ DEFV(Common,DEFV(Int,ZINT(TRANSFORMATION_CONFORME_DANS_LE_PLAN_IMAGE_____Xmin_reference,k___Xmin))); DEFV(Common,DEFV(Int,ZINT(TRANSFORMATION_CONFORME_DANS_LE_PLAN_IMAGE_____Xmax_reference,k___Xmax))); DEFV(Common,DEFV(Int,ZINT(TRANSFORMATION_CONFORME_DANS_LE_PLAN_IMAGE_____Ymin_reference,k___Ymin))); DEFV(Common,DEFV(Int,ZINT(TRANSFORMATION_CONFORME_DANS_LE_PLAN_IMAGE_____Ymax_reference,k___Ymax))); /* Definition d'un format d'image dit "reference" utilise pour calculer un facteur */ /* homothetique multiplicatif (introduit le 20100408174856). */ /* */ /* ATTENTION : je note le 20111014104900 que le format de reference est le format 'Std' */ /* et non pas le format 'Pal'... */ /* */ /* ATTENTION : je note le 20170322102617 l'existence de six nouvelles variables dans */ /* 'v $xiii/Images$STR _reference.k___'. Mais celles-ci ne peuvent remplacer les quatre */ /* qui sont definies ci-dessus et ce pour de possibles problemes de compatibilite (au cas */ /* ou, par exemple, les variables 'v $xiii/Images$STR _reference.k___' passaient du format */ /* 'Std' au format 'Pal'...). */ DEFV(Common,DEFV(Logical,ZINT(TRANSFORMATION_CONFORME_DANS_LE_PLAN_IMAGE_____facteur_multiplicatif_homothetique,FAUX))); /* Introduit le 20100408174856, la valeur par defaut garantissant la compatibilite */ /* anterieure... */ DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LE_PLAN_COMPLEXE_____A_facteur_homothetie_X,FU))); DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LE_PLAN_COMPLEXE_____A_facteur_homothetie_Y,FU))); /* Parametres destines uniquement a 'TRANSFORMATION_CONFORME_DANS_LE_PLAN_COMPLEXE(...)' */ /* permettant de faire une homothetie sur le domaine de calcul (via 'point_courant') et */ /* introduits le 20120527181002... */ DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LES_PLANS_____R_facteur_homothetie_X,FU))); DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LES_PLANS_____R_facteur_homothetie_Y,FU))); /* Parametres destines a faire une homothetie (via 'point_manoeuvre') introduits le */ /* 20120527184309... */ #define A_translation__dX_____ \ AXPB(TRANSFORMATION_CONFORME_DANS_LES_PLANS_____A_translation_AX \ ,ASI1(A_translation,dx) \ ,TRANSFORMATION_CONFORME_DANS_LES_PLANS_____A_translation_BX \ ) #define A_translation__dY_____ \ AXPB(TRANSFORMATION_CONFORME_DANS_LES_PLANS_____A_translation_AY \ ,ASI1(A_translation,dy) \ ,TRANSFORMATION_CONFORME_DANS_LES_PLANS_____A_translation_BY \ ) DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LES_PLANS_____A_translation_AX,FU))); DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LES_PLANS_____A_translation_BX,FZERO))); DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LES_PLANS_____A_translation_AY,FU))); DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LES_PLANS_____A_translation_BY,FZERO))); #define R_translation__dX_____ \ AXPB(TRANSFORMATION_CONFORME_DANS_LES_PLANS_____R_translation_AX \ ,ASI1(R_translation,dx) \ ,TRANSFORMATION_CONFORME_DANS_LES_PLANS_____R_translation_BX \ ) #define R_translation__dY_____ \ AXPB(TRANSFORMATION_CONFORME_DANS_LES_PLANS_____R_translation_AY \ ,ASI1(R_translation,dy) \ ,TRANSFORMATION_CONFORME_DANS_LES_PLANS_____R_translation_BY \ ) DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LES_PLANS_____R_translation_AX,FU))); DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LES_PLANS_____R_translation_BX,FZERO))); DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LES_PLANS_____R_translation_AY,FU))); DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LES_PLANS_____R_translation_BY,FZERO))); /* Definition des facteurs de corrections des translations 'A' et 'R' (ceci fut introduit */ /* le 20111228152543... */ #define EDITION_DES_COORDONNEES_D_UNE_TRANSFORMATION_CONFORME \ Bblock \ Test(IL_FAUT(TRANSFORMATIONS_CONFORMES_____editer_les_coordonnees_de_load_et_de_store)) \ Bblock \ CALS(FPrme0("PlanComplexe : ")); \ \ CAL3(Prme2("{%+.^^^,%+.^^^}" \ ,Reelle(point_manoeuvre) \ ,Imaginaire(point_manoeuvre) \ ) \ ); \ \ Test(IL_NE_FAUT_PAS(TRANSFORMATIONS_CONFORMES_____permuter_les_coordonnees_de_load_et_de_store)) \ Bblock \ CALS(FPrme0(" --> ")); \ Eblock \ ATes \ Bblock \ CALS(FPrme0(" <-- ")); \ Eblock \ ETes \ \ CAL3(Prme2("{%+.^^^,%+.^^^}" \ ,Reelle(point_courant) \ ,Imaginaire(point_courant) \ ) \ ); \ \ CALS(Fsauts_de_lignes(UN)); \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock \ /* Edition eventuelle des coordonnees et de leur transformation conforme afin d'en verifier */ \ /* le bon fonctionnement (introduite le 20120604114352...) */ #define TRANSFORMATION_CONFORME_DANS_LE_PLAN_IMAGE(variables_specifiques,condition,transformation,action_de_rangement,fme) \ /* Procedure generale introduite le 20070116092344... */ \ /* */ \ /* L'argument 'fme' ("Facteur_Multiplicatif_Effectif") a ete introduit le 20100408174856... */ \ Bblock \ DEFV(Float,INIT(facteur_multiplicatif_effectif,facteur_multiplicatif)); \ /* Facteur multiplicatif effectif introduit le 20100408173148 afin de rendre ce facteur */ \ /* "homothetique" ce qui permettra alors d'obtenir le meme resultat quel que soit la */ \ /* resolution de l'image (par exemple 'Puq' et 'Pqu'...). Ceci n'a evidemment de sens */ \ /* que pour 'TRANSFORMATION_CONFORME_DANS_LE_PLAN_IMAGE(...)' et n'en a pas pour */ \ /* 'TRANSFORMATION_CONFORME_DANS_LE_PLAN_COMPLEXE(...)' puisque les coordonnees {X,Y} */ \ /* sont alors normalisees dans [0,1], cette normalisation etant evidemment independante */ \ /* de resolution de l'image... */ \ \ Test(IL_FAUT(TRANSFORMATION_CONFORME_DANS_LE_PLAN_IMAGE_____facteur_multiplicatif_homothetique)) \ Bblock \ DEFV(Float,INIT(facteur_correctif \ ,DIVI(RACX(FLOT(MUL2(DIMENSION(TRANSFORMATION_CONFORME_DANS_LE_PLAN_IMAGE_____Xmin_reference \ ,TRANSFORMATION_CONFORME_DANS_LE_PLAN_IMAGE_____Xmax_reference \ ) \ ,DIMENSION(TRANSFORMATION_CONFORME_DANS_LE_PLAN_IMAGE_____Ymin_reference \ ,TRANSFORMATION_CONFORME_DANS_LE_PLAN_IMAGE_____Ymax_reference \ ) \ ) \ ) \ ) \ ,RACX(FLOT(dimXY)) \ ) \ ) \ ); \ EGAL(facteur_multiplicatif_effectif,fme); \ /* Ainsi, le facteur mutiplicatif est rendu independant de la resolution de l'image par */ \ /* rapport a la resolution dite "reference"... */ \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ \ begin_image \ Bblock \ DEFV(complexe,point_courant); \ /* Point complexe courant. */ \ DEFV(complexe,point_manoeuvre); \ /* Point complexe resultat de la transformation. */ \ BLOC(variables_specifiques); \ /* Variables specifiques eventuellement (introduites le 20070116095630)... */ \ \ Cinitialisation(point_courant \ ,ADD2(FLOT(X) \ ,F__lDENORMALISE_OX(A_translation__dX_____) \ ) \ ,ADD2(FLOT(Y) \ ,F__lDENORMALISE_OY(A_translation__dY_____) \ ) \ ); \ /* Le "point_courant" est le point courant {X,Y} sur le maillage de l'image. */ \ \ Test(condition) \ Bblock \ DEFV(Int,INIT(new_X,UNDEF)); \ /* Nouvelle coordonnee horizontale apres transformation, */ \ DEFV(Int,INIT(new_Y,UNDEF)); \ /* Nouvelle coordonnee verticale apres transformation, */ \ \ BLOC(transformation); \ /* Transformation du nombre complexe courant. */ \ \ EDITION_DES_COORDONNEES_D_UNE_TRANSFORMATION_CONFORME; \ /* Edition eventuelle des coordonnees introduite le 20120604114352... */ \ \ EGAL(new_X \ ,ADD2(VINTE(MUL3(TRANSFORMATION_CONFORME_DANS_LES_PLANS_____R_facteur_homothetie_X \ ,facteur_multiplicatif_effectif \ ,Reelle(point_manoeuvre) \ ) \ ) \ ,_lDENORMALISE_OX(R_translation__dX_____) \ ) \ ); \ EGAL(new_Y \ ,ADD2(VINTE(MUL3(TRANSFORMATION_CONFORME_DANS_LES_PLANS_____R_facteur_homothetie_Y \ ,facteur_multiplicatif_effectif \ ,Imaginaire(point_manoeuvre) \ ) \ ) \ ,_lDENORMALISE_OY(R_translation__dY_____) \ ) \ ); \ /* Calcul des coordonnees transformees dans le plan image. */ \ \ BLOC(action_de_rangement); \ /* Et enfin, deplacement du point courant... */ \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock \ end_image \ Eblock \ /* Definition de la transformation conforme en coordonnees d'ecran [Xmin,Xmax]x[Ymin,Ymax]. */ #define TRANSFORMATION_CONFORME_DANS_LE_PLAN_COMPLEXE(variables_specifiques,condition,transformation,action_de_rangement) \ /* Procedure generale introduite le 20070116092344... */ \ Bblock \ begin_image \ Bblock \ DEFV(Float,INIT(new_X,FLOT__UNDEF)); \ /* Nouvelle coordonnee horizontale apres transformation, */ \ DEFV(Float,INIT(new_Y,FLOT__UNDEF)); \ /* Nouvelle coordonnee verticale apres transformation, */ \ DEFV(complexe,point_courant); \ /* Point complexe courant. */ \ DEFV(complexe,point_manoeuvre); \ /* Point complexe resultat de la transformation. */ \ BLOC(variables_specifiques); \ /* Variables specifiques eventuellement (introduites le 20070116095630)... */ \ \ Cinitialisation(point_courant \ ,AXPB(TRANSFORMATION_CONFORME_DANS_LE_PLAN_COMPLEXE_____A_facteur_homothetie_X \ ,SUPER_cNORMALISE_OX(X) \ ,A_translation__dX_____ \ ) \ ,AXPB(TRANSFORMATION_CONFORME_DANS_LE_PLAN_COMPLEXE_____A_facteur_homothetie_Y \ ,SUPER_cNORMALISE_OY(Y) \ ,A_translation__dY_____ \ ) \ ); \ /* Le "point_courant" est le point courant {X,Y} ramene dans le plan Complexe. */ \ /* */ \ /* Le passage de '_____cNORMALISE_O?(...)' a 'SUPER_cNORMALISE_O?(...)' a eu lieu */ \ /* le 20050912125230... */ \ \ Test(condition) \ Bblock \ BLOC(transformation); \ /* Transformation du nombre complexe courant. */ \ \ EDITION_DES_COORDONNEES_D_UNE_TRANSFORMATION_CONFORME; \ /* Edition eventuelle des coordonnees introduite le 20120604114352... */ \ \ EGAL(new_X \ ,ADD2(MUL3(TRANSFORMATION_CONFORME_DANS_LES_PLANS_____R_facteur_homothetie_X \ ,facteur_multiplicatif \ ,Reelle(point_manoeuvre) \ ) \ ,R_translation__dX_____ \ ) \ ); \ EGAL(new_Y \ ,ADD2(MUL3(TRANSFORMATION_CONFORME_DANS_LES_PLANS_____R_facteur_homothetie_Y \ ,facteur_multiplicatif \ ,Imaginaire(point_manoeuvre) \ ) \ ,R_translation__dY_____ \ ) \ ); \ /* Calcul des coordonnees transformees dans le plan Complexe. */ \ \ BLOC(action_de_rangement); \ /* Et enfin, deplacement du point courant... */ \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock \ end_image \ Eblock \ /* Definition de la transformation conforme en coordonnees d'ecran [Xmin,Xmax]x[Ymin,Ymax]. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( Z * * 2 ) : */ /* */ /* */ /* *** ** ********* *** ********* ** *** */ /* *** ** *************** ** *** */ /* *** *** ** *** ** *** ** */ /* * *** *** *** *** *** */ /* *** *** *** *** *** */ /* *** *** * * */ /* **** **** **** **** **** */ /* * ***** ***** ***** ***** ** ** */ /* ****** ***** ***** ***** ***** */ /* *** ****** ****** ****** ** */ /* * * ******** ******* ******** * * */ /* ** *********************** ** */ /* *** ********************* *** */ /* ** ******************* ** */ /* ** ***************** * **************** ** */ /* **************************************************************** */ /* ** **************** * ***************** ** */ /* ** ******************* ** */ /* *** ********************* *** */ /* ** *********************** ** */ /* * * ******** ******* ******** * * */ /* *** ****** ****** ****** ** */ /* ****** ***** ***** ***** ***** */ /* * ** ** ***** ***** ***** ***** */ /* **** **** **** **** **** */ /* * * *** *** */ /* *** *** *** *** *** */ /* * *** *** *** *** *** */ /* *** *** ** *** ** *** ** */ /* *** ** *************** ** *** */ /* *** ** ********* *** ********* ** *** */ /* ** * * ****** *** ****** *** * */ /* */ /* */ /* .+**+**+.. ...+********+++++**++++++********+... ..+**+**+ */ /* ..+***+... ..+**+...+++*************+++...+**+.. ...+***+. */ /* +**++***+......+**+...........+***+...........+**+......+***++** */ /* ++....+***+..++**+... ...+***+... ...+**++..+***+....+ */ /* .. ...+***+***+... ...+***+... ...+***+***+... . */ /* .. ...++***++..... ...++***+.... .....++* *+.... . */ /* +......++***+***++...........++***++...........++***+***++...... */ /* *+..++***++..++****++........++***++........++****++..++* *++..+ */ /* ******++.......++****+++....++*****++....+++****++.......++***** */ /* ***+...... ....++*****+++++++*****+++++++*****++.... ......+** */ /* .+ *+.. ....++******+++******++++******++.... ..+* + */ /* .+**+... ....++***********************++.... ...+**+ */ /* ..+**+.. .........+++*******************+++......... ..+**+. */ /* ..+**+...........+++++++*****************++++++............+**+. */ /* ..+**++++++++++++************** * *************+++++++++++++**+. */ /* **************************************************************** */ /* ..+**+++++++++++++************* * **************++++++++++++**+. */ /* ..+**+............++++++*****************+++++++...........+**+. */ /* ..+**+.. .........+++*******************+++......... ..+**+. */ /* .+**+... ....++***********************++.... ...+**+ */ /* .+ *+.. ....++******++++******+++******++.... ..+* + */ /* ***+...... ....++*****+++++++*****+++++++*****++.... ......+** */ /* ******++.......++****+++....++*****++....+++****++.......++***** */ /* *+..++* *++..++****++........++***++........++****++..++***++..+ */ /* +......++***+***++...........++***++...........++***+***++...... */ /* .. ....+* *++..... ....+***++... .....++***++... . */ /* .. ...+***+***+... ...+***+... ...+***+***+... . */ /* ++....+***+..++**+... ...+***+... ...+**++..+***+....+ */ /* +**++***+......+**+...........+***+...........+**+......+***++** */ /* ..+***+... ..+**+...+++*************+++...+**+.. ...+***+. */ /* .+**+**+.. ...+********++++++**+++++********+... ..+**+**+ */ /* *+....+ +.....++*****+.........+*+.........+*****++.....+*+....+ */ /* */ /* */ /*************************************************************************************************************************************/ #define Z_AU_CARRE_DANS_PLANS_IMAGE_OU_COMPLEXE \ Bblock \ TRANSFORMATION__Z_AU_CARRE(point_manoeuvre,point_courant); \ Eblock \ /* Definition generale de la transformation 'z' au carre dans les plans image ou */ \ /* complexe (introduite le 20070118102622). */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( Z * * 2 ) */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ #define Z_AU_CARRE_DANS_LE_PLAN_IMAGE(action_de_rangement) \ Bblock \ TRANSFORMATION_CONFORME_DANS_LE_PLAN_IMAGE(BLOC(VIDE;) \ ,TOUJOURS_VRAI \ ,BLOC(Z_AU_CARRE_DANS_PLANS_IMAGE_OU_COMPLEXE;) \ ,BLOC(action_de_rangement) \ ,MUL2(facteur_multiplicatif,NEUT(facteur_correctif)) \ ); \ Eblock \ /* Definition de la transformation conforme en coordonnees d'ecran [Xmin,Xmax]x[Ymin,Ymax]. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( Z * * 2 ) */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ BFonctionP DEFV(Common,DEFV(FonctionP,POINTERp(Iz_au_carre_dans_le_plan_image(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) DEFV(Argument,DEFV(image,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 0.01 donne de bons resultats). */ DEFV(Argument,DEFV(image,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Z_AU_CARRE_DANS_LE_PLAN_IMAGE(BLOC(store_point_load_point(imageA ,new_X ,new_Y ,imageR ,X ,Y ); ) ); RETI(imageR); Eblock EFonctionP /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( Z * * 2 ) */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ BFonctionF DEFV(Common,DEFV(FonctionF,POINTERF(IFz_au_carre_dans_le_plan_image(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) /* Fonction introduite le 20041225171429. */ DEFV(Argument,DEFV(imageF,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 0.01 donne de bons resultats). */ DEFV(Argument,DEFV(imageF,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Z_AU_CARRE_DANS_LE_PLAN_IMAGE(BLOC(storeF_point_loadF_point(imageA ,new_X ,new_Y ,imageR ,X ,Y ); ) ); RETIF(imageR); Eblock EFonctionF /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( Z * * 2 ) */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ BFonctionJ DEFV(Common,DEFV(FonctionJ,POINTERJ(IJz_au_carre_dans_le_plan_image(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) DEFV(Argument,DEFV(imageJ,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 0.01 donne de bons resultats). */ DEFV(Argument,DEFV(imageJ,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Z_AU_CARRE_DANS_LE_PLAN_IMAGE(BLOC(storeJ_point_loadJ_point(imageA ,new_X ,new_Y ,imageR ,X ,Y ); ) ); RETIJ(imageR); Eblock EFonctionJ #undef Z_AU_CARRE_DANS_LE_PLAN_IMAGE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( Z * * 2 ) */ /* E N C O O R D O N N E E S D U P L A N C O M P L E X E [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ #define Z_AU_CARRE_DANS_LE_PLAN_COMPLEXE(action_de_rangement) \ Bblock \ TRANSFORMATION_CONFORME_DANS_LE_PLAN_COMPLEXE(BLOC(VIDE;) \ ,TOUJOURS_VRAI \ ,BLOC(Z_AU_CARRE_DANS_PLANS_IMAGE_OU_COMPLEXE;) \ ,BLOC(action_de_rangement) \ ); \ Eblock \ /* Definition de la transformation conforme en coordonnees d'ecran [Xmin,Xmax]x[Ymin,Ymax]. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( Z * * 2 ) */ /* E N C O O R D O N N E E S D U P L A N C O M P L E X E [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ BFonctionP DEFV(Common,DEFV(FonctionP,POINTERp(Iz_au_carre_dans_le_plan_complexe(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) DEFV(Argument,DEFV(image,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 5.0 donne de bons resultats) ; voir */ /* a ce propos les commentaires de 'v $xci/z_carre.01$K'... */ DEFV(Argument,DEFV(image,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Z_AU_CARRE_DANS_LE_PLAN_COMPLEXE(BLOC(store_point_load_point(imageA ,fV_cDENORMALISE_OX(new_X) ,fV_cDENORMALISE_OY(new_Y) ,imageR ,X ,Y ); ) ); RETI(imageR); Eblock EFonctionP /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( Z * * 2 ) */ /* E N C O O R D O N N E E S D U P L A N C O M P L E X E [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ BFonctionF DEFV(Common,DEFV(FonctionF,POINTERF(IFz_au_carre_dans_le_plan_complexe(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) /* Fonction introduite le 20041225171429. */ DEFV(Argument,DEFV(imageF,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 5.0 donne de bons resultats) ; voir */ /* a ce propos les commentaires de 'v $xci/z_carre.01$K'... */ DEFV(Argument,DEFV(imageF,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Z_AU_CARRE_DANS_LE_PLAN_COMPLEXE(BLOC(storeF_point_loadF_point(imageA ,fV_cDENORMALISE_OX(new_X) ,fV_cDENORMALISE_OY(new_Y) ,imageR ,X ,Y ); ) ); RETIF(imageR); Eblock EFonctionF /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( Z * * 2 ) */ /* E N C O O R D O N N E E S D U P L A N C O M P L E X E [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ BFonctionJ DEFV(Common,DEFV(FonctionJ,POINTERJ(IJz_au_carre_dans_le_plan_complexe(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) DEFV(Argument,DEFV(imageJ,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 5.0 donne de bons resultats) ; voir */ /* a ce propos les commentaires de 'v $xci/z_carre.01$K'... */ DEFV(Argument,DEFV(imageJ,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Z_AU_CARRE_DANS_LE_PLAN_COMPLEXE(BLOC(storeJ_point_loadJ_point(imageA ,fV_cDENORMALISE_OX(new_X) ,fV_cDENORMALISE_OY(new_Y) ,imageR ,X ,Y ); ) ); RETIJ(imageR); Eblock EFonctionJ #undef Z_AU_CARRE_DANS_LE_PLAN_COMPLEXE #undef Z_AU_CARRE_DANS_PLANS_IMAGE_OU_COMPLEXE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( 1 / Z ) : */ /* */ /* */ /* *********** */ /* ********* */ /* ******** */ /* ******* */ /* ***** */ /* ***** */ /* *** */ /* ********* */ /* **** *** **** */ /* ** * ** */ /* ** * ** */ /* ****** *** ****** */ /* * *** * * * * * *** */ /* ******* *** * * *** * * *** ****** */ /* ************** ** * * * * * ** ************* */ /* ******************************** ******************************* */ /* ************** ** * * * * * ** ************* */ /* ****** *** * * *** * * *** ***** */ /* *** * * * * * *** */ /* ****** *** ****** */ /* ** * ** */ /* ** * ** */ /* **** *** **** */ /* ********* */ /* *** */ /* ***** */ /* ***** */ /* ******* */ /* ******** */ /* ********* */ /* *********** */ /* ************ */ /* */ /* */ /* .......................+++++*********+++++...................... */ /* ........................+++++*******++++........................ */ /* ..........................+++*******+++......................... */ /* ...........................+++*****+++............... ........ */ /* ......... ..........++*****++.......... ........ */ /* ......... ......++****++....... ........ */ /* ......... ......++***++...... ........ */ /* .......... ....+++*******+++.... ......... */ /* ........... ....+****++*++****+.... .......... */ /* ............ ...+**+...+*+...+**+... ........... */ /* ++........... ........+**+. ..*.. .+**+........ ...........+ */ /* +++++..............++******+...+*+...+******++..............++++ */ /* ++++++++........++***++.*+...*. * .*...+*..+***++........+++++++ */ /* ****+++++++++..++**+.. .*.+*+++*+++*+.*. ..+**++..+++++++++*** */ /* *************+++**+.... .*.*+ ++*++ +*.*. ....+**+++************ */ /* ******************************** ******************************* */ /* ************++++**+.... .*.++ ++*++ ++.*. ....+**++++*********** */ /* ****++++++++...++**+.. .*.+*+++*+++*+.*. ..+**++...++++++++*** */ /* ++++++++........++***++.*+...*. * .*...+*..+***++........+++++++ */ /* ++++...............++******+...+*+...+******++...............+++ */ /* +............ ........+**.. ..*.. ..**+........ ............ */ /* ............ ...+**+...+*+...+**+... ........... */ /* ........... ....+****++*++****+.... .......... */ /* .......... ....+++*******+++.... ......... */ /* ......... ......++***++...... ........ */ /* ......... ......++****++....... ........ */ /* ........ ..........++*****++.......... ....... */ /* ...........................+++*****+++............... ....... */ /* ..........................+++*******+++......................... */ /* ........................+++++*******++++........................ */ /* .......................+++++*********+++++...................... */ /* .....................++++++**********++++++..................... */ /* */ /* */ /*************************************************************************************************************************************/ #define UN_SUR_Z_DANS_PLANS_IMAGE_OU_COMPLEXE \ Bblock \ TRANSFORMATION__UN_SUR_Z(point_manoeuvre,point_courant); \ /* Avant le 20070115102032, le 'Cquotient(...)' n'etait pas present et l'inverse du */ \ /* nombre courant etait calcule "a la main" via : */ \ /* */ \ /* Cconjugaison(point_manoeuvre,point_courant); */ \ /* EGAL(module_au_carre,Cmodule2(point_manoeuvre)); */ \ /* */ \ /* et (ci-apres pour le calcul de {new_X,new_Y}) : */ \ /* */ \ /* SCAL(Reelle(point_manoeuvre) */ \ /* ,module_au_carre */ \ /* ,facteur_multiplicatif */ \ /* ) */ \ /* */ \ /* SCAL(Imaginaire(point_manoeuvre) */ \ /* ,module_au_carre */ \ /* ,facteur_multiplicatif */ \ /* ) */ \ /* */ \ /* L'utilisation (logique...) de 'Cquotient(...)' a introduit une legere incompatibilite */ \ /* anterieure visible, par exemple, sur quelques points d'un champ gaussien au format 'Pal'. */ \ Eblock \ /* Definition generale de la transformation un sur 'z' dans les plans image ou */ \ /* complexe (introduite le 20070118103318). */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( 1 / Z ) */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ #define UN_SUR_Z_DANS_LE_PLAN_IMAGE(action_de_rangement) \ Bblock \ TRANSFORMATION_CONFORME_DANS_LE_PLAN_IMAGE(BLOC(VIDE;) \ ,IZNE(Cmodule2(point_courant)) \ ,BLOC(UN_SUR_Z_DANS_PLANS_IMAGE_OU_COMPLEXE;) \ ,BLOC(action_de_rangement) \ ,DIVI(facteur_multiplicatif,EXP2(facteur_correctif)) \ ); \ Eblock \ /* Definition de la transformation conforme en coordonnees d'ecran [Xmin,Xmax]x[Ymin,Ymax]. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( 1 / Z ) */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ BFonctionP DEFV(Common,DEFV(FonctionP,POINTERp(Iun_sur_z_dans_le_plan_image(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) DEFV(Argument,DEFV(image,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 64000.0 donne de bons resultats). */ DEFV(Argument,DEFV(image,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ CALS(Inoir(imageR)); /* L'image Resultat est nettoye ici (contrairement a la transformation z**2), */ /* a cause du test de nullite du carre du module du nombre complexe courant ; */ /* dans ce cas aucun point n'est marque... */ UN_SUR_Z_DANS_LE_PLAN_IMAGE(BLOC(store_point_load_point(imageA ,new_X ,new_Y ,imageR ,X ,Y ); ) ); RETI(imageR); Eblock EFonctionP /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( 1 / Z ) */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ BFonctionF DEFV(Common,DEFV(FonctionF,POINTERF(IFun_sur_z_dans_le_plan_image(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) /* Fonction introduite le 20041225171429. */ DEFV(Argument,DEFV(imageF,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 64000.0 donne de bons resultats). */ DEFV(Argument,DEFV(imageF,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ CALS(IFinitialisation(imageR,FZERO)); /* L'image Resultat est nettoye ici (contrairement a la transformation z**2), */ /* a cause du test de nullite du carre du module du nombre complexe courant ; */ /* dans ce cas aucun point n'est marque... */ UN_SUR_Z_DANS_LE_PLAN_IMAGE(BLOC(storeF_point_loadF_point(imageA ,new_X ,new_Y ,imageR ,X ,Y ); ) ); RETIF(imageR); Eblock EFonctionF /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( 1 / Z ) */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ BFonctionJ DEFV(Common,DEFV(FonctionJ,POINTERJ(IJun_sur_z_dans_le_plan_image(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) DEFV(Argument,DEFV(imageJ,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 64000.0 donne de bons resultats). */ DEFV(Argument,DEFV(imageJ,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock DEFV(complexe,valeur_initiale); /* Valeur initiale de l'image Resultat. */ /*..............................................................................................................................*/ Cinitialisation(valeur_initiale,FZERO,FZERO); CALS(IJinitialisation(imageR,ADRESSE(valeur_initiale))); /* L'image Resultat est nettoye ici (contrairement a la transformation z**2), */ /* a cause du test de nullite du carre du module du nombre complexe courant ; */ /* dans ce cas aucun point n'est marque... */ UN_SUR_Z_DANS_LE_PLAN_IMAGE(BLOC(storeJ_point_loadJ_point(imageA ,new_X ,new_Y ,imageR ,X ,Y ); ) ); RETIJ(imageR); Eblock EFonctionJ #undef UN_SUR_Z_DANS_LE_PLAN_IMAGE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( 1 / Z ) */ /* E N C O O R D O N N E E S D U P L A N C O M P L E X E [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ #define UN_SUR_Z_DANS_LE_PLAN_COMPLEXE(action_de_rangement) \ Bblock \ TRANSFORMATION_CONFORME_DANS_LE_PLAN_COMPLEXE(BLOC(VIDE;) \ ,IZNE(Cmodule2(point_courant)) \ ,BLOC(UN_SUR_Z_DANS_PLANS_IMAGE_OU_COMPLEXE;) \ ,BLOC(action_de_rangement) \ ); \ Eblock \ /* Definition de la transformation conforme en coordonnees d'ecran [Xmin,Xmax]x[Ymin,Ymax]. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( 1 / Z ) */ /* E N C O O R D O N N E E S D U P L A N C O M P L E X E [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ BFonctionP DEFV(Common,DEFV(FonctionP,POINTERp(Iun_sur_z_dans_le_plan_complexe(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) DEFV(Argument,DEFV(image,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 0.25 donne de bons resultats) ; voir */ /* a ce propos les commentaires de 'v $xci/un_sur_z.01$K'... */ DEFV(Argument,DEFV(image,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ CALS(Inoir(imageR)); /* L'image Resultat est nettoye ici (contrairement a la transformation z**2), */ /* a cause du test de nullite du carre du module du nombre complexe courant ; */ /* dans ce cas aucun point n'est marque... */ UN_SUR_Z_DANS_LE_PLAN_COMPLEXE(BLOC(store_point_load_point(imageA ,fV_cDENORMALISE_OX(new_X) ,fV_cDENORMALISE_OY(new_Y) ,imageR ,X ,Y ); ) ); RETI(imageR); Eblock EFonctionP /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( 1 / Z ) */ /* E N C O O R D O N N E E S D U P L A N C O M P L E X E [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ BFonctionF DEFV(Common,DEFV(FonctionF,POINTERF(IFun_sur_z_dans_le_plan_complexe(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) /* Fonction introduite le 20041225171429. */ DEFV(Argument,DEFV(imageF,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 0.25 donne de bons resultats) ; voir */ /* a ce propos les commentaires de 'v $xci/un_sur_z.01$K'... */ DEFV(Argument,DEFV(imageF,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ CALS(IFinitialisation(imageR,FZERO)); /* L'image Resultat est nettoye ici (contrairement a la transformation z**2), */ /* a cause du test de nullite du carre du module du nombre complexe courant ; */ /* dans ce cas aucun point n'est marque... */ UN_SUR_Z_DANS_LE_PLAN_COMPLEXE(BLOC(storeF_point_loadF_point(imageA ,fV_cDENORMALISE_OX(new_X) ,fV_cDENORMALISE_OY(new_Y) ,imageR ,X ,Y ); ) ); RETIF(imageR); Eblock EFonctionF /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( 1 / Z ) */ /* E N C O O R D O N N E E S D U P L A N C O M P L E X E [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ BFonctionJ DEFV(Common,DEFV(FonctionJ,POINTERJ(IJun_sur_z_dans_le_plan_complexe(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) DEFV(Argument,DEFV(imageJ,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 0.25 donne de bons resultats) ; voir */ /* a ce propos les commentaires de 'v $xci/un_sur_z.01$K'... */ DEFV(Argument,DEFV(imageJ,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock DEFV(complexe,valeur_initiale); /* Valeur initiale de l'image Resultat. */ /*..............................................................................................................................*/ Cinitialisation(valeur_initiale,FZERO,FZERO); CALS(IJinitialisation(imageR,ADRESSE(valeur_initiale))); /* L'image Resultat est nettoye ici (contrairement a la transformation z**2), */ /* a cause du test de nullite du carre du module du nombre complexe courant ; */ /* dans ce cas aucun point n'est marque... */ UN_SUR_Z_DANS_LE_PLAN_COMPLEXE(BLOC(storeJ_point_loadJ_point(imageA ,fV_cDENORMALISE_OX(new_X) ,fV_cDENORMALISE_OY(new_Y) ,imageR ,X ,Y ); ) ); RETIJ(imageR); Eblock EFonctionJ #undef UN_SUR_Z_DANS_LE_PLAN_COMPLEXE #undef UN_SUR_Z_DANS_PLANS_IMAGE_OU_COMPLEXE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E H O M O G R A P H I Q U E */ /* ( O U " T R A N S F O R M A T I O N D E M O B I U S " ) : */ /* */ /* */ /* *********** */ /* ********* */ /* ******** */ /* ******* */ /* ***** */ /* ***** */ /* *** */ /* ********* */ /* **** *** **** */ /* ** * ** */ /* ** * ** */ /* ****** *** ****** */ /* * *** * * * * * *** */ /* ******* *** * * *** * * *** ****** */ /* ************** ** * * * * * ** ************* */ /* ******************************** ******************************* */ /* ************** ** * * * * * ** ************* */ /* ****** *** * * *** * * *** ***** */ /* *** * * * * * *** */ /* ****** *** ****** */ /* ** * ** */ /* ** * ** */ /* **** *** **** */ /* ********* */ /* *** */ /* ***** */ /* ***** */ /* ******* */ /* ******** */ /* ********* */ /* *********** */ /* ************ */ /* */ /* */ /* .......................+++++*********+++++...................... */ /* ........................+++++*******++++........................ */ /* ..........................+++*******+++......................... */ /* ...........................+++*****+++............... ........ */ /* ......... ..........++*****++.......... ........ */ /* ......... ......++****++....... ........ */ /* ......... ......++***++...... ........ */ /* .......... ....+++*******+++.... ......... */ /* ........... ....+****++*++****+.... .......... */ /* ............ ...+**+...+*+...+**+... ........... */ /* ++........... ........+**+. ..*.. .+**+........ ...........+ */ /* +++++..............++******+...+*+...+******++..............++++ */ /* ++++++++........++***++.*+...*. * .*...+*..+***++........+++++++ */ /* ****+++++++++..++**+.. .*.+*+++*+++*+.*. ..+**++..+++++++++*** */ /* *************+++**+.... .*.*+ ++*++ +*.*. ....+**+++************ */ /* ******************************** ******************************* */ /* ************++++**+.... .*.++ ++*++ ++.*. ....+**++++*********** */ /* ****++++++++...++**+.. .*.+*+++*+++*+.*. ..+**++...++++++++*** */ /* ++++++++........++***++.*+...*. * .*...+*..+***++........+++++++ */ /* ++++...............++******+...+*+...+******++...............+++ */ /* +............ ........+**.. ..*.. ..**+........ ............ */ /* ............ ...+**+...+*+...+**+... ........... */ /* ........... ....+****++*++****+.... .......... */ /* .......... ....+++*******+++.... ......... */ /* ......... ......++***++...... ........ */ /* ......... ......++****++....... ........ */ /* ........ ..........++*****++.......... ....... */ /* ...........................+++*****+++............... ....... */ /* ..........................+++*******+++......................... */ /* ........................+++++*******++++........................ */ /* .......................+++++*********+++++...................... */ /* .....................++++++**********++++++..................... */ /* */ /* (initialisee ici telle qu'elle soit identique a l'inversion) */ /* */ /* */ /*************************************************************************************************************************************/ #define Z_HOMOGRAPHIQUE_DANS_PLANS_IMAGE_OU_COMPLEXE \ Bblock \ TRANSFORMATION__Z_HOMOGRAPHIQUE(point_manoeuvre,point_courant,nombre_A,nombre_B,nombre_C,nombre_D,INDIRECT); \ /* Calcul de : */ \ /* */ \ /* A.z + B */ \ /* --------- */ \ /* C.z + D */ \ /* */ \ Eblock \ /* Definition generale de la transformation homographique dans les plans image ou */ \ /* complexe (introduite le 20070118100909). */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E H O M O G R A P H I Q U E */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ #define Z_HOMOGRAPHIQUE_DANS_LE_PLAN_IMAGE(action_de_rangement) \ Bblock \ TRANSFORMATION_CONFORME_DANS_LE_PLAN_IMAGE(BLOC(DEFV(complexe,point_manoeuvre_A); \ DEFV(complexe,point_manoeuvre_B); \ DEFV(complexe,point_manoeuvre_C); \ DEFV(complexe,point_manoeuvre_D); \ /* Nombres complexes intermediaires... */ \ ) \ ,TOUJOURS_VRAI \ ,BLOC(Z_HOMOGRAPHIQUE_DANS_PLANS_IMAGE_OU_COMPLEXE;) \ ,BLOC(action_de_rangement) \ ,NEUT(facteur_multiplicatif) \ ); \ Eblock \ /* Definition de la transformation conforme en coordonnees d'ecran [Xmin,Xmax]x[Ymin,Ymax]. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E H O M O G R A P H I Q U E */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ BFonctionP DEFV(Common,DEFV(FonctionP,POINTERp(Iz_homographique_dans_le_plan_image(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ,ARGUMENT_POINTERs(nombre_A) ,ARGUMENT_POINTERs(nombre_B) ,ARGUMENT_POINTERs(nombre_C) ,ARGUMENT_POINTERs(nombre_D) ) ) ) ) DEFV(Argument,DEFV(image,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 0.01 donne de bons resultats). */ DEFV(Argument,DEFV(image,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(complexe,POINTERs(nombre_A))); DEFV(Argument,DEFV(complexe,POINTERs(nombre_B))); DEFV(Argument,DEFV(complexe,POINTERs(nombre_C))); DEFV(Argument,DEFV(complexe,POINTERs(nombre_D))); /* Definition des quatre coefficients complexes de la transformation homographique : */ /* */ /* A.z + B */ /* --------- */ /* C.z + D */ /* */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Z_HOMOGRAPHIQUE_DANS_LE_PLAN_IMAGE(BLOC(store_point_load_point(imageA ,new_X ,new_Y ,imageR ,X ,Y ); ) ); RETI(imageR); Eblock EFonctionP /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E H O M O G R A P H I Q U E */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ BFonctionF DEFV(Common,DEFV(FonctionF,POINTERF(IFz_homographique_dans_le_plan_image(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ,ARGUMENT_POINTERs(nombre_A) ,ARGUMENT_POINTERs(nombre_B) ,ARGUMENT_POINTERs(nombre_C) ,ARGUMENT_POINTERs(nombre_D) ) ) ) ) /* Fonction introduite le 20041228084443. */ DEFV(Argument,DEFV(imageF,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 0.01 donne de bons resultats). */ DEFV(Argument,DEFV(imageF,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(complexe,POINTERs(nombre_A))); DEFV(Argument,DEFV(complexe,POINTERs(nombre_B))); DEFV(Argument,DEFV(complexe,POINTERs(nombre_C))); DEFV(Argument,DEFV(complexe,POINTERs(nombre_D))); /* Definition des quatre coefficients complexes de la transformation homographique : */ /* */ /* A.z + B */ /* --------- */ /* C.z + D */ /* */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Z_HOMOGRAPHIQUE_DANS_LE_PLAN_IMAGE(BLOC(storeF_point_loadF_point(imageA ,new_X ,new_Y ,imageR ,X ,Y ); ) ); RETIF(imageR); Eblock EFonctionF /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E H O M O G R A P H I Q U E */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ BFonctionJ DEFV(Common,DEFV(FonctionJ,POINTERJ(IJz_homographique_dans_le_plan_image(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ,ARGUMENT_POINTERs(nombre_A) ,ARGUMENT_POINTERs(nombre_B) ,ARGUMENT_POINTERs(nombre_C) ,ARGUMENT_POINTERs(nombre_D) ) ) ) ) DEFV(Argument,DEFV(imageJ,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 0.01 donne de bons resultats). */ DEFV(Argument,DEFV(imageJ,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(complexe,POINTERs(nombre_A))); DEFV(Argument,DEFV(complexe,POINTERs(nombre_B))); DEFV(Argument,DEFV(complexe,POINTERs(nombre_C))); DEFV(Argument,DEFV(complexe,POINTERs(nombre_D))); /* Definition des quatre coefficients complexes de la transformation homographique : */ /* */ /* A.z + B */ /* --------- */ /* C.z + D */ /* */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Z_HOMOGRAPHIQUE_DANS_LE_PLAN_IMAGE(BLOC(storeJ_point_loadJ_point(imageA ,new_X ,new_Y ,imageR ,X ,Y ); ) ); RETIJ(imageR); Eblock EFonctionJ #undef Z_HOMOGRAPHIQUE_DANS_LE_PLAN_IMAGE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E H O M O G R A P H I Q U E */ /* E N C O O R D O N N E E S D U P L A N C O M P L E X E [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ #define Z_HOMOGRAPHIQUE_DANS_LE_PLAN_COMPLEXE(action_de_rangement) \ Bblock \ TRANSFORMATION_CONFORME_DANS_LE_PLAN_COMPLEXE(BLOC(DEFV(complexe,point_manoeuvre_A); \ DEFV(complexe,point_manoeuvre_B); \ DEFV(complexe,point_manoeuvre_C); \ DEFV(complexe,point_manoeuvre_D); \ /* Nombres complexes intermediaires... */ \ ) \ ,TOUJOURS_VRAI \ ,BLOC(Z_HOMOGRAPHIQUE_DANS_PLANS_IMAGE_OU_COMPLEXE;) \ ,BLOC(action_de_rangement) \ ); \ Eblock \ /* Definition de la transformation conforme en coordonnees d'ecran [Xmin,Xmax]x[Ymin,Ymax]. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E H O M O G R A P H I Q U E */ /* E N C O O R D O N N E E S D U P L A N C O M P L E X E [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ BFonctionP DEFV(Common,DEFV(FonctionP,POINTERp(Iz_homographique_dans_le_plan_complexe(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ,ARGUMENT_POINTERs(nombre_A) ,ARGUMENT_POINTERs(nombre_B) ,ARGUMENT_POINTERs(nombre_C) ,ARGUMENT_POINTERs(nombre_D) ) ) ) ) DEFV(Argument,DEFV(image,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 5.0 donne de bons resultats) ; voir */ /* a ce propos les commentaires de 'v $xci/z_homogra.01$K'... */ DEFV(Argument,DEFV(image,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(complexe,POINTERs(nombre_A))); DEFV(Argument,DEFV(complexe,POINTERs(nombre_B))); DEFV(Argument,DEFV(complexe,POINTERs(nombre_C))); DEFV(Argument,DEFV(complexe,POINTERs(nombre_D))); /* Definition des quatre coefficients complexes de la transformation homographique : */ /* */ /* A.z + B */ /* --------- */ /* C.z + D */ /* */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Z_HOMOGRAPHIQUE_DANS_LE_PLAN_COMPLEXE(BLOC(store_point_load_point(imageA ,fV_cDENORMALISE_OX(new_X) ,fV_cDENORMALISE_OY(new_Y) ,imageR ,X ,Y ); ) ); RETI(imageR); Eblock EFonctionP /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E H O M O G R A P H I Q U E */ /* E N C O O R D O N N E E S D U P L A N C O M P L E X E [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ BFonctionF DEFV(Common,DEFV(FonctionF,POINTERF(IFz_homographique_dans_le_plan_complexe(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ,ARGUMENT_POINTERs(nombre_A) ,ARGUMENT_POINTERs(nombre_B) ,ARGUMENT_POINTERs(nombre_C) ,ARGUMENT_POINTERs(nombre_D) ) ) ) ) /* Fonction introduite le 20041228084443. */ DEFV(Argument,DEFV(imageF,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 5.0 donne de bons resultats) ; voir */ /* a ce propos les commentaires de 'v $xci/z_homogra.01$K'... */ DEFV(Argument,DEFV(imageF,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(complexe,POINTERs(nombre_A))); DEFV(Argument,DEFV(complexe,POINTERs(nombre_B))); DEFV(Argument,DEFV(complexe,POINTERs(nombre_C))); DEFV(Argument,DEFV(complexe,POINTERs(nombre_D))); /* Definition des quatre coefficients complexes de la transformation homographique : */ /* */ /* A.z + B */ /* --------- */ /* C.z + D */ /* */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Z_HOMOGRAPHIQUE_DANS_LE_PLAN_COMPLEXE(BLOC(storeF_point_loadF_point(imageA ,fV_cDENORMALISE_OX(new_X) ,fV_cDENORMALISE_OY(new_Y) ,imageR ,X ,Y ); ) ); RETIF(imageR); Eblock EFonctionF /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E H O M O G R A P H I Q U E */ /* E N C O O R D O N N E E S D U P L A N C O M P L E X E [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ BFonctionJ DEFV(Common,DEFV(FonctionJ,POINTERJ(IJz_homographique_dans_le_plan_complexe(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ,ARGUMENT_POINTERs(nombre_A) ,ARGUMENT_POINTERs(nombre_B) ,ARGUMENT_POINTERs(nombre_C) ,ARGUMENT_POINTERs(nombre_D) ) ) ) ) DEFV(Argument,DEFV(imageJ,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 5.0 donne de bons resultats) ; voir */ /* a ce propos les commentaires de 'v $xci/z_homogra.01$K'... */ DEFV(Argument,DEFV(imageJ,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(complexe,POINTERs(nombre_A))); DEFV(Argument,DEFV(complexe,POINTERs(nombre_B))); DEFV(Argument,DEFV(complexe,POINTERs(nombre_C))); DEFV(Argument,DEFV(complexe,POINTERs(nombre_D))); /* Definition des quatre coefficients complexes de la transformation homographique : */ /* */ /* A.z + B */ /* --------- */ /* C.z + D */ /* */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Z_HOMOGRAPHIQUE_DANS_LE_PLAN_COMPLEXE(BLOC(storeJ_point_loadJ_point(imageA ,fV_cDENORMALISE_OX(new_X) ,fV_cDENORMALISE_OY(new_Y) ,imageR ,X ,Y ); ) ); RETIJ(imageR); Eblock EFonctionJ #undef Z_HOMOGRAPHIQUE_DANS_LE_PLAN_COMPLEXE #undef Z_HOMOGRAPHIQUE_DANS_PLANS_IMAGE_OU_COMPLEXE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N H Y P E R B O L I Q U E 1 G E N E R A L I S E E : */ /* */ /*************************************************************************************************************************************/ #define Z_HYPERBOLIQUE_1_DANS_PLANS_IMAGE_OU_COMPLEXE \ Bblock \ DEFV(complexe_etendu,point_courant_etendu); \ DEFV(complexe_etendu,point_manoeuvre_etendu); \ \ Cextension_directe(point_courant_etendu,point_courant); \ \ EGAL(CP_Rho(point_manoeuvre_etendu) \ ,FfABSO(LIN2(NomDeLaFonctionCourante QD@@__ _____ponderation_TAHX \ ,TAHX(AXPB(NomDeLaFonctionCourante QD@@__ _____A_TAHX_du_module \ ,CP_Rho(point_courant_etendu) \ ,NomDeLaFonctionCourante QD@@__ _____B_TAHX_du_module \ ) \ ) \ ,NomDeLaFonctionCourante QD@@__ _____ponderation_SINX \ ,SINX(AXPB(NomDeLaFonctionCourante QD@@__ _____A_SINX_du_module \ ,CP_Rho(point_courant_etendu) \ ,NomDeLaFonctionCourante QD@@__ _____B_SINX_du_module \ ) \ ) \ ,NomDeLaFonctionCourante QD@@__ _____translation_du_module \ ) \ ) \ ); \ /* Par l'usage de 'TAHX(...)', le module de 'point_courant_etendu', quelle que soit sa */ \ /* valeur, est ramene dans [0,1['... */ \ /* */ \ /* On rappelle le 20111229091704 que 'TAHX(...)' atteint tres vite, "a epsilon pres", */ \ /* son maximum (1.0) : */ \ /* */ \ /* TAHX(0.0)=0.000000 */ \ /* TAHX(0.2)=0.197375 */ \ /* TAHX(0.4)=0.379949 */ \ /* TAHX(0.6)=0.537050 */ \ /* TAHX(0.8)=0.664037 */ \ /* TAHX(1.0)=0.761594 */ \ /* TAHX(1.2)=0.833655 */ \ /* TAHX(1.4)=0.885352 */ \ /* TAHX(1.6)=0.921669 */ \ /* TAHX(1.8)=0.946806 */ \ /* TAHX(2.0)=0.964028 */ \ /* TAHX(2.2)=0.975743 */ \ /* TAHX(2.4)=0.983675 */ \ /* TAHX(2.6)=0.989027 */ \ /* TAHX(2.8)=0.992632 <-- a 0.01 pres... */ \ /* TAHX(3.0)=0.995055 */ \ /* TAHX(3.2)=0.996682 */ \ /* TAHX(3.4)=0.997775 */ \ /* TAHX(3.6)=0.998508 */ \ /* TAHX(3.8)=0.999000 */ \ /* TAHX(4.0)=0.999329 */ \ /* */ \ /* Le 20111230170628 la fonction 'FfABSO(...)' fut introduite car, en effet, un module */ \ /* ne peut etre que positif ou nul... */ \ EGAL(CP_Theta(point_manoeuvre_etendu),NEUT(CP_Theta(point_courant_etendu))); \ \ Cextension_inverse(point_manoeuvre,point_manoeuvre_etendu); \ Eblock \ /* Definition generale de la transformation 'z' hyperbolique dans les plans image ou */ \ /* complexe (introduite le 20111228111203). */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A T R A N S F O R M A T I O N H Y P E R B O L I Q U E 1 G E N E R A L I S E E */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ #define Z_HYPERBOLIQUE_1_DANS_LE_PLAN_IMAGE(action_de_rangement) \ Bblock \ TRANSFORMATION_CONFORME_DANS_LE_PLAN_IMAGE(BLOC(VIDE;) \ ,TOUJOURS_VRAI \ ,BLOC(Z_HYPERBOLIQUE_1_DANS_PLANS_IMAGE_OU_COMPLEXE;) \ ,BLOC(action_de_rangement) \ ,MUL2(facteur_multiplicatif,NEUT(facteur_correctif)) \ ); \ Eblock \ /* Definition de la transformation en coordonnees d'ecran [Xmin,Xmax]x[Ymin,Ymax]. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N H Y P E R B O L I Q U E 1 G E N E R A L I S E E */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ BFonctionP DEFV(Common,DEFV(Float,SINT(Iz_hyperbolique_1_dans_le_plan_image_____ponderation_TAHX,FU))); DEFV(Common,DEFV(Float,SINT(Iz_hyperbolique_1_dans_le_plan_image_____A_TAHX_du_module,FU))); DEFV(Common,DEFV(Float,SINT(Iz_hyperbolique_1_dans_le_plan_image_____B_TAHX_du_module,FZERO))); DEFV(Common,DEFV(Float,SINT(Iz_hyperbolique_1_dans_le_plan_image_____ponderation_SINX,FZERO))); DEFV(Common,DEFV(Float,SINT(Iz_hyperbolique_1_dans_le_plan_image_____A_SINX_du_module,FU))); DEFV(Common,DEFV(Float,SINT(Iz_hyperbolique_1_dans_le_plan_image_____B_SINX_du_module,FZERO))); DEFV(Common,DEFV(Float,SINT(Iz_hyperbolique_1_dans_le_plan_image_____translation_du_module,FZERO))); /* Parametre introduit le 20111228142846 et completes le 20111229143729... */ DEFV(Common,DEFV(FonctionP,POINTERp(Iz_hyperbolique_1_dans_le_plan_image(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) /* Fonction introduite le 20111228111203. */ DEFV(Argument,DEFV(image,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 0.01 donne de bons resultats). */ DEFV(Argument,DEFV(image,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Z_HYPERBOLIQUE_1_DANS_LE_PLAN_IMAGE(BLOC(store_point_load_point(imageA ,new_X ,new_Y ,imageR ,X ,Y ); ) ); RETI(imageR); Eblock EFonctionP /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N H Y P E R B O L I Q U E 1 G E N E R A L I S E E */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ BFonctionF DEFV(Common,DEFV(Float,SINT(IFz_hyperbolique_1_dans_le_plan_image_____ponderation_TAHX,FU))); DEFV(Common,DEFV(Float,SINT(IFz_hyperbolique_1_dans_le_plan_image_____A_TAHX_du_module,FU))); DEFV(Common,DEFV(Float,SINT(IFz_hyperbolique_1_dans_le_plan_image_____B_TAHX_du_module,FZERO))); DEFV(Common,DEFV(Float,SINT(IFz_hyperbolique_1_dans_le_plan_image_____ponderation_SINX,FZERO))); DEFV(Common,DEFV(Float,SINT(IFz_hyperbolique_1_dans_le_plan_image_____A_SINX_du_module,FU))); DEFV(Common,DEFV(Float,SINT(IFz_hyperbolique_1_dans_le_plan_image_____B_SINX_du_module,FZERO))); DEFV(Common,DEFV(Float,SINT(IFz_hyperbolique_1_dans_le_plan_image_____translation_du_module,FZERO))); /* Parametre introduit le 20111228142846 et completes le 20111229143729... */ DEFV(Common,DEFV(FonctionF,POINTERF(IFz_hyperbolique_1_dans_le_plan_image(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) /* Fonction introduite le 20111228111203. */ DEFV(Argument,DEFV(imageF,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 0.01 donne de bons resultats). */ DEFV(Argument,DEFV(imageF,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Z_HYPERBOLIQUE_1_DANS_LE_PLAN_IMAGE(BLOC(storeF_point_loadF_point(imageA ,new_X ,new_Y ,imageR ,X ,Y ); ) ); RETIF(imageR); Eblock EFonctionF /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N H Y P E R B O L I Q U E 1 G E N E R A L I S E E */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ BFonctionJ DEFV(Common,DEFV(Float,SINT(IJz_hyperbolique_1_dans_le_plan_image_____ponderation_TAHX,FU))); DEFV(Common,DEFV(Float,SINT(IJz_hyperbolique_1_dans_le_plan_image_____A_TAHX_du_module,FU))); DEFV(Common,DEFV(Float,SINT(IJz_hyperbolique_1_dans_le_plan_image_____B_TAHX_du_module,FZERO))); DEFV(Common,DEFV(Float,SINT(IJz_hyperbolique_1_dans_le_plan_image_____ponderation_SINX,FZERO))); DEFV(Common,DEFV(Float,SINT(IJz_hyperbolique_1_dans_le_plan_image_____A_SINX_du_module,FU))); DEFV(Common,DEFV(Float,SINT(IJz_hyperbolique_1_dans_le_plan_image_____B_SINX_du_module,FZERO))); DEFV(Common,DEFV(Float,SINT(IJz_hyperbolique_1_dans_le_plan_image_____translation_du_module,FZERO))); /* Parametre introduit le 20111228142846 et completes le 20111229143729... */ DEFV(Common,DEFV(FonctionJ,POINTERJ(IJz_hyperbolique_1_dans_le_plan_image(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) /* Fonction introduite le 20111228111203. */ DEFV(Argument,DEFV(imageJ,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 0.01 donne de bons resultats). */ DEFV(Argument,DEFV(imageJ,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Z_HYPERBOLIQUE_1_DANS_LE_PLAN_IMAGE(BLOC(storeJ_point_loadJ_point(imageA ,new_X ,new_Y ,imageR ,X ,Y ); ) ); RETIJ(imageR); Eblock EFonctionJ #undef Z_HYPERBOLIQUE_1_DANS_LE_PLAN_IMAGE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A T R A N S F O R M A T I O N H Y P E R B O L I Q U E 1 G E N E R A L I S E E */ /* E N C O O R D O N N E E S D U P L A N C O M P L E X E [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ #define Z_HYPERBOLIQUE_1_DANS_LE_PLAN_COMPLEXE(action_de_rangement) \ Bblock \ TRANSFORMATION_CONFORME_DANS_LE_PLAN_COMPLEXE(BLOC(VIDE;) \ ,TOUJOURS_VRAI \ ,BLOC(Z_HYPERBOLIQUE_1_DANS_PLANS_IMAGE_OU_COMPLEXE;) \ ,BLOC(action_de_rangement) \ ); \ Eblock \ /* Definition de la transformation en coordonnees d'ecran [Xmin,Xmax]x[Ymin,Ymax]. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N H Y P E R B O L I Q U E 1 G E N E R A L I S E E */ /* E N C O O R D O N N E E S D U P L A N C O M P L E X E [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ BFonctionP DEFV(Common,DEFV(Float,SINT(Iz_hyperbolique_1_dans_le_plan_complexe_____ponderation_TAHX,FU))); DEFV(Common,DEFV(Float,SINT(Iz_hyperbolique_1_dans_le_plan_complexe_____A_TAHX_du_module,FU))); DEFV(Common,DEFV(Float,SINT(Iz_hyperbolique_1_dans_le_plan_complexe_____B_TAHX_du_module,FZERO))); DEFV(Common,DEFV(Float,SINT(Iz_hyperbolique_1_dans_le_plan_complexe_____ponderation_SINX,FZERO))); DEFV(Common,DEFV(Float,SINT(Iz_hyperbolique_1_dans_le_plan_complexe_____A_SINX_du_module,FU))); DEFV(Common,DEFV(Float,SINT(Iz_hyperbolique_1_dans_le_plan_complexe_____B_SINX_du_module,FZERO))); DEFV(Common,DEFV(Float,SINT(Iz_hyperbolique_1_dans_le_plan_complexe_____translation_du_module,FZERO))); /* Parametre introduit le 20111228142846 et completes le 20111229143729... */ DEFV(Common,DEFV(FonctionP,POINTERp(Iz_hyperbolique_1_dans_le_plan_complexe(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) /* Fonction introduite le 20111228111203. */ DEFV(Argument,DEFV(image,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K'. */ DEFV(Argument,DEFV(image,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Z_HYPERBOLIQUE_1_DANS_LE_PLAN_COMPLEXE(BLOC(store_point_load_point(imageA ,fV_cDENORMALISE_OX(new_X) ,fV_cDENORMALISE_OY(new_Y) ,imageR ,X ,Y ); ) ); RETI(imageR); Eblock EFonctionP /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N H Y P E R B O L I Q U E 1 G E N E R A L I S E E */ /* E N C O O R D O N N E E S D U P L A N C O M P L E X E [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ BFonctionF DEFV(Common,DEFV(Float,SINT(IFz_hyperbolique_1_dans_le_plan_complexe_____ponderation_TAHX,FU))); DEFV(Common,DEFV(Float,SINT(IFz_hyperbolique_1_dans_le_plan_complexe_____A_TAHX_du_module,FU))); DEFV(Common,DEFV(Float,SINT(IFz_hyperbolique_1_dans_le_plan_complexe_____B_TAHX_du_module,FZERO))); DEFV(Common,DEFV(Float,SINT(IFz_hyperbolique_1_dans_le_plan_complexe_____ponderation_SINX,FZERO))); DEFV(Common,DEFV(Float,SINT(IFz_hyperbolique_1_dans_le_plan_complexe_____A_SINX_du_module,FU))); DEFV(Common,DEFV(Float,SINT(IFz_hyperbolique_1_dans_le_plan_complexe_____B_SINX_du_module,FZERO))); DEFV(Common,DEFV(Float,SINT(IFz_hyperbolique_1_dans_le_plan_complexe_____translation_du_module,FZERO))); /* Parametre introduit le 20111228142846 et completes le 20111229143729... */ DEFV(Common,DEFV(FonctionF,POINTERF(IFz_hyperbolique_1_dans_le_plan_complexe(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) /* Fonction introduite le 20111228111203. */ DEFV(Argument,DEFV(imageF,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K'. */ DEFV(Argument,DEFV(imageF,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Z_HYPERBOLIQUE_1_DANS_LE_PLAN_COMPLEXE(BLOC(storeF_point_loadF_point(imageA ,fV_cDENORMALISE_OX(new_X) ,fV_cDENORMALISE_OY(new_Y) ,imageR ,X ,Y ); ) ); RETIF(imageR); Eblock EFonctionF /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N H Y P E R B O L I Q U E 1 G E N E R A L I S E E */ /* E N C O O R D O N N E E S D U P L A N C O M P L E X E [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ BFonctionJ DEFV(Common,DEFV(Float,SINT(IJz_hyperbolique_1_dans_le_plan_complexe_____ponderation_TAHX,FU))); DEFV(Common,DEFV(Float,SINT(IJz_hyperbolique_1_dans_le_plan_complexe_____A_TAHX_du_module,FU))); DEFV(Common,DEFV(Float,SINT(IJz_hyperbolique_1_dans_le_plan_complexe_____B_TAHX_du_module,FZERO))); DEFV(Common,DEFV(Float,SINT(IJz_hyperbolique_1_dans_le_plan_complexe_____ponderation_SINX,FZERO))); DEFV(Common,DEFV(Float,SINT(IJz_hyperbolique_1_dans_le_plan_complexe_____A_SINX_du_module,FU))); DEFV(Common,DEFV(Float,SINT(IJz_hyperbolique_1_dans_le_plan_complexe_____B_SINX_du_module,FZERO))); DEFV(Common,DEFV(Float,SINT(IJz_hyperbolique_1_dans_le_plan_complexe_____translation_du_module,FZERO))); /* Parametre introduit le 20111228142846 et completes le 20111229143729... */ DEFV(Common,DEFV(FonctionJ,POINTERJ(IJz_hyperbolique_1_dans_le_plan_complexe(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) /* Fonction introduite le 20111228111203. */ DEFV(Argument,DEFV(imageJ,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K'. */ DEFV(Argument,DEFV(imageJ,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Z_HYPERBOLIQUE_1_DANS_LE_PLAN_COMPLEXE(BLOC(storeJ_point_loadJ_point(imageA ,fV_cDENORMALISE_OX(new_X) ,fV_cDENORMALISE_OY(new_Y) ,imageR ,X ,Y ); ) ); RETIJ(imageR); Eblock EFonctionJ #undef Z_HYPERBOLIQUE_1_DANS_LE_PLAN_COMPLEXE #undef Z_HYPERBOLIQUE_1_DANS_PLANS_IMAGE_OU_COMPLEXE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N H Y P E R B O L I Q U E 2 G E N E R A L I S E E : */ /* */ /*************************************************************************************************************************************/ #define Z_HYPERBOLIQUE_2_DANS_PLANS_IMAGE_OU_COMPLEXE \ Bblock \ DEFV(complexe_etendu,point_manoeuvre_etendu); \ \ EGAL(CP_Rho(point_manoeuvre_etendu) \ ,AXPB(NomDeLaFonctionCourante QD@@__ _____ARho_ \ ,ABSO(TANH(Reelle(point_courant))) \ ,NomDeLaFonctionCourante QD@@__ _____BRho_ \ ) \ ); \ EGAL(CP_Theta(point_manoeuvre_etendu) \ ,AXPB(NomDeLaFonctionCourante QD@@__ _____ATheta \ ,ATAD(TANG(Imaginaire(point_courant))) \ ,NomDeLaFonctionCourante QD@@__ _____BTheta \ ) \ ); \ /* Le principe de cette transformation est le suivant : */ \ /* */ \ /* 1-Soit l'hyperboloide 'H' a deux nappes : */ \ /* */ \ /* X(u,v) = a.sh(u).cos(v) */ \ /* Y(u,v) = b.sh(u).sin(v) */ \ /* Z(u,v) = c.ch(u) */ \ /* */ \ /* dont on ne prend donc que la nappe superieure (d'ou le "+c") et que l'on suppose de */ \ /* revolution autour de l'axe 'OZ', d'ou : */ \ /* */ \ /* a = b */ \ /* */ \ /* 2-Soit le cercle 'K' situe dans un plan parallele a 'OXY' : */ \ /* */ \ /* X = r.cos(t) */ \ /* Y = r.sin(t) */ \ /* Z = c/a */ \ /* */ \ /* Le faisceau de droites passant par l'origine 'O' et la circonference de ce cercle 'K' */ \ /* est le cone asymptote de l'hyperboloide 'H'. */ \ /* */ \ /* 3-Soit 'OP' une droite passant par l'origine 'O' et un point 'P' quelconque du disque */ \ /* delimite par le cercle 'K'. Etudions l'intersection de 'OP' 'O' et un point 'P' */ \ /* quelconque du cercle 'K' : */ \ /* */ \ /* a.sh(u).cos(v) = q.r.cos(t) */ \ /* b.sh(u).sin(v) = q.r.sin(t) */ \ /* c.ch(u) = q.(c/a) */ \ /* */ \ /* ou 'q' est un nombre reel qui permet de parametrer la doite 'OP'. Du systeme de trois */ \ /* equations precedents, on tire : */ \ /* */ \ /* t = arctg(tg(v)) */ \ /* r = |th(u)| */ \ /* */ \ /* (qui correspondemt aux affectations 'CP_Rho(...)' et 'CP_Theta(...)' ci-dessus) et */ \ /* */ \ /* 1 */ \ /* u = arcsh(------------) */ \ /* _______ */ \ /* / 2 */ \ /* \/ 1 - r */ \ /* */ \ /* a */ \ /* v = arctg(---.tg(t)) = arctg(tg(t)) */ \ /* b */ \ /* */ \ /* a */ \ /* q = ------------) */ \ /* _______ */ \ /* / 2 */ \ /* \/ 1 - r */ \ /* */ \ /* d'ou le mapping : */ \ /* */ \ /* H <--> K */ \ /* */ \ /* {u,v} <--> {r,t} */ \ /* */ \ /* avec : */ \ /* */ \ /* u <--> Relle(point_courant) */ \ /* v <--> Imaginaire(point_courant) */ \ /* */ \ /* */ \ /* Enfin, on notera qu'evidemment dans la definition de 'CP_Theta(...)' ci-dessus : */ \ /* */ \ /* ATAD(TANG(...)) = NEUT(...) */ \ /* */ \ /* mais que, malgre tout, cette forme est conservee afin de garantir l'intervalle du */ \ /* resultat... */ \ \ Cextension_inverse(point_manoeuvre,point_manoeuvre_etendu); \ Eblock \ /* Definition generale de la transformation 'z' hyperbolique dans les plans image ou */ \ /* complexe. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A T R A N S F O R M A T I O N H Y P E R B O L I Q U E 2 G E N E R A L I S E E */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ #define Z_HYPERBOLIQUE_2_DANS_LE_PLAN_IMAGE(action_de_rangement) \ Bblock \ TRANSFORMATION_CONFORME_DANS_LE_PLAN_IMAGE(BLOC(VIDE;) \ ,TOUJOURS_VRAI \ ,BLOC(Z_HYPERBOLIQUE_2_DANS_PLANS_IMAGE_OU_COMPLEXE;) \ ,BLOC(action_de_rangement) \ ,MUL2(facteur_multiplicatif,NEUT(facteur_correctif)) \ ); \ Eblock \ /* Definition de la transformation en coordonnees d'ecran [Xmin,Xmax]x[Ymin,Ymax]. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N H Y P E R B O L I Q U E 2 G E N E R A L I S E E */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ BFonctionP DEFV(Common,DEFV(Float,SINT(Iz_hyperbolique_2_dans_le_plan_image_____ARho_,FU))); DEFV(Common,DEFV(Float,SINT(Iz_hyperbolique_2_dans_le_plan_image_____BRho_,FZERO))); DEFV(Common,DEFV(Float,SINT(Iz_hyperbolique_2_dans_le_plan_image_____ATheta,CERCLE_TRIGONOMETRIQUE))); DEFV(Common,DEFV(Float,SINT(Iz_hyperbolique_2_dans_le_plan_image_____BTheta,FZERO))); /* Arguments introduits le 20120601090927... */ DEFV(Common,DEFV(FonctionP,POINTERp(Iz_hyperbolique_2_dans_le_plan_image(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) /* Fonction introduite le 20120526222445. */ DEFV(Argument,DEFV(image,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 0.01 donne de bons resultats). */ DEFV(Argument,DEFV(image,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Z_HYPERBOLIQUE_2_DANS_LE_PLAN_IMAGE(BLOC(store_point_load_point(imageA ,new_X ,new_Y ,imageR ,X ,Y ); ) ); RETI(imageR); Eblock EFonctionP /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N H Y P E R B O L I Q U E 2 G E N E R A L I S E E */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ BFonctionF DEFV(Common,DEFV(Float,SINT(IFz_hyperbolique_2_dans_le_plan_image_____ARho_,FU))); DEFV(Common,DEFV(Float,SINT(IFz_hyperbolique_2_dans_le_plan_image_____BRho_,FZERO))); DEFV(Common,DEFV(Float,SINT(IFz_hyperbolique_2_dans_le_plan_image_____ATheta,CERCLE_TRIGONOMETRIQUE))); DEFV(Common,DEFV(Float,SINT(IFz_hyperbolique_2_dans_le_plan_image_____BTheta,FZERO))); /* Arguments introduits le 20120601090927... */ DEFV(Common,DEFV(FonctionF,POINTERF(IFz_hyperbolique_2_dans_le_plan_image(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) /* Fonction introduite le 20120526222445. */ DEFV(Argument,DEFV(imageF,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 0.01 donne de bons resultats). */ DEFV(Argument,DEFV(imageF,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Z_HYPERBOLIQUE_2_DANS_LE_PLAN_IMAGE(BLOC(storeF_point_loadF_point(imageA ,new_X ,new_Y ,imageR ,X ,Y ); ) ); RETIF(imageR); Eblock EFonctionF /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N H Y P E R B O L I Q U E 2 G E N E R A L I S E E */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ BFonctionJ DEFV(Common,DEFV(Float,SINT(IJz_hyperbolique_2_dans_le_plan_image_____ARho_,FU))); DEFV(Common,DEFV(Float,SINT(IJz_hyperbolique_2_dans_le_plan_image_____BRho_,FZERO))); DEFV(Common,DEFV(Float,SINT(IJz_hyperbolique_2_dans_le_plan_image_____ATheta,CERCLE_TRIGONOMETRIQUE))); DEFV(Common,DEFV(Float,SINT(IJz_hyperbolique_2_dans_le_plan_image_____BTheta,FZERO))); /* Arguments introduits le 20120601090927... */ DEFV(Common,DEFV(FonctionJ,POINTERJ(IJz_hyperbolique_2_dans_le_plan_image(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) /* Fonction introduite le 20120526222445. */ DEFV(Argument,DEFV(imageJ,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 0.01 donne de bons resultats). */ DEFV(Argument,DEFV(imageJ,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Z_HYPERBOLIQUE_2_DANS_LE_PLAN_IMAGE(BLOC(storeJ_point_loadJ_point(imageA ,new_X ,new_Y ,imageR ,X ,Y ); ) ); RETIJ(imageR); Eblock EFonctionJ #undef Z_HYPERBOLIQUE_2_DANS_LE_PLAN_IMAGE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A T R A N S F O R M A T I O N H Y P E R B O L I Q U E 2 G E N E R A L I S E E */ /* E N C O O R D O N N E E S D U P L A N C O M P L E X E [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ #define Z_HYPERBOLIQUE_2_DANS_LE_PLAN_COMPLEXE(action_de_rangement) \ Bblock \ TRANSFORMATION_CONFORME_DANS_LE_PLAN_COMPLEXE(BLOC(VIDE;) \ ,TOUJOURS_VRAI \ ,BLOC(Z_HYPERBOLIQUE_2_DANS_PLANS_IMAGE_OU_COMPLEXE;) \ ,BLOC(action_de_rangement) \ ); \ Eblock \ /* Definition de la transformation en coordonnees d'ecran [Xmin,Xmax]x[Ymin,Ymax]. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N H Y P E R B O L I Q U E 2 G E N E R A L I S E E */ /* E N C O O R D O N N E E S D U P L A N C O M P L E X E [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ BFonctionP DEFV(Common,DEFV(Float,SINT(Iz_hyperbolique_2_dans_le_plan_complexe_____ARho_,FU))); DEFV(Common,DEFV(Float,SINT(Iz_hyperbolique_2_dans_le_plan_complexe_____BRho_,FZERO))); DEFV(Common,DEFV(Float,SINT(Iz_hyperbolique_2_dans_le_plan_complexe_____ATheta,CERCLE_TRIGONOMETRIQUE))); DEFV(Common,DEFV(Float,SINT(Iz_hyperbolique_2_dans_le_plan_complexe_____BTheta,FZERO))); /* Arguments introduits le 20120601090927... */ DEFV(Common,DEFV(FonctionP,POINTERp(Iz_hyperbolique_2_dans_le_plan_complexe(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) /* Fonction introduite le 20120526222445. */ DEFV(Argument,DEFV(image,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K'. */ DEFV(Argument,DEFV(image,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Z_HYPERBOLIQUE_2_DANS_LE_PLAN_COMPLEXE(BLOC(store_point_load_point(imageA ,fV_cDENORMALISE_OX(new_X) ,fV_cDENORMALISE_OY(new_Y) ,imageR ,X ,Y ); ) ); RETI(imageR); Eblock EFonctionP /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N H Y P E R B O L I Q U E 2 G E N E R A L I S E E */ /* E N C O O R D O N N E E S D U P L A N C O M P L E X E [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ BFonctionF DEFV(Common,DEFV(Float,SINT(IFz_hyperbolique_2_dans_le_plan_complexe_____ARho_,FU))); DEFV(Common,DEFV(Float,SINT(IFz_hyperbolique_2_dans_le_plan_complexe_____BRho_,FZERO))); DEFV(Common,DEFV(Float,SINT(IFz_hyperbolique_2_dans_le_plan_complexe_____ATheta,CERCLE_TRIGONOMETRIQUE))); DEFV(Common,DEFV(Float,SINT(IFz_hyperbolique_2_dans_le_plan_complexe_____BTheta,FZERO))); /* Arguments introduits le 20120601090927... */ DEFV(Common,DEFV(FonctionF,POINTERF(IFz_hyperbolique_2_dans_le_plan_complexe(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) /* Fonction introduite le 20120526222445. */ DEFV(Argument,DEFV(imageF,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K'. */ DEFV(Argument,DEFV(imageF,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Z_HYPERBOLIQUE_2_DANS_LE_PLAN_COMPLEXE(BLOC(storeF_point_loadF_point(imageA ,fV_cDENORMALISE_OX(new_X) ,fV_cDENORMALISE_OY(new_Y) ,imageR ,X ,Y ); ) ); RETIF(imageR); Eblock EFonctionF /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N H Y P E R B O L I Q U E 2 G E N E R A L I S E E */ /* E N C O O R D O N N E E S D U P L A N C O M P L E X E [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ BFonctionJ DEFV(Common,DEFV(Float,SINT(IJz_hyperbolique_2_dans_le_plan_complexe_____ARho_,FU))); DEFV(Common,DEFV(Float,SINT(IJz_hyperbolique_2_dans_le_plan_complexe_____BRho_,FZERO))); DEFV(Common,DEFV(Float,SINT(IJz_hyperbolique_2_dans_le_plan_complexe_____ATheta,CERCLE_TRIGONOMETRIQUE))); DEFV(Common,DEFV(Float,SINT(IJz_hyperbolique_2_dans_le_plan_complexe_____BTheta,FZERO))); /* Arguments introduits le 20120601090927... */ DEFV(Common,DEFV(FonctionJ,POINTERJ(IJz_hyperbolique_2_dans_le_plan_complexe(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) /* Fonction introduite le 20120526222445. */ DEFV(Argument,DEFV(imageJ,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K'. */ DEFV(Argument,DEFV(imageJ,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Z_HYPERBOLIQUE_2_DANS_LE_PLAN_COMPLEXE(BLOC(storeJ_point_loadJ_point(imageA ,fV_cDENORMALISE_OX(new_X) ,fV_cDENORMALISE_OY(new_Y) ,imageR ,X ,Y ); ) ); RETIJ(imageR); Eblock EFonctionJ #undef Z_HYPERBOLIQUE_2_DANS_LE_PLAN_COMPLEXE #undef Z_HYPERBOLIQUE_2_DANS_PLANS_IMAGE_OU_COMPLEXE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* C O N T R O L E D E S T R A N S F O R M A T I O N S " A U T O - S I M I L A I R E " S : */ /* */ /*************************************************************************************************************************************/ DEFV(Common,DEFV(Int,ZINT(TRANSFORMATION__ZQO_AUTO_SIMILAIRE_____ne_calculer_que_le_logarithme,FAUX))); /* Introduit le 20200724163254 ades fins de test... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N " A U T O - S I M I L A I R E " C O M P L E X E : */ /* */ /*************************************************************************************************************************************/ #define Z_AUTO_SIMILAIRE_DANS_PLANS_IMAGE_OU_COMPLEXE \ Bblock \ TRANSFORMATION__Z_AUTO_SIMILAIRE(point_manoeuvre,point_courant,nombre_pd,nombre_prd,INDIRECT); \ /* Calcul de : */ \ /* */ \ /* p1 */ \ /* prd.log(----) */ \ /* pd */ \ /* e */ \ /* */ \ Eblock \ /* Definition generale de la transformation auto_similaire dans les plans image ou */ \ /* complexe (introduite le 20070118100909). */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A T R A N S F O R M A T I O N " A U T O - S I M I L A I R E " C O M P L E X E */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ #define Z_AUTO_SIMILAIRE_DANS_LE_PLAN_IMAGE(action_de_rangement) \ Bblock \ TRANSFORMATION_CONFORME_DANS_LE_PLAN_IMAGE(BLOC(VIDE;) \ ,TOUJOURS_VRAI \ ,BLOC(Z_AUTO_SIMILAIRE_DANS_PLANS_IMAGE_OU_COMPLEXE;) \ ,BLOC(action_de_rangement) \ ,NEUT(facteur_multiplicatif) \ ); \ Eblock \ /* Definition de la transformation conforme en coordonnees d'ecran [Xmin,Xmax]x[Ymin,Ymax]. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N " A U T O - S I M I L A I R E " C O M P L E X E */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ BFonctionP DEFV(Common,DEFV(FonctionP,POINTERp(Iz_auto_similaire_dans_le_plan_image(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ,ARGUMENT_POINTERs(nombre_pd) ,ARGUMENT_POINTERs(nombre_prd) ) ) ) ) /* Fonction introduite le 20200705113415. */ DEFV(Argument,DEFV(image,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 0.01 donne de bons resultats). */ DEFV(Argument,DEFV(image,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(complexe,POINTERs(nombre_pd))); DEFV(Argument,DEFV(complexe,POINTERs(nombre_prd))); /* Definition deux deux parametres complexes de la transformation "auto-similaire" : */ /* */ /* p1 */ /* prd.log(----) */ /* pd */ /* e */ /* */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Z_AUTO_SIMILAIRE_DANS_LE_PLAN_IMAGE(BLOC(store_point_load_point(imageA ,new_X ,new_Y ,imageR ,X ,Y ); ) ); RETI(imageR); Eblock EFonctionP /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N " A U T O - S I M I L A I R E " C O M P L E X E */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ BFonctionF DEFV(Common,DEFV(FonctionF,POINTERF(IFz_auto_similaire_dans_le_plan_image(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ,ARGUMENT_POINTERs(nombre_pd) ,ARGUMENT_POINTERs(nombre_prd) ) ) ) ) /* Fonction introduite le 20200705113415. */ DEFV(Argument,DEFV(imageF,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 0.01 donne de bons resultats). */ DEFV(Argument,DEFV(imageF,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(complexe,POINTERs(nombre_pd))); DEFV(Argument,DEFV(complexe,POINTERs(nombre_prd))); /* Definition deux deux parametres complexes de la transformation "auto-similaire" : */ /* */ /* p1 */ /* prd.log(----) */ /* pd */ /* e */ /* */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Z_AUTO_SIMILAIRE_DANS_LE_PLAN_IMAGE(BLOC(storeF_point_loadF_point(imageA ,new_X ,new_Y ,imageR ,X ,Y ); ) ); RETIF(imageR); Eblock EFonctionF /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N " A U T O - S I M I L A I R E " C O M P L E X E */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ BFonctionJ DEFV(Common,DEFV(FonctionJ,POINTERJ(IJz_auto_similaire_dans_le_plan_image(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ,ARGUMENT_POINTERs(nombre_pd) ,ARGUMENT_POINTERs(nombre_prd) ) ) ) ) /* Fonction introduite le 20200705113415. */ DEFV(Argument,DEFV(imageJ,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 0.01 donne de bons resultats). */ DEFV(Argument,DEFV(imageJ,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(complexe,POINTERs(nombre_pd))); DEFV(Argument,DEFV(complexe,POINTERs(nombre_prd))); /* Definition deux deux parametres complexes de la transformation "auto-similaire" : */ /* */ /* p1 */ /* prd.log(----) */ /* pd */ /* e */ /* */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Z_AUTO_SIMILAIRE_DANS_LE_PLAN_IMAGE(BLOC(storeJ_point_loadJ_point(imageA ,new_X ,new_Y ,imageR ,X ,Y ); ) ); RETIJ(imageR); Eblock EFonctionJ #undef Z_AUTO_SIMILAIRE_DANS_LE_PLAN_IMAGE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A T R A N S F O R M A T I O N " A U T O - S I M I L A I R E " C O M P L E X E */ /* E N C O O R D O N N E E S D U P L A N C O M P L E X E [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ #define Z_AUTO_SIMILAIRE_DANS_LE_PLAN_COMPLEXE(action_de_rangement) \ Bblock \ TRANSFORMATION_CONFORME_DANS_LE_PLAN_COMPLEXE(BLOC(VIDE;) \ ,TOUJOURS_VRAI \ ,BLOC(Z_AUTO_SIMILAIRE_DANS_PLANS_IMAGE_OU_COMPLEXE;) \ ,BLOC(action_de_rangement) \ ); \ Eblock \ /* Definition de la transformation conforme en coordonnees d'ecran [Xmin,Xmax]x[Ymin,Ymax]. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N " A U T O - S I M I L A I R E " C O M P L E X E */ /* E N C O O R D O N N E E S D U P L A N C O M P L E X E [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ BFonctionP DEFV(Common,DEFV(FonctionP,POINTERp(Iz_auto_similaire_dans_le_plan_complexe(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ,ARGUMENT_POINTERs(nombre_pd) ,ARGUMENT_POINTERs(nombre_prd) ) ) ) ) /* Fonction introduite le 20200705113415. */ DEFV(Argument,DEFV(image,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 5.0 donne de bons resultats) ; voir */ /* a ce propos les commentaires de 'v $xci/z_homogra.01$K'... */ DEFV(Argument,DEFV(image,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(complexe,POINTERs(nombre_pd))); DEFV(Argument,DEFV(complexe,POINTERs(nombre_prd))); /* Definition deux deux parametres complexes de la transformation "auto-similaire" : */ /* */ /* p1 */ /* prd.log(----) */ /* pd */ /* e */ /* */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Z_AUTO_SIMILAIRE_DANS_LE_PLAN_COMPLEXE(BLOC(store_point_load_point(imageA ,fV_cDENORMALISE_OX(new_X) ,fV_cDENORMALISE_OY(new_Y) ,imageR ,X ,Y ); ) ); RETI(imageR); Eblock EFonctionP /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N " A U T O - S I M I L A I R E " C O M P L E X E */ /* E N C O O R D O N N E E S D U P L A N C O M P L E X E [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ BFonctionF DEFV(Common,DEFV(FonctionF,POINTERF(IFz_auto_similaire_dans_le_plan_complexe(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ,ARGUMENT_POINTERs(nombre_pd) ,ARGUMENT_POINTERs(nombre_prd) ) ) ) ) /* Fonction introduite le 20200705113415. */ DEFV(Argument,DEFV(imageF,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 5.0 donne de bons resultats) ; voir */ /* a ce propos les commentaires de 'v $xci/z_homogra.01$K'... */ DEFV(Argument,DEFV(imageF,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(complexe,POINTERs(nombre_pd))); DEFV(Argument,DEFV(complexe,POINTERs(nombre_prd))); /* Definition deux deux parametres complexes de la transformation "auto-similaire" : */ /* */ /* p1 */ /* prd.log(----) */ /* pd */ /* e */ /* */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Z_AUTO_SIMILAIRE_DANS_LE_PLAN_COMPLEXE(BLOC(storeF_point_loadF_point(imageA ,fV_cDENORMALISE_OX(new_X) ,fV_cDENORMALISE_OY(new_Y) ,imageR ,X ,Y ); ) ); RETIF(imageR); Eblock EFonctionF /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N " A U T O - S I M I L A I R E " C O M P L E X E */ /* E N C O O R D O N N E E S D U P L A N C O M P L E X E [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ BFonctionJ DEFV(Common,DEFV(FonctionJ,POINTERJ(IJz_auto_similaire_dans_le_plan_complexe(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ,ARGUMENT_POINTERs(nombre_pd) ,ARGUMENT_POINTERs(nombre_prd) ) ) ) ) /* Fonction introduite le 20200705113415. */ DEFV(Argument,DEFV(imageJ,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 5.0 donne de bons resultats) ; voir */ /* a ce propos les commentaires de 'v $xci/z_homogra.01$K'... */ DEFV(Argument,DEFV(imageJ,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(complexe,POINTERs(nombre_pd))); DEFV(Argument,DEFV(complexe,POINTERs(nombre_prd))); /* Definition deux deux parametres complexes de la transformation "auto-similaire" : */ /* */ /* p1 */ /* prd.log(----) */ /* pd */ /* e */ /* */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Z_AUTO_SIMILAIRE_DANS_LE_PLAN_COMPLEXE(BLOC(storeJ_point_loadJ_point(imageA ,fV_cDENORMALISE_OX(new_X) ,fV_cDENORMALISE_OY(new_Y) ,imageR ,X ,Y ); ) ); RETIJ(imageR); Eblock EFonctionJ #undef Z_AUTO_SIMILAIRE_DANS_LE_PLAN_COMPLEXE #undef Z_AUTO_SIMILAIRE_DANS_PLANS_IMAGE_OU_COMPLEXE #undef TRANSFORMATION_CONFORME_DANS_LE_PLAN_COMPLEXE #undef TRANSFORMATION_CONFORME_DANS_LE_PLAN_IMAGE #undef EDITION_DES_COORDONNEES_D_UNE_TRANSFORMATION_CONFORME #undef A_translation__dX_____ #undef A_translation__dY_____ #undef R_translation__dX_____ #undef R_translation__dY_____ _______________________________________________________________________________________________________________________________________ _______________________________________________________________________________________________________________________________________ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* C O N T R O L E D E L ' A R I T H M E T I Q U E E T E N D U E */ /* L O R S D E C A L C U L S S U R L E S N O M B R E S H Y P E R - C O M P L E X E S : */ /* */ /*************************************************************************************************************************************/ #ifdef FAIRE_EVENTUELLEMENT_DE_L_ARITHMETIQUE_ETENDUE_DANS_LES_NOMBRES_HYPER_COMPLEXES DEFV(Common,DEFV(Logical,_______VERSION__ximcf_conformes_____ARITHMETIQUE_ETENDUE_DANS_LES_NOMBRES_HYPER_COMPLEXES)); /* Indicateur introduit le 20070129121935... */ #Aifdef FAIRE_EVENTUELLEMENT_DE_L_ARITHMETIQUE_ETENDUE_DANS_LES_NOMBRES_HYPER_COMPLEXES DEFV(Common,DEFV(Logical,_______VERSION__ximcf_conformes_____ARITHMETIQUE_DE_BASE_DANS_LES_NOMBRES_HYPER_COMPLEXES)); /* Indicateur introduit le 20070129132455... */ #Eifdef FAIRE_EVENTUELLEMENT_DE_L_ARITHMETIQUE_ETENDUE_DANS_LES_NOMBRES_HYPER_COMPLEXES _______________________________________________________________________________________________________________________________________ _______________________________________________________________________________________________________________________________________ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N G E N E R A L E D E S T R A N S F O R M A T I O N S C O N F O R M E S */ /* D A N S L E S P L A N S H Y P E R - I M A G E E T H Y P E R - C O M P L E X E R E S P E C T I V E M E N T : */ /* */ /*************************************************************************************************************************************/ DEFV(Common,DEFV(Int,ZINT(TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_IMAGE_____Xmin_reference,k___Xmin))); DEFV(Common,DEFV(Int,ZINT(TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_IMAGE_____Xmax_reference,k___Xmax))); DEFV(Common,DEFV(Int,ZINT(TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_IMAGE_____Ymin_reference,k___Ymin))); DEFV(Common,DEFV(Int,ZINT(TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_IMAGE_____Ymax_reference,k___Ymax))); /* Definition d'un format d'image dit "reference" utilise pour calculer un facteur */ /* homothetique multiplicatif (introduit le 20100408174856). */ /* */ /* ATTENTION : je note le 20111016114151 que le format de reference est le format 'Std' */ /* et non pas le format 'Pal'... */ /* */ /* ATTENTION : je note le 20170322102617 l'existence de six nouvelles variables dans */ /* 'v $xiii/Images$STR _reference.k___'. Mais celles-ci ne peuvent remplacer les quatre */ /* qui sont definies ci-dessus et ce pour de possibles problemes de compatibilite (au cas */ /* ou, par exemple, les variables 'v $xiii/Images$STR _reference.k___' passaient du format */ /* 'Std' au format 'Pal'...). */ DEFV(Common,DEFV(Logical,ZINT(TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_IMAGE_____facteur_multiplicatif_homothetique,FAUX))); /* Introduit le 20111016114151, la valeur par defaut garantissant la compatibilite */ /* anterieure... */ DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_COMPLEXE_____A_facteur_homothetie_X,FU))); DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_COMPLEXE_____A_facteur_homothetie_Y,FU))); /* Parametres destines a 'TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_COMPLEXE(...)' */ /* permettant de faire une homothetie sur le domaine de calcul (via 'point_courant') et */ /* introduits le 20120527183514... */ DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_____R_facteur_homothetie_X,FU))); DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_____R_facteur_homothetie_Y,FU))); /* Parametres destines a faire une homothetie (via 'point_manoeuvre') introduits le */ /* 20120527184309... */ #define A_translation__dX_____ \ AXPB(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_____A_translation_AX \ ,ASI1(A_translation,dx) \ ,TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_____A_translation_BX \ ) #define A_translation__dY_____ \ AXPB(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_____A_translation_AY \ ,ASI1(A_translation,dy) \ ,TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_____A_translation_BY \ ) DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_____A_translation_AX,FU))); DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_____A_translation_BX,FZERO))); DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_____A_translation_AY,FU))); DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_____A_translation_BY,FZERO))); #define R_translation__dX_____ \ AXPB(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_____R_translation_AX \ ,ASI1(R_translation,dx) \ ,TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_____R_translation_BX \ ) #define R_translation__dY_____ \ AXPB(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_____R_translation_AY \ ,ASI1(R_translation,dy) \ ,TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_____R_translation_BY \ ) DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_____R_translation_AX,FU))); DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_____R_translation_BX,FZERO))); DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_____R_translation_AY,FU))); DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_____R_translation_BY,FZERO))); /* Definition des facteurs de corrections des translations 'A' et 'R' (ceci fut introduit */ /* le 20111228152543... */ #define NomFonctionCourant \ NomDeLaFonctionCourante \ /* Introduit le 20070117180640 pour raccourcir les lignes 'LIN4(...)' suivantes... */ #define TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_IMAGE(variables_specifiques,condition,transformation,action_de_rangement,fme) \ /* Procedure generale introduite le 20070116112558... */ \ /* */ \ /* L'argument 'fme' ("Facteur_Multiplicatif_Effectif") a ete introduit le 20111016114151... */ \ Bblock \ DEFV(Float,INIT(facteur_multiplicatif_effectif,facteur_multiplicatif)); \ /* Facteur multiplicatif effectif introduit le 20111016114151 afin de rendre ce facteur */ \ /* "homothetique" ce qui permettra alors d'obtenir le meme resultat quel que soit la */ \ /* resolution de l'image (par exemple 'Puq' et 'Pqu'...). Ceci n'a evidemment de sens */ \ /* que pour 'TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_IMAGE(...)' et n'en a pas pour */ \ /* 'TRANSFORMATION_CONFORME_DANS_LE_PLAN_COMPLEXE(...)' puisque les coordonnees {X,Y} */ \ /* sont alors normalisees dans [0,1], cette normalisation etant evidemment independante */ \ /* de resolution de l'image... */ \ \ Test(IL_FAUT(TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_IMAGE_____facteur_multiplicatif_homothetique)) \ /* Test introduit le 20111016114151... */ \ Bblock \ DEFV(Float,INIT(facteur_correctif \ ,DIVI(RACX(FLOT(MUL2(DIMENSION \ (TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_IMAGE_____Xmin_reference \ ,TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_IMAGE_____Xmax_reference \ ) \ ,DIMENSION \ (TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_IMAGE_____Ymin_reference \ ,TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_IMAGE_____Ymax_reference \ ) \ ) \ ) \ ) \ ,RACX(FLOT(dimXY)) \ ) \ ) \ ); \ EGAL(facteur_multiplicatif_effectif,fme); \ /* Ainsi, le facteur mutiplicatif est rendu independant de la resolution de l'image par */ \ /* rapport a la resolution dite "reference"... */ \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ \ begin_image \ Bblock \ DEFV(Float,INIT(composante_R,FLOT__UNDEF)); \ DEFV(Float,INIT(composante_I,FLOT__UNDEF)); \ /* Coordonnees translatees... */ \ DEFV(hyper_complexe,point_courant); \ /* Point hyper-complexe courant. */ \ DEFV(hyper_complexe,point_manoeuvre); \ /* Point hyper-complexe resultat de la transformation. */ \ BLOC(variables_specifiques); \ /* Variables specifiques eventuellement (introduites le 20070116095630)... */ \ \ EGAL(composante_R \ ,ADD2(FLOT(X) \ ,F__lDENORMALISE_OX(A_translation__dX_____) \ ) \ ); \ EGAL(composante_I \ ,ADD2(FLOT(Y) \ ,F__lDENORMALISE_OY(A_translation__dY_____) \ ) \ ); \ \ HCinitialisation(point_courant \ ,LIZ4(NomFonctionCourant QD@@__ _____matrice1_RR,composante_R \ ,NomFonctionCourant QD@@__ _____matrice1_RI,composante_I \ ,NomFonctionCourant QD@@__ _____matrice1_RJ,NomFonctionCourant QD@@__ _____composante_J \ ,NomFonctionCourant QD@@__ _____matrice1_RK,NomFonctionCourant QD@@__ _____composante_K \ ) \ ,LIZ4(NomFonctionCourant QD@@__ _____matrice1_IR,composante_R \ ,NomFonctionCourant QD@@__ _____matrice1_II,composante_I \ ,NomFonctionCourant QD@@__ _____matrice1_IJ,NomFonctionCourant QD@@__ _____composante_J \ ,NomFonctionCourant QD@@__ _____matrice1_IK,NomFonctionCourant QD@@__ _____composante_K \ ) \ ,LIZ4(NomFonctionCourant QD@@__ _____matrice1_JR,composante_R \ ,NomFonctionCourant QD@@__ _____matrice1_JI,composante_I \ ,NomFonctionCourant QD@@__ _____matrice1_JJ,NomFonctionCourant QD@@__ _____composante_J \ ,NomFonctionCourant QD@@__ _____matrice1_JK,NomFonctionCourant QD@@__ _____composante_K \ ) \ ,LIZ4(NomFonctionCourant QD@@__ _____matrice1_KR,composante_R \ ,NomFonctionCourant QD@@__ _____matrice1_KI,composante_I \ ,NomFonctionCourant QD@@__ _____matrice1_KJ,NomFonctionCourant QD@@__ _____composante_J \ ,NomFonctionCourant QD@@__ _____matrice1_KK,NomFonctionCourant QD@@__ _____composante_K \ ) \ ); \ /* Le "point_courant" est associe au point courant {X,Y} sur le maillage de l'image */ \ /* de facon que : */ \ /* */ \ /* point_courant = {X,Y,0,0} */ \ /* */ \ /* par defaut (voir la valeur des ponderations des 'LIN4(...)'). Les composantes */ \ /* {_____composante_J,_____composante_K} sont arbitraires et nulles par defaut... */ \ \ Test(condition) \ Bblock \ DEFV(Int,INIT(new_X,UNDEF)); \ /* Nouvelle coordonnee horizontale apres transformation, */ \ DEFV(Int,INIT(new_Y,UNDEF)); \ /* Nouvelle coordonnee verticale apres transformation, */ \ \ BLOC(transformation); \ /* Transformation du nombre hyper-complexe courant. */ \ \ EGAL(new_X \ ,ADD2(VINTE(MUL3(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_____R_facteur_homothetie_X \ ,facteur_multiplicatif_effectif \ ,LIZ4(NomFonctionCourant QD@@__ _____matrice2_RR,HReelle(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_RI,HImaginaire(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_RJ,HJmaginaire(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_RK,HKmaginaire(point_manoeuvre) \ ) \ ) \ ) \ ,_lDENORMALISE_OX(R_translation__dX_____) \ ) \ ); \ EGAL(new_Y \ ,ADD2(VINTE(MUL3(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_____R_facteur_homothetie_Y \ ,facteur_multiplicatif_effectif \ ,LIZ4(NomFonctionCourant QD@@__ _____matrice2_IR,HReelle(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_II,HImaginaire(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_IJ,HJmaginaire(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_IK,HKmaginaire(point_manoeuvre) \ ) \ ) \ ) \ ,_lDENORMALISE_OY(R_translation__dY_____) \ ) \ ); \ /* Calcul des coordonnees transformees dans le plan image en recuperant, par defaut (voir */ \ /* la valeur des ponderations des 'LIN4(...)'), les composantes {R,I} du quaternion */ \ /* 'point_manoeuvre'... */ \ \ BLOC(action_de_rangement); \ /* Et enfin, deplacement du point courant... */ \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock \ end_image \ Eblock \ /* Definition de la transformation conforme en coordonnees d'ecran [Xmin,Xmax]x[Ymin,Ymax]. */ #define TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_COMPLEXE(variables_specifiques,condition,transformation,action_de_rangement) \ /* Procedure generale introduite le 20070116112558... */ \ Bblock \ begin_image \ Bblock \ DEFV(Float,INIT(new_X,FLOT__UNDEF)); \ /* Nouvelle coordonnee horizontale apres transformation, */ \ DEFV(Float,INIT(new_Y,FLOT__UNDEF)); \ /* Nouvelle coordonnee verticale apres transformation, */ \ DEFV(Float,INIT(composante_R,FLOT__UNDEF)); \ DEFV(Float,INIT(composante_I,FLOT__UNDEF)); \ /* Coordonnees translatees... */ \ DEFV(hyper_complexe,point_courant); \ /* Point hyper-complexe courant. */ \ DEFV(hyper_complexe,point_manoeuvre); \ /* Point hyper-complexe resultat de la transformation. */ \ BLOC(variables_specifiques); \ /* Variables specifiques eventuellement (introduites le 20070116095630)... */ \ \ EGAL(composante_R \ ,AXPB(TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_COMPLEXE_____A_facteur_homothetie_X \ ,SUPER_cNORMALISE_OX(X) \ ,A_translation__dX_____ \ ) \ ); \ EGAL(composante_I \ ,AXPB(TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_COMPLEXE_____A_facteur_homothetie_Y \ ,SUPER_cNORMALISE_OY(Y) \ ,A_translation__dY_____ \ ) \ ); \ \ HCinitialisation(point_courant \ ,LIZ4(NomFonctionCourant QD@@__ _____matrice1_RR,composante_R \ ,NomFonctionCourant QD@@__ _____matrice1_RI,composante_I \ ,NomFonctionCourant QD@@__ _____matrice1_RJ,NomFonctionCourant QD@@__ _____composante_J \ ,NomFonctionCourant QD@@__ _____matrice1_RK,NomFonctionCourant QD@@__ _____composante_K \ ) \ ,LIZ4(NomFonctionCourant QD@@__ _____matrice1_IR,composante_R \ ,NomFonctionCourant QD@@__ _____matrice1_II,composante_I \ ,NomFonctionCourant QD@@__ _____matrice1_IJ,NomFonctionCourant QD@@__ _____composante_J \ ,NomFonctionCourant QD@@__ _____matrice1_IK,NomFonctionCourant QD@@__ _____composante_K \ ) \ ,LIZ4(NomFonctionCourant QD@@__ _____matrice1_JR,composante_R \ ,NomFonctionCourant QD@@__ _____matrice1_JI,composante_I \ ,NomFonctionCourant QD@@__ _____matrice1_JJ,NomFonctionCourant QD@@__ _____composante_J \ ,NomFonctionCourant QD@@__ _____matrice1_JK,NomFonctionCourant QD@@__ _____composante_K \ ) \ ,LIZ4(NomFonctionCourant QD@@__ _____matrice1_KR,composante_R \ ,NomFonctionCourant QD@@__ _____matrice1_KI,composante_I \ ,NomFonctionCourant QD@@__ _____matrice1_KJ,NomFonctionCourant QD@@__ _____composante_J \ ,NomFonctionCourant QD@@__ _____matrice1_KK,NomFonctionCourant QD@@__ _____composante_K \ ) \ ); \ /* Le "point_courant" est associe au point courant {X,Y} sur le maillage de l'image */ \ /* de facon que : */ \ /* */ \ /* point_courant = {X,Y,0,0} */ \ /* */ \ /* par defaut (voir la valeur des ponderations des 'LIN4(...)'). Les composantes */ \ /* {_____composante_J,_____composante_K} sont arbitraires et nulles par defaut... */ \ \ Test(condition) \ Bblock \ BLOC(transformation); \ /* Transformation du nombre hyper-complexe courant. */ \ \ EGAL(new_X \ ,ADD2(MUL3(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_____R_facteur_homothetie_X \ ,facteur_multiplicatif \ ,LIZ4(NomFonctionCourant QD@@__ _____matrice2_RR,HReelle(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_RI,HImaginaire(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_RJ,HJmaginaire(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_RK,HKmaginaire(point_manoeuvre) \ ) \ ) \ ,R_translation__dX_____ \ ) \ ); \ EGAL(new_Y \ ,ADD2(MUL3(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_____R_facteur_homothetie_Y \ ,facteur_multiplicatif \ ,LIZ4(NomFonctionCourant QD@@__ _____matrice2_IR,HReelle(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_II,HImaginaire(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_IJ,HJmaginaire(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_IK,HKmaginaire(point_manoeuvre) \ ) \ ) \ ,R_translation__dY_____ \ ) \ ); \ /* Calcul des coordonnees transformees dans le plan image en recuperant, par defaut (voir */ \ /* la valeur des ponderations des 'LIN4(...)'), les composantes {R,I} du quaternion */ \ /* 'point_manoeuvre'... */ \ \ BLOC(action_de_rangement); \ /* Et enfin, deplacement du point courant... */ \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock \ end_image \ Eblock \ /* Definition de la transformation conforme en coordonnees d'ecran [Xmin,Xmax]x[Ymin,Ymax]. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( Q * * 2 ) : */ /* */ /*************************************************************************************************************************************/ #define Q_AU_CARRE_DANS_PLANS_HYPER_IMAGE_OU_HYPER_COMPLEXE \ Bblock \ TRANSFORMATION__Q_AU_CARRE(point_manoeuvre,point_courant); \ Eblock \ /* Definition generale de la transformation 'q' au carre dans les plans hyper-image ou */ \ /* hyper-complexe (introduite le 20070118102622). */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( Q * * 2 ) */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ #define Q_AU_CARRE_DANS_LE_PLAN_HYPER_IMAGE(action_de_rangement) \ Bblock \ TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_IMAGE(BLOC(VIDE;) \ ,TOUJOURS_VRAI \ ,BLOC(Q_AU_CARRE_DANS_PLANS_HYPER_IMAGE_OU_HYPER_COMPLEXE;) \ ,BLOC(action_de_rangement) \ ,MUL2(facteur_multiplicatif,NEUT(facteur_correctif)) \ ); \ Eblock \ /* Definition de la transformation conforme en coordonnees d'ecran [Xmin,Xmax]x[Ymin,Ymax]. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( Q * * 2 ) */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ BFonctionP DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_image_____matrice1_RR,FU))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_image_____matrice1_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_image_____matrice1_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_image_____matrice1_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_image_____matrice1_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_image_____matrice1_II,FU))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_image_____matrice1_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_image_____matrice1_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_image_____matrice1_JR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_image_____matrice1_JI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_image_____matrice1_JJ,FU))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_image_____matrice1_JK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_image_____matrice1_KR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_image_____matrice1_KI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_image_____matrice1_KJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_image_____matrice1_KK,FU))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_image_____matrice2_RR,FU))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_image_____matrice2_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_image_____matrice2_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_image_____matrice2_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_image_____matrice2_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_image_____matrice2_II,FU))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_image_____matrice2_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_image_____matrice2_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_image_____composante_J,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_image_____composante_K,FZERO))); DEFV(Common,DEFV(FonctionP,POINTERp(Iq_au_carre_dans_le_plan_hyper_image(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) DEFV(Argument,DEFV(image,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 0.01 donne de bons resultats). */ DEFV(Argument,DEFV(image,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Q_AU_CARRE_DANS_LE_PLAN_HYPER_IMAGE(BLOC(store_point_load_point(imageA ,new_X ,new_Y ,imageR ,X ,Y ); ) ); RETI(imageR); Eblock EFonctionP /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( Q * * 2 ) */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ BFonctionF DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_image_____matrice1_RR,FU))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_image_____matrice1_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_image_____matrice1_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_image_____matrice1_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_image_____matrice1_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_image_____matrice1_II,FU))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_image_____matrice1_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_image_____matrice1_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_image_____matrice1_JR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_image_____matrice1_JI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_image_____matrice1_JJ,FU))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_image_____matrice1_JK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_image_____matrice1_KR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_image_____matrice1_KI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_image_____matrice1_KJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_image_____matrice1_KK,FU))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_image_____matrice2_RR,FU))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_image_____matrice2_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_image_____matrice2_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_image_____matrice2_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_image_____matrice2_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_image_____matrice2_II,FU))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_image_____matrice2_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_image_____matrice2_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_image_____composante_J,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_image_____composante_K,FZERO))); DEFV(Common,DEFV(FonctionF,POINTERF(IFq_au_carre_dans_le_plan_hyper_image(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) /* Fonction introduite le 20041225171429. */ DEFV(Argument,DEFV(imageF,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 0.01 donne de bons resultats). */ DEFV(Argument,DEFV(imageF,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Q_AU_CARRE_DANS_LE_PLAN_HYPER_IMAGE(BLOC(storeF_point_loadF_point(imageA ,new_X ,new_Y ,imageR ,X ,Y ); ) ); RETIF(imageR); Eblock EFonctionF #undef Q_AU_CARRE_DANS_LE_PLAN_HYPER_IMAGE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( Q * * 2 ) */ /* E N C O O R D O N N E E S D U P L A N H Y P E R - C O M P L E X E [0,1] x [0,1] x [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ #define Q_AU_CARRE_DANS_LE_PLAN_HYPER_COMPLEXE(action_de_rangement) \ Bblock \ TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_COMPLEXE(BLOC(VIDE;) \ ,TOUJOURS_VRAI \ ,BLOC(Q_AU_CARRE_DANS_PLANS_HYPER_IMAGE_OU_HYPER_COMPLEXE;) \ ,BLOC(action_de_rangement) \ ); \ Eblock \ /* Definition de la transformation conforme en coordonnees d'ecran [Xmin,Xmax]x[Ymin,Ymax]. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( Q * * 2 ) */ /* E N C O O R D O N N E E S D U P L A N H Y P E R - C O M P L E X E [0,1] x [0,1] x [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ BFonctionP DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_complexe_____matrice1_RR,FU))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_complexe_____matrice1_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_complexe_____matrice1_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_complexe_____matrice1_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_complexe_____matrice1_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_complexe_____matrice1_II,FU))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_complexe_____matrice1_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_complexe_____matrice1_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_complexe_____matrice1_JR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_complexe_____matrice1_JI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_complexe_____matrice1_JJ,FU))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_complexe_____matrice1_JK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_complexe_____matrice1_KR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_complexe_____matrice1_KI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_complexe_____matrice1_KJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_complexe_____matrice1_KK,FU))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_complexe_____matrice2_RR,FU))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_complexe_____matrice2_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_complexe_____matrice2_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_complexe_____matrice2_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_complexe_____matrice2_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_complexe_____matrice2_II,FU))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_complexe_____matrice2_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_complexe_____matrice2_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_complexe_____composante_J,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_au_carre_dans_le_plan_hyper_complexe_____composante_K,FZERO))); DEFV(Common,DEFV(FonctionP,POINTERp(Iq_au_carre_dans_le_plan_hyper_complexe(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) DEFV(Argument,DEFV(image,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 5.0 donne de bons resultats) ; voir */ /* a ce propos les commentaires de 'v $xci/z_carre.01$K'... */ DEFV(Argument,DEFV(image,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Q_AU_CARRE_DANS_LE_PLAN_HYPER_COMPLEXE(BLOC(store_point_load_point(imageA ,fV_cDENORMALISE_OX(new_X) ,fV_cDENORMALISE_OY(new_Y) ,imageR ,X ,Y ); ) ); RETI(imageR); Eblock EFonctionP /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( Q * * 2 ) */ /* E N C O O R D O N N E E S D U P L A N H Y P E R - C O M P L E X E [0,1] x [0,1] x [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ BFonctionF DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_complexe_____matrice1_RR,FU))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_complexe_____matrice1_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_complexe_____matrice1_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_complexe_____matrice1_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_complexe_____matrice1_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_complexe_____matrice1_II,FU))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_complexe_____matrice1_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_complexe_____matrice1_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_complexe_____matrice1_JR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_complexe_____matrice1_JI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_complexe_____matrice1_JJ,FU))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_complexe_____matrice1_JK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_complexe_____matrice1_KR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_complexe_____matrice1_KI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_complexe_____matrice1_KJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_complexe_____matrice1_KK,FU))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_complexe_____matrice2_RR,FU))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_complexe_____matrice2_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_complexe_____matrice2_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_complexe_____matrice2_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_complexe_____matrice2_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_complexe_____matrice2_II,FU))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_complexe_____matrice2_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_complexe_____matrice2_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_complexe_____composante_J,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_au_carre_dans_le_plan_hyper_complexe_____composante_K,FZERO))); DEFV(Common,DEFV(FonctionF,POINTERF(IFq_au_carre_dans_le_plan_hyper_complexe(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) /* Fonction introduite le 20041225171429. */ DEFV(Argument,DEFV(imageF,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 5.0 donne de bons resultats) ; voir */ /* a ce propos les commentaires de 'v $xci/z_carre.01$K'... */ DEFV(Argument,DEFV(imageF,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Q_AU_CARRE_DANS_LE_PLAN_HYPER_COMPLEXE(BLOC(storeF_point_loadF_point(imageA ,fV_cDENORMALISE_OX(new_X) ,fV_cDENORMALISE_OY(new_Y) ,imageR ,X ,Y ); ) ); RETIF(imageR); Eblock EFonctionF #undef Q_AU_CARRE_DANS_LE_PLAN_HYPER_COMPLEXE #undef Q_AU_CARRE_DANS_PLANS_HYPER_IMAGE_OU_HYPER_COMPLEXE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( 1 / Q ) : */ /* */ /*************************************************************************************************************************************/ #define UN_SUR_Q_DANS_PLANS_HYPER_IMAGE_OU_HYPER_COMPLEXE \ Bblock \ TRANSFORMATION__UN_SUR_Q(point_manoeuvre,point_courant); \ Eblock \ /* Definition generale de la transformation un sur 'q' dans les plans hyper-image ou */ \ /* hyper-complexe (introduite le 20070118103318). */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( 1 / Q ) */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ #define UN_SUR_Q_DANS_LE_PLAN_HYPER_IMAGE(action_de_rangement) \ Bblock \ TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_IMAGE(BLOC(VIDE;) \ ,IZNE(HCmodule2(point_courant)) \ ,BLOC(UN_SUR_Q_DANS_PLANS_HYPER_IMAGE_OU_HYPER_COMPLEXE;) \ ,BLOC(action_de_rangement) \ ,DIVI(facteur_multiplicatif,EXP2(facteur_correctif)) \ ); \ Eblock \ /* Definition de la transformation conforme en coordonnees d'ecran [Xmin,Xmax]x[Ymin,Ymax]. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( 1 / Q ) */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ BFonctionP DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_image_____matrice1_RR,FU))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_image_____matrice1_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_image_____matrice1_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_image_____matrice1_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_image_____matrice1_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_image_____matrice1_II,FU))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_image_____matrice1_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_image_____matrice1_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_image_____matrice1_JR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_image_____matrice1_JI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_image_____matrice1_JJ,FU))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_image_____matrice1_JK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_image_____matrice1_KR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_image_____matrice1_KI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_image_____matrice1_KJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_image_____matrice1_KK,FU))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_image_____matrice2_RR,FU))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_image_____matrice2_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_image_____matrice2_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_image_____matrice2_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_image_____matrice2_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_image_____matrice2_II,FU))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_image_____matrice2_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_image_____matrice2_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_image_____composante_J,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_image_____composante_K,FZERO))); DEFV(Common,DEFV(FonctionP,POINTERp(Iun_sur_q_dans_le_plan_hyper_image(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) DEFV(Argument,DEFV(image,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 64000.0 donne de bons resultats). */ DEFV(Argument,DEFV(image,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ CALS(Inoir(imageR)); /* L'image Resultat est nettoye ici (contrairement a la transformation q**2), */ /* a cause du test de nullite du carre du module du nombre complexe courant ; */ /* dans ce cas aucun point n'est marque... */ UN_SUR_Q_DANS_LE_PLAN_HYPER_IMAGE(BLOC(store_point_load_point(imageA ,new_X ,new_Y ,imageR ,X ,Y ); ) ); RETI(imageR); Eblock EFonctionP /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( 1 / Q ) */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ BFonctionF DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_image_____matrice1_RR,FU))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_image_____matrice1_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_image_____matrice1_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_image_____matrice1_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_image_____matrice1_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_image_____matrice1_II,FU))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_image_____matrice1_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_image_____matrice1_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_image_____matrice1_JR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_image_____matrice1_JI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_image_____matrice1_JJ,FU))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_image_____matrice1_JK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_image_____matrice1_KR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_image_____matrice1_KI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_image_____matrice1_KJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_image_____matrice1_KK,FU))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_image_____matrice2_RR,FU))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_image_____matrice2_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_image_____matrice2_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_image_____matrice2_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_image_____matrice2_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_image_____matrice2_II,FU))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_image_____matrice2_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_image_____matrice2_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_image_____composante_J,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_image_____composante_K,FZERO))); DEFV(Common,DEFV(FonctionF,POINTERF(IFun_sur_q_dans_le_plan_hyper_image(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) /* Fonction introduite le 20041225171429. */ DEFV(Argument,DEFV(imageF,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 64000.0 donne de bons resultats). */ DEFV(Argument,DEFV(imageF,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ CALS(IFinitialisation(imageR,FZERO)); /* L'image Resultat est nettoye ici (contrairement a la transformation q**2), */ /* a cause du test de nullite du carre du module du nombre complexe courant ; */ /* dans ce cas aucun point n'est marque... */ UN_SUR_Q_DANS_LE_PLAN_HYPER_IMAGE(BLOC(storeF_point_loadF_point(imageA ,new_X ,new_Y ,imageR ,X ,Y ); ) ); RETIF(imageR); Eblock EFonctionF #undef UN_SUR_Q_DANS_LE_PLAN_HYPER_IMAGE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( 1 / Q ) */ /* E N C O O R D O N N E E S D U P L A N H Y P E R - C O M P L E X E [0,1] x [0,1] x [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ #define UN_SUR_Q_DANS_LE_PLAN_HYPER_COMPLEXE(action_de_rangement) \ Bblock \ TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_COMPLEXE(BLOC(VIDE;) \ ,IZNE(HCmodule2(point_courant)) \ ,BLOC(UN_SUR_Q_DANS_PLANS_HYPER_IMAGE_OU_HYPER_COMPLEXE;) \ ,BLOC(action_de_rangement) \ ); \ Eblock \ /* Definition de la transformation conforme en coordonnees d'ecran [Xmin,Xmax]x[Ymin,Ymax]. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( 1 / Q ) */ /* E N C O O R D O N N E E S D U P L A N H Y P E R - C O M P L E X E [0,1] x [0,1] x [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ BFonctionP DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_complexe_____matrice1_RR,FU))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_complexe_____matrice1_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_complexe_____matrice1_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_complexe_____matrice1_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_complexe_____matrice1_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_complexe_____matrice1_II,FU))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_complexe_____matrice1_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_complexe_____matrice1_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_complexe_____matrice1_JR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_complexe_____matrice1_JI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_complexe_____matrice1_JJ,FU))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_complexe_____matrice1_JK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_complexe_____matrice1_KR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_complexe_____matrice1_KI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_complexe_____matrice1_KJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_complexe_____matrice1_KK,FU))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_complexe_____matrice2_RR,FU))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_complexe_____matrice2_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_complexe_____matrice2_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_complexe_____matrice2_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_complexe_____matrice2_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_complexe_____matrice2_II,FU))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_complexe_____matrice2_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_complexe_____matrice2_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_complexe_____composante_J,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_q_dans_le_plan_hyper_complexe_____composante_K,FZERO))); DEFV(Common,DEFV(FonctionP,POINTERp(Iun_sur_q_dans_le_plan_hyper_complexe(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) DEFV(Argument,DEFV(image,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 0.25 donne de bons resultats) ; voir */ /* a ce propos les commentaires de 'v $xci/un_sur_z.01$K'... */ DEFV(Argument,DEFV(image,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ CALS(Inoir(imageR)); /* L'image Resultat est nettoye ici (contrairement a la transformation q**2), */ /* a cause du test de nullite du carre du module du nombre complexe courant ; */ /* dans ce cas aucun point n'est marque... */ UN_SUR_Q_DANS_LE_PLAN_HYPER_COMPLEXE(BLOC(store_point_load_point(imageA ,fV_cDENORMALISE_OX(new_X) ,fV_cDENORMALISE_OY(new_Y) ,imageR ,X ,Y ); ) ); RETI(imageR); Eblock EFonctionP /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( 1 / Q ) */ /* E N C O O R D O N N E E S D U P L A N H Y P E R - C O M P L E X E [0,1] x [0,1] x [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ BFonctionF DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_complexe_____matrice1_RR,FU))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_complexe_____matrice1_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_complexe_____matrice1_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_complexe_____matrice1_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_complexe_____matrice1_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_complexe_____matrice1_II,FU))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_complexe_____matrice1_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_complexe_____matrice1_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_complexe_____matrice1_JR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_complexe_____matrice1_JI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_complexe_____matrice1_JJ,FU))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_complexe_____matrice1_JK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_complexe_____matrice1_KR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_complexe_____matrice1_KI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_complexe_____matrice1_KJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_complexe_____matrice1_KK,FU))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_complexe_____matrice2_RR,FU))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_complexe_____matrice2_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_complexe_____matrice2_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_complexe_____matrice2_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_complexe_____matrice2_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_complexe_____matrice2_II,FU))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_complexe_____matrice2_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_complexe_____matrice2_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_complexe_____composante_J,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_q_dans_le_plan_hyper_complexe_____composante_K,FZERO))); DEFV(Common,DEFV(FonctionF,POINTERF(IFun_sur_q_dans_le_plan_hyper_complexe(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) /* Fonction introduite le 20041225171429. */ DEFV(Argument,DEFV(imageF,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 0.25 donne de bons resultats) ; voir */ /* a ce propos les commentaires de 'v $xci/un_sur_z.01$K'... */ DEFV(Argument,DEFV(imageF,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ CALS(IFinitialisation(imageR,FZERO)); /* L'image Resultat est nettoye ici (contrairement a la transformation q**2), */ /* a cause du test de nullite du carre du module du nombre complexe courant ; */ /* dans ce cas aucun point n'est marque... */ UN_SUR_Q_DANS_LE_PLAN_HYPER_COMPLEXE(BLOC(storeF_point_loadF_point(imageA ,fV_cDENORMALISE_OX(new_X) ,fV_cDENORMALISE_OY(new_Y) ,imageR ,X ,Y ); ) ); RETIF(imageR); Eblock EFonctionF #undef UN_SUR_Q_DANS_LE_PLAN_HYPER_COMPLEXE #undef UN_SUR_Q_DANS_PLANS_HYPER_IMAGE_OU_HYPER_COMPLEXE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E H O M O G R A P H I Q U E : */ /* */ /*************************************************************************************************************************************/ #define Q_HOMOGRAPHIQUE_DANS_PLANS_HYPER_IMAGE_OU_HYPER_COMPLEXE \ Bblock \ TRANSFORMATION__Q_HOMOGRAPHIQUE(point_manoeuvre,point_courant,nombre_A,nombre_B,nombre_C,nombre_D,INDIRECT); \ /* Calcul de : */ \ /* */ \ /* A.q + B */ \ /* --------- */ \ /* C.q + D */ \ /* */ \ Eblock \ /* Definition generale de la transformation homographique dans les plans hyper-image ou */ \ /* hyper-complexe (introduite le 20070118100909). */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E H O M O G R A P H I Q U E */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ #define Q_HOMOGRAPHIQUE_DANS_LE_PLAN_HYPER_IMAGE(action_de_rangement) \ Bblock \ TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_IMAGE(BLOC(DEFV(hyper_complexe,point_manoeuvre_A); \ DEFV(hyper_complexe,point_manoeuvre_B); \ DEFV(hyper_complexe,point_manoeuvre_C); \ DEFV(hyper_complexe,point_manoeuvre_D); \ /* Nombres complexes intermediaires... */ \ ) \ ,TOUJOURS_VRAI \ ,BLOC(Q_HOMOGRAPHIQUE_DANS_PLANS_HYPER_IMAGE_OU_HYPER_COMPLEXE;) \ ,BLOC(action_de_rangement) \ ,NEUT(facteur_multiplicatif) \ ); \ Eblock \ /* Definition de la transformation conforme en coordonnees d'ecran [Xmin,Xmax]x[Ymin,Ymax]. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E H O M O G R A P H I Q U E */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ BFonctionP DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_image_____matrice1_RR,FU))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_image_____matrice1_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_image_____matrice1_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_image_____matrice1_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_image_____matrice1_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_image_____matrice1_II,FU))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_image_____matrice1_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_image_____matrice1_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_image_____matrice1_JR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_image_____matrice1_JI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_image_____matrice1_JJ,FU))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_image_____matrice1_JK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_image_____matrice1_KR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_image_____matrice1_KI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_image_____matrice1_KJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_image_____matrice1_KK,FU))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_image_____matrice2_RR,FU))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_image_____matrice2_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_image_____matrice2_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_image_____matrice2_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_image_____matrice2_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_image_____matrice2_II,FU))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_image_____matrice2_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_image_____matrice2_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_image_____composante_J,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_image_____composante_K,FZERO))); DEFV(Common,DEFV(FonctionP,POINTERp(Iq_homographique_dans_le_plan_hyper_image(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ,ARGUMENT_POINTERs(nombre_A),ARGUMENT_POINTERs(nombre_B) ,ARGUMENT_POINTERs(nombre_C),ARGUMENT_POINTERs(nombre_D) ) ) ) ) DEFV(Argument,DEFV(image,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 0.01 donne de bons resultats). */ DEFV(Argument,DEFV(image,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(hyper_complexe,POINTERs(nombre_A))); DEFV(Argument,DEFV(hyper_complexe,POINTERs(nombre_B))); DEFV(Argument,DEFV(hyper_complexe,POINTERs(nombre_C))); DEFV(Argument,DEFV(hyper_complexe,POINTERs(nombre_D))); /* Definition des quatre coefficients complexes de la transformation homographique : */ /* */ /* A.q + B */ /* --------- */ /* C.q + D */ /* */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Q_HOMOGRAPHIQUE_DANS_LE_PLAN_HYPER_IMAGE(BLOC(store_point_load_point(imageA ,new_X ,new_Y ,imageR ,X ,Y ); ) ); RETI(imageR); Eblock EFonctionP /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E H O M O G R A P H I Q U E */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ BFonctionF DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_image_____matrice1_RR,FU))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_image_____matrice1_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_image_____matrice1_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_image_____matrice1_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_image_____matrice1_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_image_____matrice1_II,FU))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_image_____matrice1_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_image_____matrice1_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_image_____matrice1_JR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_image_____matrice1_JI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_image_____matrice1_JJ,FU))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_image_____matrice1_JK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_image_____matrice1_KR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_image_____matrice1_KI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_image_____matrice1_KJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_image_____matrice1_KK,FU))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_image_____matrice2_RR,FU))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_image_____matrice2_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_image_____matrice2_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_image_____matrice2_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_image_____matrice2_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_image_____matrice2_II,FU))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_image_____matrice2_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_image_____matrice2_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_image_____composante_J,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_image_____composante_K,FZERO))); DEFV(Common,DEFV(FonctionF,POINTERF(IFq_homographique_dans_le_plan_hyper_image(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ,ARGUMENT_POINTERs(nombre_A),ARGUMENT_POINTERs(nombre_B) ,ARGUMENT_POINTERs(nombre_C),ARGUMENT_POINTERs(nombre_D) ) ) ) ) /* Fonction introduite le 20041228084443. */ DEFV(Argument,DEFV(imageF,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 0.01 donne de bons resultats). */ DEFV(Argument,DEFV(imageF,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(hyper_complexe,POINTERs(nombre_A))); DEFV(Argument,DEFV(hyper_complexe,POINTERs(nombre_B))); DEFV(Argument,DEFV(hyper_complexe,POINTERs(nombre_C))); DEFV(Argument,DEFV(hyper_complexe,POINTERs(nombre_D))); /* Definition des quatre coefficients complexes de la transformation homographique : */ /* */ /* A.q + B */ /* --------- */ /* C.q + D */ /* */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Q_HOMOGRAPHIQUE_DANS_LE_PLAN_HYPER_IMAGE(BLOC(storeF_point_loadF_point(imageA ,new_X ,new_Y ,imageR ,X ,Y ); ) ); RETIF(imageR); Eblock EFonctionF #undef Q_HOMOGRAPHIQUE_DANS_LE_PLAN_HYPER_IMAGE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E H O M O G R A P H I Q U E */ /* E N C O O R D O N N E E S D U P L A N H Y P E R - C O M P L E X E [0,1] x [0,1] x [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ #define Q_HOMOGRAPHIQUE_DANS_LE_PLAN_HYPER_COMPLEXE(action_de_rangement) \ Bblock \ TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_COMPLEXE(BLOC(DEFV(hyper_complexe,point_manoeuvre_A); \ DEFV(hyper_complexe,point_manoeuvre_B); \ DEFV(hyper_complexe,point_manoeuvre_C); \ DEFV(hyper_complexe,point_manoeuvre_D); \ /* Nombres complexes intermediaires... */ \ ) \ ,TOUJOURS_VRAI \ ,BLOC(Q_HOMOGRAPHIQUE_DANS_PLANS_HYPER_IMAGE_OU_HYPER_COMPLEXE;) \ ,BLOC(action_de_rangement) \ ); \ Eblock \ /* Definition de la transformation conforme en coordonnees d'ecran [Xmin,Xmax]x[Ymin,Ymax]. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E H O M O G R A P H I Q U E */ /* E N C O O R D O N N E E S D U P L A N H Y P E R - C O M P L E X E [0,1] x [0,1] x [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ BFonctionP DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_complexe_____matrice1_RR,FU))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_complexe_____matrice1_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_complexe_____matrice1_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_complexe_____matrice1_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_complexe_____matrice1_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_complexe_____matrice1_II,FU))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_complexe_____matrice1_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_complexe_____matrice1_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_complexe_____matrice1_JR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_complexe_____matrice1_JI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_complexe_____matrice1_JJ,FU))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_complexe_____matrice1_JK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_complexe_____matrice1_KR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_complexe_____matrice1_KI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_complexe_____matrice1_KJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_complexe_____matrice1_KK,FU))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_complexe_____matrice2_RR,FU))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_complexe_____matrice2_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_complexe_____matrice2_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_complexe_____matrice2_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_complexe_____matrice2_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_complexe_____matrice2_II,FU))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_complexe_____matrice2_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_complexe_____matrice2_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_complexe_____composante_J,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_homographique_dans_le_plan_hyper_complexe_____composante_K,FZERO))); DEFV(Common,DEFV(FonctionP,POINTERp(Iq_homographique_dans_le_plan_hyper_complexe(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ,ARGUMENT_POINTERs(nombre_A) ,ARGUMENT_POINTERs(nombre_B) ,ARGUMENT_POINTERs(nombre_C) ,ARGUMENT_POINTERs(nombre_D) ) ) ) ) DEFV(Argument,DEFV(image,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 5.0 donne de bons resultats) ; voir */ /* a ce propos les commentaires de 'v $xci/z_homogra.01$K'... */ DEFV(Argument,DEFV(image,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(hyper_complexe,POINTERs(nombre_A))); DEFV(Argument,DEFV(hyper_complexe,POINTERs(nombre_B))); DEFV(Argument,DEFV(hyper_complexe,POINTERs(nombre_C))); DEFV(Argument,DEFV(hyper_complexe,POINTERs(nombre_D))); /* Definition des quatre coefficients complexes de la transformation homographique : */ /* */ /* A.q + B */ /* --------- */ /* C.q + D */ /* */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Q_HOMOGRAPHIQUE_DANS_LE_PLAN_HYPER_COMPLEXE(BLOC(store_point_load_point(imageA ,fV_cDENORMALISE_OX(new_X) ,fV_cDENORMALISE_OY(new_Y) ,imageR ,X ,Y ); ) ); RETI(imageR); Eblock EFonctionP /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E H O M O G R A P H I Q U E */ /* E N C O O R D O N N E E S D U P L A N H Y P E R - C O M P L E X E [0,1] x [0,1] x [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ BFonctionF DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_complexe_____matrice1_RR,FU))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_complexe_____matrice1_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_complexe_____matrice1_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_complexe_____matrice1_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_complexe_____matrice1_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_complexe_____matrice1_II,FU))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_complexe_____matrice1_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_complexe_____matrice1_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_complexe_____matrice1_JR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_complexe_____matrice1_JI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_complexe_____matrice1_JJ,FU))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_complexe_____matrice1_JK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_complexe_____matrice1_KR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_complexe_____matrice1_KI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_complexe_____matrice1_KJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_complexe_____matrice1_KK,FU))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_complexe_____matrice2_RR,FU))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_complexe_____matrice2_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_complexe_____matrice2_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_complexe_____matrice2_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_complexe_____matrice2_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_complexe_____matrice2_II,FU))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_complexe_____matrice2_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_complexe_____matrice2_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_complexe_____composante_J,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_homographique_dans_le_plan_hyper_complexe_____composante_K,FZERO))); DEFV(Common,DEFV(FonctionF,POINTERF(IFq_homographique_dans_le_plan_hyper_complexe(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ,ARGUMENT_POINTERs(nombre_A) ,ARGUMENT_POINTERs(nombre_B) ,ARGUMENT_POINTERs(nombre_C) ,ARGUMENT_POINTERs(nombre_D) ) ) ) ) /* Fonction introduite le 20041228084443. */ DEFV(Argument,DEFV(imageF,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 5.0 donne de bons resultats) ; voir */ /* a ce propos les commentaires de 'v $xci/z_homogra.01$K'... */ DEFV(Argument,DEFV(imageF,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(hyper_complexe,POINTERs(nombre_A))); DEFV(Argument,DEFV(hyper_complexe,POINTERs(nombre_B))); DEFV(Argument,DEFV(hyper_complexe,POINTERs(nombre_C))); DEFV(Argument,DEFV(hyper_complexe,POINTERs(nombre_D))); /* Definition des quatre coefficients complexes de la transformation homographique : */ /* */ /* A.q + B */ /* --------- */ /* C.q + D */ /* */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Q_HOMOGRAPHIQUE_DANS_LE_PLAN_HYPER_COMPLEXE(BLOC(storeF_point_loadF_point(imageA ,fV_cDENORMALISE_OX(new_X) ,fV_cDENORMALISE_OY(new_Y) ,imageR ,X ,Y ); ) ); RETIF(imageR); Eblock EFonctionF #undef Q_HOMOGRAPHIQUE_DANS_LE_PLAN_HYPER_COMPLEXE #undef Q_HOMOGRAPHIQUE_DANS_PLANS_HYPER_IMAGE_OU_HYPER_COMPLEXE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N H Y P E R B O L I Q U E 1 G E N E R A L I S E E : */ /* */ /*************************************************************************************************************************************/ #define Q_HYPERBOLIQUE_1_DANS_PLANS_HYPER_IMAGE_OU_HYPER_COMPLEXE \ Bblock \ DEFV(hyper_complexe_etendu,point_courant_etendu); \ DEFV(hyper_complexe_etendu,point_manoeuvre_etendu); \ \ HCextension_directe(point_courant_etendu,point_courant); \ \ EGAL(HCHS_Rho(point_manoeuvre_etendu) \ ,FfABSO(LIN2(NomDeLaFonctionCourante QD@@__ _____ponderation_TAHX \ ,TAHX(AXPB(NomDeLaFonctionCourante QD@@__ _____A_TAHX_du_module \ ,HCHS_Rho(point_courant_etendu) \ ,NomDeLaFonctionCourante QD@@__ _____B_TAHX_du_module \ ) \ ) \ ,NomDeLaFonctionCourante QD@@__ _____ponderation_SINX \ ,SINX(AXPB(NomDeLaFonctionCourante QD@@__ _____A_SINX_du_module \ ,HCHS_Rho(point_courant_etendu) \ ,NomDeLaFonctionCourante QD@@__ _____B_SINX_du_module \ ) \ ) \ ,NomDeLaFonctionCourante QD@@__ _____translation_du_module \ ) \ ) \ ); \ /* Par l'usage de 'TAHX(...)', le module de 'point_courant_etendu', quelle que soit sa */ \ /* valeur, est ramene dans [0,1['... */ \ /* */ \ /* Le 20111230170628 la fonction 'FfABSO(...)' fut introduite car, en effet, un module */ \ /* ne peut etre que positif ou nul... */ \ EGAL(HCHS_Theta(point_manoeuvre_etendu),NEUT(HCHS_Theta(point_courant_etendu))); \ EGAL(HCHS_Phi(point_manoeuvre_etendu),NEUT(HCHS_Phi(point_courant_etendu))); \ EGAL(HCHS_Alpha(point_manoeuvre_etendu),NEUT(HCHS_Alpha(point_courant_etendu))); \ \ HCextension_inverse(point_manoeuvre,point_manoeuvre_etendu); \ Eblock \ /* Definition generale de la transformation 'q' hyperbolique dans les plans image ou */ \ /* complexe (introduite le 20111229172827). */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A T R A N S F O R M A T I O N H Y P E R B O L I Q U E 1 G E N E R A L I S E E */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ #define Q_HYPERBOLIQUE_1_DANS_LE_PLAN_HYPER_IMAGE(action_de_rangement) \ Bblock \ TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_IMAGE(BLOC(VIDE;) \ ,TOUJOURS_VRAI \ ,BLOC(Q_HYPERBOLIQUE_1_DANS_PLANS_HYPER_IMAGE_OU_HYPER_COMPLEXE;) \ ,BLOC(action_de_rangement) \ ,MUL2(facteur_multiplicatif,NEUT(facteur_correctif)) \ ); \ Eblock \ /* Definition de la transformation en coordonnees d'ecran [Xmin,Xmax]x[Ymin,Ymax]. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N H Y P E R B O L I Q U E 1 G E N E R A L I S E E */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ BFonctionP DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_image_____matrice1_RR,FU))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_image_____matrice1_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_image_____matrice1_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_image_____matrice1_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_image_____matrice1_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_image_____matrice1_II,FU))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_image_____matrice1_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_image_____matrice1_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_image_____matrice1_JR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_image_____matrice1_JI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_image_____matrice1_JJ,FU))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_image_____matrice1_JK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_image_____matrice1_KR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_image_____matrice1_KI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_image_____matrice1_KJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_image_____matrice1_KK,FU))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_image_____matrice2_RR,FU))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_image_____matrice2_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_image_____matrice2_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_image_____matrice2_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_image_____matrice2_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_image_____matrice2_II,FU))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_image_____matrice2_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_image_____matrice2_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_image_____composante_J,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_image_____composante_K,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_image_____ponderation_TAHX,FU))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_image_____A_TAHX_du_module,FU))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_image_____B_TAHX_du_module,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_image_____ponderation_SINX,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_image_____A_SINX_du_module,FU))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_image_____B_SINX_du_module,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_image_____translation_du_module,FZERO))); DEFV(Common,DEFV(FonctionP,POINTERp(Iq_hyperbolique_1_dans_le_plan_hyper_image(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) /* Fonction introduite le 20111229172827. */ DEFV(Argument,DEFV(image,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 0.01 donne de bons resultats). */ DEFV(Argument,DEFV(image,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Q_HYPERBOLIQUE_1_DANS_LE_PLAN_HYPER_IMAGE(BLOC(store_point_load_point(imageA ,new_X ,new_Y ,imageR ,X ,Y ); ) ); RETI(imageR); Eblock EFonctionP /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N H Y P E R B O L I Q U E 1 G E N E R A L I S E E */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ BFonctionF DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_image_____matrice1_RR,FU))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_image_____matrice1_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_image_____matrice1_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_image_____matrice1_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_image_____matrice1_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_image_____matrice1_II,FU))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_image_____matrice1_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_image_____matrice1_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_image_____matrice1_JR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_image_____matrice1_JI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_image_____matrice1_JJ,FU))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_image_____matrice1_JK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_image_____matrice1_KR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_image_____matrice1_KI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_image_____matrice1_KJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_image_____matrice1_KK,FU))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_image_____matrice2_RR,FU))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_image_____matrice2_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_image_____matrice2_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_image_____matrice2_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_image_____matrice2_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_image_____matrice2_II,FU))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_image_____matrice2_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_image_____matrice2_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_image_____composante_J,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_image_____composante_K,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_image_____ponderation_TAHX,FU))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_image_____A_TAHX_du_module,FU))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_image_____B_TAHX_du_module,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_image_____ponderation_SINX,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_image_____A_SINX_du_module,FU))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_image_____B_SINX_du_module,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_image_____translation_du_module,FZERO))); DEFV(Common,DEFV(FonctionF,POINTERF(IFq_hyperbolique_1_dans_le_plan_hyper_image(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) /* Fonction introduite le 20111229172827. */ DEFV(Argument,DEFV(imageF,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 0.01 donne de bons resultats). */ DEFV(Argument,DEFV(imageF,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Q_HYPERBOLIQUE_1_DANS_LE_PLAN_HYPER_IMAGE(BLOC(storeF_point_loadF_point(imageA ,new_X ,new_Y ,imageR ,X ,Y ); ) ); RETIF(imageR); Eblock EFonctionF #undef Q_HYPERBOLIQUE_1_DANS_LE_PLAN_HYPER_IMAGE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A T R A N S F O R M A T I O N H Y P E R B O L I Q U E 1 G E N E R A L I S E E */ /* E N C O O R D O N N E E S D U P L A N C O M P L E X E [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ #define Q_HYPERBOLIQUE_1_DANS_LE_PLAN_HYPER_COMPLEXE(action_de_rangement) \ Bblock \ TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_COMPLEXE \ (BLOC(VIDE;) \ ,TOUJOURS_VRAI \ ,BLOC(Q_HYPERBOLIQUE_1_DANS_PLANS_HYPER_IMAGE_OU_HYPER_COMPLEXE;) \ ,BLOC(action_de_rangement) \ ); \ Eblock \ /* Definition de la transformation en coordonnees d'ecran [Xmin,Xmax]x[Ymin,Ymax]. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N H Y P E R B O L I Q U E 1 G E N E R A L I S E E */ /* E N C O O R D O N N E E S D U P L A N C O M P L E X E [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ BFonctionP DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice1_RR,FU))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice1_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice1_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice1_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice1_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice1_II,FU))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice1_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice1_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice1_JR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice1_JI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice1_JJ,FU))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice1_JK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice1_KR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice1_KI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice1_KJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice1_KK,FU))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice2_RR,FU))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice2_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice2_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice2_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice2_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice2_II,FU))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice2_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice2_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_complexe_____composante_J,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_complexe_____composante_K,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_complexe_____ponderation_TAHX,FU))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_complexe_____A_TAHX_du_module,FU))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_complexe_____B_TAHX_du_module,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_complexe_____ponderation_SINX,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_complexe_____A_SINX_du_module,FU))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_complexe_____B_SINX_du_module,FZERO))); DEFV(Common,DEFV(Float,SINT(Iq_hyperbolique_1_dans_le_plan_hyper_complexe_____translation_du_module,FZERO))); DEFV(Common,DEFV(FonctionP,POINTERp(Iq_hyperbolique_1_dans_le_plan_hyper_complexe(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) /* Fonction introduite le 20111229172827. */ DEFV(Argument,DEFV(image,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K'. */ DEFV(Argument,DEFV(image,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Q_HYPERBOLIQUE_1_DANS_LE_PLAN_HYPER_COMPLEXE(BLOC(store_point_load_point(imageA ,fV_cDENORMALISE_OX(new_X) ,fV_cDENORMALISE_OY(new_Y) ,imageR ,X ,Y ); ) ); RETI(imageR); Eblock EFonctionP /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N H Y P E R B O L I Q U E 1 G E N E R A L I S E E */ /* E N C O O R D O N N E E S D U P L A N C O M P L E X E [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ BFonctionF DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice1_RR,FU))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice1_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice1_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice1_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice1_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice1_II,FU))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice1_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice1_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice1_JR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice1_JI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice1_JJ,FU))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice1_JK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice1_KR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice1_KI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice1_KJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice1_KK,FU))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice2_RR,FU))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice2_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice2_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice2_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice2_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice2_II,FU))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice2_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_complexe_____matrice2_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_complexe_____composante_J,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_complexe_____composante_K,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_complexe_____ponderation_TAHX,FU))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_complexe_____A_TAHX_du_module,FU))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_complexe_____B_TAHX_du_module,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_complexe_____ponderation_SINX,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_complexe_____A_SINX_du_module,FU))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_complexe_____B_SINX_du_module,FZERO))); DEFV(Common,DEFV(Float,SINT(IFq_hyperbolique_1_dans_le_plan_hyper_complexe_____translation_du_module,FZERO))); DEFV(Common,DEFV(FonctionF,POINTERF(IFq_hyperbolique_1_dans_le_plan_hyper_complexe(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) /* Fonction introduite le 20111229172827. */ DEFV(Argument,DEFV(imageF,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K'. */ DEFV(Argument,DEFV(imageF,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Q_HYPERBOLIQUE_1_DANS_LE_PLAN_HYPER_COMPLEXE(BLOC(storeF_point_loadF_point(imageA ,fV_cDENORMALISE_OX(new_X) ,fV_cDENORMALISE_OY(new_Y) ,imageR ,X ,Y ); ) ); RETIF(imageR); Eblock EFonctionF #undef Q_HYPERBOLIQUE_1_DANS_LE_PLAN_HYPER_COMPLEXE #undef Q_HYPERBOLIQUE_1_DANS_PLANS_HYPER_IMAGE_OU_HYPER_COMPLEXE #undef TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_COMPLEXE #undef TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_IMAGE #undef NomFonctionCourant #undef A_translation__dX_____ #undef A_translation__dY_____ #undef R_translation__dX_____ #undef R_translation__dY_____ _______________________________________________________________________________________________________________________________________ _______________________________________________________________________________________________________________________________________ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* C O N T R O L E D E L ' A R I T H M E T I Q U E E T E N D U E */ /* L O R S D E C A L C U L S S U R L E S N O M B R E S H Y P E R - H Y P E R - C O M P L E X E S : */ /* */ /*************************************************************************************************************************************/ #ifdef FAIRE_EVENTUELLEMENT_DE_L_ARITHMETIQUE_ETENDUE_DANS_LES_NOMBRES_HYPER_HYPER_COMPLEXES DEFV(Common,DEFV(Logical,_______VERSION__ximcf_conformes_____ARITHMETIQUE_ETENDUE_DANS_LES_NOMBRES_HYPER_HYPER_COMPLEXES)); #Aifdef FAIRE_EVENTUELLEMENT_DE_L_ARITHMETIQUE_ETENDUE_DANS_LES_NOMBRES_HYPER_HYPER_COMPLEXES DEFV(Common,DEFV(Logical,_______VERSION__ximcf_conformes_____ARITHMETIQUE_DE_BASE_DANS_LES_NOMBRES_HYPER_HYPER_COMPLEXES)); #Eifdef FAIRE_EVENTUELLEMENT_DE_L_ARITHMETIQUE_ETENDUE_DANS_LES_NOMBRES_HYPER_HYPER_COMPLEXES _______________________________________________________________________________________________________________________________________ _______________________________________________________________________________________________________________________________________ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N G E N E R A L E D E S T R A N S F O R M A T I O N S C O N F O R M E S */ /* D A N S L E S P L A N S H Y P E R - H Y P E R - I M A G E E T H Y P E R - H Y P E R - C O M P L E X E */ /* R E S P E C T I V E M E N T : */ /* */ /*************************************************************************************************************************************/ DEFV(Common,DEFV(Int,ZINT(TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_IMAGE_____Xmin_reference,k___Xmin))); DEFV(Common,DEFV(Int,ZINT(TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_IMAGE_____Xmax_reference,k___Xmax))); DEFV(Common,DEFV(Int,ZINT(TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_IMAGE_____Ymin_reference,k___Ymin))); DEFV(Common,DEFV(Int,ZINT(TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_IMAGE_____Ymax_reference,k___Ymax))); /* Definition d'un format d'image dit "reference" utilise pour calculer un facteur */ /* homothetique multiplicatif. */ /* */ /* ATTENTION : le format de reference est le format 'Std' et non pas le format 'Pal'... */ /* */ /* ATTENTION : je note le 20170322102617 l'existence de six nouvelles variables dans */ /* 'v $xiii/Images$STR _reference.k___'. Mais celles-ci ne peuvent remplacer les quatre */ /* qui sont definies ci-dessus et ce pour de possibles problemes de compatibilite (au cas */ /* ou, par exemple, les variables 'v $xiii/Images$STR _reference.k___' passaient du format */ /* 'Std' au format 'Pal'...). */ DEFV(Common,DEFV(Logical,ZINT(TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_IMAGE_____facteur_multiplicatif_homothetique,FAUX))); /* Afin de savoir s'il faut que les facteurs soient homothetiques... */ DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_COMPLEXE_____A_facteur_homothetie_X,FU))); DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_COMPLEXE_____A_facteur_homothetie_Y,FU))); /* Parametres destines a 'TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_COMPLEXE(...)' */ /* permettant de faire une homothetie sur le domaine de calcul (via 'point_courant') et */ /* introduits le 20120527183514... */ DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_HYPER_____R_facteur_homothetie_X,FU))); DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_HYPER_____R_facteur_homothetie_Y,FU))); /* Parametres destines a faire une homothetie (via 'point_manoeuvre') introduits le */ /* 20120527184309... */ #define A_translation__dX_____ \ AXPB(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_HYPER_____A_translation_AX \ ,ASI1(A_translation,dx) \ ,TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_HYPER_____A_translation_BX \ ) #define A_translation__dY_____ \ AXPB(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_HYPER_____A_translation_AY \ ,ASI1(A_translation,dy) \ ,TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_HYPER_____A_translation_BY \ ) DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_HYPER_____A_translation_AX,FU))); DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_HYPER_____A_translation_BX,FZERO))); DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_HYPER_____A_translation_AY,FU))); DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_HYPER_____A_translation_BY,FZERO))); #define R_translation__dX_____ \ AXPB(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_HYPER_____R_translation_AX \ ,ASI1(R_translation,dx) \ ,TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_HYPER_____R_translation_BX \ ) #define R_translation__dY_____ \ AXPB(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_HYPER_____R_translation_AY \ ,ASI1(R_translation,dy) \ ,TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_HYPER_____R_translation_BY \ ) DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_HYPER_____R_translation_AX,FU))); DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_HYPER_____R_translation_BX,FZERO))); DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_HYPER_____R_translation_AY,FU))); DEFV(Common,DEFV(Float,ZINT(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_HYPER_____R_translation_BY,FZERO))); /* Definition des facteurs de corrections des translations 'A' et 'R' (ceci fut introduit */ /* le 20111228152543... */ #define TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_IMAGE_____Xmin_ref \ TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_IMAGE_____Xmin_reference #define TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_IMAGE_____Xmax_ref \ TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_IMAGE_____Xmax_reference #define TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_IMAGE_____Ymin_ref \ TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_IMAGE_____Ymin_reference #define TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_IMAGE_____Ymax_ref \ TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_IMAGE_____Ymax_reference /* Afin de raccourcir quelques lignes qui suivent... */ #define NomFonctionCourant \ NomDeLaFonctionCourante \ /* Afin de raccourcir les lignes 'LIN8(...)' suivantes... */ #define TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_IMAGE(variables_specifiques,condition,transformation,action_rangement,fme) \ Bblock \ DEFV(Float,INIT(facteur_multiplicatif_effectif,facteur_multiplicatif)); \ /* Facteur multiplicatif effectif destine a rendre ce facteur */ \ /* "homothetique" ce qui permettra alors d'obtenir le meme resultat quel que soit la */ \ /* resolution de l'image (par exemple 'Puq' et 'Pqu'...). Ceci n'a evidemment de sens */ \ /* que pour 'TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_IMAGE(...)' et n'en a pas pour */ \ /* 'TRANSFORMATION_CONFORME_DANS_LE_PLAN_COMPLEXE(...)' puisque les coordonnees {X,Y} */ \ /* sont alors normalisees dans [0,1], cette normalisation etant evidemment independante */ \ /* de resolution de l'image... */ \ \ Test(IL_FAUT(TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_IMAGE_____facteur_multiplicatif_homothetique)) \ Bblock \ DEFV(Float,INIT(facteur_correctif \ ,DIVI(RACX(FLOT(MUL2(DIMENSION \ (TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_IMAGE_____Xmin_ref \ ,TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_IMAGE_____Xmax_ref \ ) \ ,DIMENSION \ (TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_IMAGE_____Ymin_ref \ ,TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_IMAGE_____Ymax_ref \ ) \ ) \ ) \ ) \ ,RACX(FLOT(dimXY)) \ ) \ ) \ ); \ EGAL(facteur_multiplicatif_effectif,fme); \ /* Ainsi, le facteur mutiplicatif est rendu independant de la resolution de l'image par */ \ /* rapport a la resolution dite "reference"... */ \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ \ begin_image \ Bblock \ DEFV(Float,INIT(composante_R,FLOT__UNDEF)); \ DEFV(Float,INIT(composante_I,FLOT__UNDEF)); \ /* Coordonnees translatees... */ \ DEFV(hyper_hyper_complexe,point_courant); \ /* Point hyper-hyper-complexe courant. */ \ DEFV(hyper_hyper_complexe,point_manoeuvre); \ /* Point hyper-hyper-complexe resultat de la transformation. */ \ BLOC(variables_specifiques); \ /* Variables specifiques eventuellement... */ \ \ EGAL(composante_R \ ,ADD2(FLOT(X) \ ,F__lDENORMALISE_OX(A_translation__dX_____) \ ) \ ); \ EGAL(composante_I \ ,ADD2(FLOT(Y) \ ,F__lDENORMALISE_OY(A_translation__dY_____) \ ) \ ); \ \ HHCinitialisation(point_courant \ ,LIZ8(NomFonctionCourant QD@@__ _____matrice1_RR,composante_R \ ,NomFonctionCourant QD@@__ _____matrice1_RI,composante_I \ ,NomFonctionCourant QD@@__ _____matrice1_RJ,NomFonctionCourant QD@@__ _____composante_J \ ,NomFonctionCourant QD@@__ _____matrice1_RK,NomFonctionCourant QD@@__ _____composante_K \ ,NomFonctionCourant QD@@__ _____matrice1_RS,NomFonctionCourant QD@@__ _____composante_S \ ,NomFonctionCourant QD@@__ _____matrice1_RT,NomFonctionCourant QD@@__ _____composante_T \ ,NomFonctionCourant QD@@__ _____matrice1_RU,NomFonctionCourant QD@@__ _____composante_U \ ,NomFonctionCourant QD@@__ _____matrice1_RV,NomFonctionCourant QD@@__ _____composante_V \ ) \ ,LIZ8(NomFonctionCourant QD@@__ _____matrice1_IR,composante_R \ ,NomFonctionCourant QD@@__ _____matrice1_II,composante_I \ ,NomFonctionCourant QD@@__ _____matrice1_IJ,NomFonctionCourant QD@@__ _____composante_J \ ,NomFonctionCourant QD@@__ _____matrice1_IK,NomFonctionCourant QD@@__ _____composante_K \ ,NomFonctionCourant QD@@__ _____matrice1_IS,NomFonctionCourant QD@@__ _____composante_S \ ,NomFonctionCourant QD@@__ _____matrice1_IT,NomFonctionCourant QD@@__ _____composante_T \ ,NomFonctionCourant QD@@__ _____matrice1_IU,NomFonctionCourant QD@@__ _____composante_U \ ,NomFonctionCourant QD@@__ _____matrice1_IV,NomFonctionCourant QD@@__ _____composante_V \ ) \ ,LIZ8(NomFonctionCourant QD@@__ _____matrice1_JR,composante_R \ ,NomFonctionCourant QD@@__ _____matrice1_JI,composante_I \ ,NomFonctionCourant QD@@__ _____matrice1_JJ,NomFonctionCourant QD@@__ _____composante_J \ ,NomFonctionCourant QD@@__ _____matrice1_JK,NomFonctionCourant QD@@__ _____composante_K \ ,NomFonctionCourant QD@@__ _____matrice1_JS,NomFonctionCourant QD@@__ _____composante_S \ ,NomFonctionCourant QD@@__ _____matrice1_JT,NomFonctionCourant QD@@__ _____composante_T \ ,NomFonctionCourant QD@@__ _____matrice1_JU,NomFonctionCourant QD@@__ _____composante_U \ ,NomFonctionCourant QD@@__ _____matrice1_JV,NomFonctionCourant QD@@__ _____composante_V \ ) \ ,LIZ8(NomFonctionCourant QD@@__ _____matrice1_KR,composante_R \ ,NomFonctionCourant QD@@__ _____matrice1_KI,composante_I \ ,NomFonctionCourant QD@@__ _____matrice1_KJ,NomFonctionCourant QD@@__ _____composante_J \ ,NomFonctionCourant QD@@__ _____matrice1_KK,NomFonctionCourant QD@@__ _____composante_K \ ,NomFonctionCourant QD@@__ _____matrice1_KS,NomFonctionCourant QD@@__ _____composante_S \ ,NomFonctionCourant QD@@__ _____matrice1_KT,NomFonctionCourant QD@@__ _____composante_T \ ,NomFonctionCourant QD@@__ _____matrice1_KU,NomFonctionCourant QD@@__ _____composante_U \ ,NomFonctionCourant QD@@__ _____matrice1_KV,NomFonctionCourant QD@@__ _____composante_V \ ) \ ,LIZ8(NomFonctionCourant QD@@__ _____matrice1_SR,composante_R \ ,NomFonctionCourant QD@@__ _____matrice1_SI,composante_I \ ,NomFonctionCourant QD@@__ _____matrice1_SJ,NomFonctionCourant QD@@__ _____composante_J \ ,NomFonctionCourant QD@@__ _____matrice1_SK,NomFonctionCourant QD@@__ _____composante_K \ ,NomFonctionCourant QD@@__ _____matrice1_SS,NomFonctionCourant QD@@__ _____composante_S \ ,NomFonctionCourant QD@@__ _____matrice1_ST,NomFonctionCourant QD@@__ _____composante_T \ ,NomFonctionCourant QD@@__ _____matrice1_SU,NomFonctionCourant QD@@__ _____composante_U \ ,NomFonctionCourant QD@@__ _____matrice1_SV,NomFonctionCourant QD@@__ _____composante_V \ ) \ ,LIZ8(NomFonctionCourant QD@@__ _____matrice1_TR,composante_R \ ,NomFonctionCourant QD@@__ _____matrice1_TI,composante_I \ ,NomFonctionCourant QD@@__ _____matrice1_TJ,NomFonctionCourant QD@@__ _____composante_J \ ,NomFonctionCourant QD@@__ _____matrice1_TK,NomFonctionCourant QD@@__ _____composante_K \ ,NomFonctionCourant QD@@__ _____matrice1_TS,NomFonctionCourant QD@@__ _____composante_S \ ,NomFonctionCourant QD@@__ _____matrice1_TT,NomFonctionCourant QD@@__ _____composante_T \ ,NomFonctionCourant QD@@__ _____matrice1_TU,NomFonctionCourant QD@@__ _____composante_U \ ,NomFonctionCourant QD@@__ _____matrice1_TV,NomFonctionCourant QD@@__ _____composante_V \ ) \ ,LIZ8(NomFonctionCourant QD@@__ _____matrice1_UR,composante_R \ ,NomFonctionCourant QD@@__ _____matrice1_UI,composante_I \ ,NomFonctionCourant QD@@__ _____matrice1_UJ,NomFonctionCourant QD@@__ _____composante_J \ ,NomFonctionCourant QD@@__ _____matrice1_UK,NomFonctionCourant QD@@__ _____composante_K \ ,NomFonctionCourant QD@@__ _____matrice1_US,NomFonctionCourant QD@@__ _____composante_S \ ,NomFonctionCourant QD@@__ _____matrice1_UT,NomFonctionCourant QD@@__ _____composante_T \ ,NomFonctionCourant QD@@__ _____matrice1_UU,NomFonctionCourant QD@@__ _____composante_U \ ,NomFonctionCourant QD@@__ _____matrice1_UV,NomFonctionCourant QD@@__ _____composante_V \ ) \ ,LIZ8(NomFonctionCourant QD@@__ _____matrice1_VR,composante_R \ ,NomFonctionCourant QD@@__ _____matrice1_VI,composante_I \ ,NomFonctionCourant QD@@__ _____matrice1_VJ,NomFonctionCourant QD@@__ _____composante_J \ ,NomFonctionCourant QD@@__ _____matrice1_VK,NomFonctionCourant QD@@__ _____composante_K \ ,NomFonctionCourant QD@@__ _____matrice1_VS,NomFonctionCourant QD@@__ _____composante_S \ ,NomFonctionCourant QD@@__ _____matrice1_VT,NomFonctionCourant QD@@__ _____composante_T \ ,NomFonctionCourant QD@@__ _____matrice1_VU,NomFonctionCourant QD@@__ _____composante_U \ ,NomFonctionCourant QD@@__ _____matrice1_VV,NomFonctionCourant QD@@__ _____composante_V \ ) \ ); \ /* Le "point_courant" est associe au point courant {X,Y} sur le maillage de l'image */ \ /* de facon que : */ \ /* */ \ /* point_courant = {X,Y,0,0,0,0,0,0} */ \ /* */ \ /* par defaut (voir la valeur des ponderations des 'LIN8(...)'). Les composantes */ \ /* {composante_J,composante_K,composante_Scomposante_T,composante_U,composante_V} */ \ /* sont arbitraires et nulles par defaut... */ \ \ Test(condition) \ Bblock \ DEFV(Int,INIT(new_X,UNDEF)); \ /* Nouvelle coordonnee horizontale apres transformation, */ \ DEFV(Int,INIT(new_Y,UNDEF)); \ /* Nouvelle coordonnee verticale apres transformation, */ \ \ BLOC(transformation); \ /* Transformation du nombre hyper-hyper-complexe courant. */ \ \ EGAL(new_X \ ,ADD2(VINTE(MUL3(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_HYPER_____R_facteur_homothetie_X \ ,facteur_multiplicatif_effectif \ ,LIZ8(NomFonctionCourant QD@@__ _____matrice2_RR,HHReelle(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_RI,HHImaginaire(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_RJ,HHJmaginaire(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_RK,HHKmaginaire(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_RS,HHSmaginaire(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_RT,HHTmaginaire(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_RU,HHUmaginaire(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_RV,HHVmaginaire(point_manoeuvre) \ ) \ ) \ ) \ ,_lDENORMALISE_OX(R_translation__dX_____) \ ) \ ); \ EGAL(new_Y \ ,ADD2(VINTE(MUL3(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_HYPER_____R_facteur_homothetie_Y \ ,facteur_multiplicatif_effectif \ ,LIZ8(NomFonctionCourant QD@@__ _____matrice2_IR,HHReelle(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_II,HHImaginaire(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_IJ,HHJmaginaire(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_IK,HHKmaginaire(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_IS,HHSmaginaire(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_IT,HHTmaginaire(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_IU,HHUmaginaire(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_IV,HHVmaginaire(point_manoeuvre) \ ) \ ) \ ) \ ,_lDENORMALISE_OY(R_translation__dY_____) \ ) \ ); \ /* Calcul des coordonnees transformees dans le plan image en recuperant, par defaut (voir */ \ /* la valeur des ponderations des 'LIN8(...)'), les composantes {R,I,J,K,S,T,U,V} de */ \ /* l'octonion 'point_manoeuvre'... */ \ \ BLOC(action_rangement); \ /* Et enfin, deplacement du point courant... */ \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock \ end_image \ Eblock \ /* Definition de la transformation conforme en coordonnees d'ecran [Xmin,Xmax]x[Ymin,Ymax]. */ #define TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_COMPLEXE(variables_specifiques,condition,transformation,action_rangement) \ Bblock \ begin_image \ Bblock \ DEFV(Float,INIT(new_X,FLOT__UNDEF)); \ /* Nouvelle coordonnee horizontale apres transformation, */ \ DEFV(Float,INIT(new_Y,FLOT__UNDEF)); \ /* Nouvelle coordonnee verticale apres transformation, */ \ DEFV(Float,INIT(composante_R,FLOT__UNDEF)); \ DEFV(Float,INIT(composante_I,FLOT__UNDEF)); \ /* Coordonnees translatees... */ \ DEFV(hyper_hyper_complexe,point_courant); \ /* Point hyper-hyper-complexe courant. */ \ DEFV(hyper_hyper_complexe,point_manoeuvre); \ /* Point hyper-hyper-complexe resultat de la transformation. */ \ BLOC(variables_specifiques); \ /* Variables specifiques eventuellement... */ \ \ EGAL(composante_R \ ,AXPB(TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_COMPLEXE_____A_facteur_homothetie_X \ ,SUPER_cNORMALISE_OX(X) \ ,A_translation__dX_____ \ ) \ ); \ EGAL(composante_I \ ,AXPB(TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_COMPLEXE_____A_facteur_homothetie_Y \ ,SUPER_cNORMALISE_OY(Y) \ ,A_translation__dY_____ \ ) \ ); \ \ HHCinitialisation(point_courant \ ,LIZ8(NomFonctionCourant QD@@__ _____matrice1_RR,composante_R \ ,NomFonctionCourant QD@@__ _____matrice1_RI,composante_I \ ,NomFonctionCourant QD@@__ _____matrice1_RJ,NomFonctionCourant QD@@__ _____composante_J \ ,NomFonctionCourant QD@@__ _____matrice1_RK,NomFonctionCourant QD@@__ _____composante_K \ ,NomFonctionCourant QD@@__ _____matrice1_RS,NomFonctionCourant QD@@__ _____composante_S \ ,NomFonctionCourant QD@@__ _____matrice1_RT,NomFonctionCourant QD@@__ _____composante_T \ ,NomFonctionCourant QD@@__ _____matrice1_RU,NomFonctionCourant QD@@__ _____composante_U \ ,NomFonctionCourant QD@@__ _____matrice1_RV,NomFonctionCourant QD@@__ _____composante_V \ ) \ ,LIZ8(NomFonctionCourant QD@@__ _____matrice1_IR,composante_R \ ,NomFonctionCourant QD@@__ _____matrice1_II,composante_I \ ,NomFonctionCourant QD@@__ _____matrice1_IJ,NomFonctionCourant QD@@__ _____composante_J \ ,NomFonctionCourant QD@@__ _____matrice1_IK,NomFonctionCourant QD@@__ _____composante_K \ ,NomFonctionCourant QD@@__ _____matrice1_IS,NomFonctionCourant QD@@__ _____composante_S \ ,NomFonctionCourant QD@@__ _____matrice1_IT,NomFonctionCourant QD@@__ _____composante_T \ ,NomFonctionCourant QD@@__ _____matrice1_IU,NomFonctionCourant QD@@__ _____composante_U \ ,NomFonctionCourant QD@@__ _____matrice1_IV,NomFonctionCourant QD@@__ _____composante_V \ ) \ ,LIZ8(NomFonctionCourant QD@@__ _____matrice1_JR,composante_R \ ,NomFonctionCourant QD@@__ _____matrice1_JI,composante_I \ ,NomFonctionCourant QD@@__ _____matrice1_JJ,NomFonctionCourant QD@@__ _____composante_J \ ,NomFonctionCourant QD@@__ _____matrice1_JK,NomFonctionCourant QD@@__ _____composante_K \ ,NomFonctionCourant QD@@__ _____matrice1_JS,NomFonctionCourant QD@@__ _____composante_S \ ,NomFonctionCourant QD@@__ _____matrice1_JT,NomFonctionCourant QD@@__ _____composante_T \ ,NomFonctionCourant QD@@__ _____matrice1_JU,NomFonctionCourant QD@@__ _____composante_U \ ,NomFonctionCourant QD@@__ _____matrice1_JV,NomFonctionCourant QD@@__ _____composante_V \ ) \ ,LIZ8(NomFonctionCourant QD@@__ _____matrice1_KR,composante_R \ ,NomFonctionCourant QD@@__ _____matrice1_KI,composante_I \ ,NomFonctionCourant QD@@__ _____matrice1_KJ,NomFonctionCourant QD@@__ _____composante_J \ ,NomFonctionCourant QD@@__ _____matrice1_KK,NomFonctionCourant QD@@__ _____composante_K \ ,NomFonctionCourant QD@@__ _____matrice1_KS,NomFonctionCourant QD@@__ _____composante_S \ ,NomFonctionCourant QD@@__ _____matrice1_KT,NomFonctionCourant QD@@__ _____composante_T \ ,NomFonctionCourant QD@@__ _____matrice1_KU,NomFonctionCourant QD@@__ _____composante_U \ ,NomFonctionCourant QD@@__ _____matrice1_KV,NomFonctionCourant QD@@__ _____composante_V \ ) \ ,LIZ8(NomFonctionCourant QD@@__ _____matrice1_SR,composante_R \ ,NomFonctionCourant QD@@__ _____matrice1_SI,composante_I \ ,NomFonctionCourant QD@@__ _____matrice1_SJ,NomFonctionCourant QD@@__ _____composante_J \ ,NomFonctionCourant QD@@__ _____matrice1_SK,NomFonctionCourant QD@@__ _____composante_K \ ,NomFonctionCourant QD@@__ _____matrice1_SS,NomFonctionCourant QD@@__ _____composante_S \ ,NomFonctionCourant QD@@__ _____matrice1_ST,NomFonctionCourant QD@@__ _____composante_T \ ,NomFonctionCourant QD@@__ _____matrice1_SU,NomFonctionCourant QD@@__ _____composante_U \ ,NomFonctionCourant QD@@__ _____matrice1_SV,NomFonctionCourant QD@@__ _____composante_V \ ) \ ,LIZ8(NomFonctionCourant QD@@__ _____matrice1_TR,composante_R \ ,NomFonctionCourant QD@@__ _____matrice1_TI,composante_I \ ,NomFonctionCourant QD@@__ _____matrice1_TJ,NomFonctionCourant QD@@__ _____composante_J \ ,NomFonctionCourant QD@@__ _____matrice1_TK,NomFonctionCourant QD@@__ _____composante_K \ ,NomFonctionCourant QD@@__ _____matrice1_TS,NomFonctionCourant QD@@__ _____composante_S \ ,NomFonctionCourant QD@@__ _____matrice1_TT,NomFonctionCourant QD@@__ _____composante_T \ ,NomFonctionCourant QD@@__ _____matrice1_TU,NomFonctionCourant QD@@__ _____composante_U \ ,NomFonctionCourant QD@@__ _____matrice1_TV,NomFonctionCourant QD@@__ _____composante_V \ ) \ ,LIZ8(NomFonctionCourant QD@@__ _____matrice1_UR,composante_R \ ,NomFonctionCourant QD@@__ _____matrice1_UI,composante_I \ ,NomFonctionCourant QD@@__ _____matrice1_UJ,NomFonctionCourant QD@@__ _____composante_J \ ,NomFonctionCourant QD@@__ _____matrice1_UK,NomFonctionCourant QD@@__ _____composante_K \ ,NomFonctionCourant QD@@__ _____matrice1_US,NomFonctionCourant QD@@__ _____composante_S \ ,NomFonctionCourant QD@@__ _____matrice1_UT,NomFonctionCourant QD@@__ _____composante_T \ ,NomFonctionCourant QD@@__ _____matrice1_UU,NomFonctionCourant QD@@__ _____composante_U \ ,NomFonctionCourant QD@@__ _____matrice1_UV,NomFonctionCourant QD@@__ _____composante_V \ ) \ ,LIZ8(NomFonctionCourant QD@@__ _____matrice1_VR,composante_R \ ,NomFonctionCourant QD@@__ _____matrice1_VI,composante_I \ ,NomFonctionCourant QD@@__ _____matrice1_VJ,NomFonctionCourant QD@@__ _____composante_J \ ,NomFonctionCourant QD@@__ _____matrice1_VK,NomFonctionCourant QD@@__ _____composante_K \ ,NomFonctionCourant QD@@__ _____matrice1_VS,NomFonctionCourant QD@@__ _____composante_S \ ,NomFonctionCourant QD@@__ _____matrice1_VT,NomFonctionCourant QD@@__ _____composante_T \ ,NomFonctionCourant QD@@__ _____matrice1_VU,NomFonctionCourant QD@@__ _____composante_U \ ,NomFonctionCourant QD@@__ _____matrice1_VV,NomFonctionCourant QD@@__ _____composante_V \ ) \ ); \ /* Le "point_courant" est associe au point courant {X,Y} sur le maillage de l'image */ \ /* de facon que : */ \ /* */ \ /* point_courant = {X,Y,0,0,0,0,0,0} */ \ /* */ \ /* par defaut (voir la valeur des ponderations des 'LIN4(...)'). Les composantes */ \ /* {composante_J,composante_K,composante_Scomposante_T,composante_U,composante_V} */ \ /* sont arbitraires et nulles par defaut... */ \ \ Test(condition) \ Bblock \ BLOC(transformation); \ /* Transformation du nombre hyper-hyper-complexe courant. */ \ \ EGAL(new_X \ ,ADD2(MUL3(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_HYPER_____R_facteur_homothetie_X \ ,facteur_multiplicatif \ ,LIZ8(NomFonctionCourant QD@@__ _____matrice2_RR,HHReelle(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_RI,HHImaginaire(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_RJ,HHJmaginaire(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_RK,HHKmaginaire(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_RS,HHSmaginaire(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_RT,HHTmaginaire(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_RU,HHUmaginaire(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_RV,HHVmaginaire(point_manoeuvre) \ ) \ ) \ ,R_translation__dX_____ \ ) \ ); \ EGAL(new_Y \ ,ADD2(MUL3(TRANSFORMATION_CONFORME_DANS_LES_PLANS_HYPER_HYPER_____R_facteur_homothetie_Y \ ,facteur_multiplicatif \ ,LIZ8(NomFonctionCourant QD@@__ _____matrice2_IR,HHReelle(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_II,HHImaginaire(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_IJ,HHJmaginaire(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_IK,HHKmaginaire(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_IS,HHSmaginaire(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_IT,HHTmaginaire(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_IU,HHUmaginaire(point_manoeuvre) \ ,NomFonctionCourant QD@@__ _____matrice2_IV,HHVmaginaire(point_manoeuvre) \ ) \ ) \ ,R_translation__dY_____ \ ) \ ); \ /* Calcul des coordonnees transformees dans le plan image en recuperant, par defaut (voir */ \ /* la valeur des ponderations des 'LIN8(...)'), les composantes {R,I,J,K,S,T,U,V} de */ \ /* l'octonion 'point_manoeuvre'... */ \ \ BLOC(action_rangement); \ /* Et enfin, deplacement du point courant... */ \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock \ end_image \ Eblock \ /* Definition de la transformation conforme en coordonnees d'ecran [Xmin,Xmax]x[Ymin,Ymax]. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( O * * 2 ) : */ /* */ /*************************************************************************************************************************************/ #define O_AU_CARRE_DANS_PLANS_HYPER_HYPER_IMAGE_OU_HYPER_HYPER_COMPLEXE \ Bblock \ TRANSFORMATION__O_AU_CARRE(point_manoeuvre,point_courant); \ Eblock \ /* Definition generale de la transformation 'o' au carre dans les plans hyper-image ou */ \ /* hyper-complexe. */ #define O_AU_CARRE_PLANS_HYPER_HYPER_IMAGE_COMPLEXE \ O_AU_CARRE_DANS_PLANS_HYPER_HYPER_IMAGE_OU_HYPER_HYPER_COMPLEXE \ /* Introduit le 20111017152554 afin de reduire la longueur de certaines lignes... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( O * * 2 ) */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ #define O_AU_CARRE_DANS_LE_PLAN_HYPER_HYPER_IMAGE(action_rangement) \ Bblock \ TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_IMAGE(BLOC(VIDE;) \ ,TOUJOURS_VRAI \ ,BLOC(O_AU_CARRE_PLANS_HYPER_HYPER_IMAGE_COMPLEXE;) \ ,BLOC(action_rangement) \ ,MUL2(facteur_multiplicatif,NEUT(facteur_correctif)) \ ); \ Eblock \ /* Definition de la transformation conforme en coordonnees d'ecran [Xmin,Xmax]x[Ymin,Ymax]. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( O * * 2 ) */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ BFonctionP DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_RR,FU))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_RS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_RT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_RU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_RV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_II,FU))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_IS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_IT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_IU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_IV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_JR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_JI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_JJ,FU))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_JK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_JS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_JT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_JU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_JV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_KR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_KI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_KJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_KK,FU))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_KS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_KT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_KU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_KV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_SR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_SI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_SJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_SK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_SS,FU))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_ST,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_SU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_SV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_TR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_TI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_TJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_TK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_TS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_TT,FU))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_TU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_TV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_UR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_UI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_UJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_UK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_US,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_UT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_UU,FU))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_UV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_VR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_VI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_VJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_VK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_VS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_VT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_VU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_VV,FU))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice2_RR,FU))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice2_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice2_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice2_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice2_RS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice2_RT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice2_RU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice2_RV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice2_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice2_II,FU))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice2_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice2_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice2_IS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice2_IT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice2_IU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____matrice2_IV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____composante_J,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____composante_K,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____composante_S,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____composante_T,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____composante_U,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_image_____composante_V,FZERO))); DEFV(Common,DEFV(FonctionP,POINTERp(Io_au_carre_dans_le_plan_hyper_hyper_image(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) DEFV(Argument,DEFV(image,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 0.01 donne de bons resultats). */ DEFV(Argument,DEFV(image,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ O_AU_CARRE_DANS_LE_PLAN_HYPER_HYPER_IMAGE(BLOC(store_point_load_point(imageA ,new_X ,new_Y ,imageR ,X ,Y ); ) ); RETI(imageR); Eblock EFonctionP /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( O * * 2 ) */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ BFonctionF DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_RR,FU))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_RS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_RT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_RU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_RV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_II,FU))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_IS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_IT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_IU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_IV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_JR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_JI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_JJ,FU))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_JK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_JS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_JT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_JU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_JV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_KR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_KI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_KJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_KK,FU))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_KS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_KT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_KU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_KV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_SR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_SI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_SJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_SK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_SS,FU))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_ST,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_SU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_SV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_TR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_TI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_TJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_TK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_TS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_TT,FU))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_TU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_TV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_UR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_UI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_UJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_UK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_US,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_UT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_UU,FU))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_UV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_VR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_VI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_VJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_VK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_VS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_VT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_VU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice1_VV,FU))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice2_RR,FU))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice2_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice2_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice2_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice2_RS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice2_RT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice2_RU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice2_RV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice2_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice2_II,FU))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice2_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice2_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice2_IS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice2_IT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice2_IU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____matrice2_IV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____composante_J,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____composante_K,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____composante_S,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____composante_T,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____composante_U,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_image_____composante_V,FZERO))); DEFV(Common,DEFV(FonctionF,POINTERF(IFo_au_carre_dans_le_plan_hyper_hyper_image(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) /* Fonction introduite le 20111017144351. */ DEFV(Argument,DEFV(imageF,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 0.01 donne de bons resultats). */ DEFV(Argument,DEFV(imageF,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ O_AU_CARRE_DANS_LE_PLAN_HYPER_HYPER_IMAGE(BLOC(storeF_point_loadF_point(imageA ,new_X ,new_Y ,imageR ,X ,Y ); ) ); RETIF(imageR); Eblock EFonctionF #undef O_AU_CARRE_DANS_LE_PLAN_HYPER_HYPER_IMAGE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( O * * 2 ) */ /* E N C O O R D O N N E E S D U P L A N H Y P E R - H Y P E R - C O M P L E X E */ /* [0,1] x [0,1] x [0,1] x [0,1] x [0,1] x [0,1] x [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ #define O_AU_CARRE_DANS_LE_PLAN_HYPER_HYPER_COMPLEXE(action_rangement) \ Bblock \ TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_COMPLEXE(BLOC(VIDE;) \ ,TOUJOURS_VRAI \ ,BLOC(O_AU_CARRE_PLANS_HYPER_HYPER_IMAGE_COMPLEXE;) \ ,BLOC(action_rangement) \ ); \ Eblock \ /* Definition de la transformation conforme en coordonnees d'ecran [Xmin,Xmax]x[Ymin,Ymax]. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( O * * 2 ) */ /* E N C O O R D O N N E E S D U P L A N H Y P E R - H Y P E R - C O M P L E X E */ /* [0,1] x [0,1] x [0,1] x [0,1] x [0,1] x [0,1] x [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ BFonctionP DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_RR,FU))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_RS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_RT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_RU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_RV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_II,FU))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_IS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_IT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_IU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_IV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_JR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_JI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_JJ,FU))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_JK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_JS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_JT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_JU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_JV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_KR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_KI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_KJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_KK,FU))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_KS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_KT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_KU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_KV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_SR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_SI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_SJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_SK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_SS,FU))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_ST,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_SU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_SV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_TR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_TI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_TJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_TK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_TS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_TT,FU))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_TU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_TV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_UR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_UI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_UJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_UK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_US,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_UT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_UU,FU))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_UV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_VR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_VI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_VJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_VK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_VS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_VT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_VU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_VV,FU))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice2_RR,FU))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice2_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice2_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice2_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice2_RS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice2_RT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice2_RU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice2_RV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice2_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice2_II,FU))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice2_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice2_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice2_IS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice2_IT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice2_IU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice2_IV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____composante_J,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____composante_K,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____composante_S,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____composante_T,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____composante_U,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_au_carre_dans_le_plan_hyper_hyper_complexe_____composante_V,FZERO))); DEFV(Common,DEFV(FonctionP,POINTERp(Io_au_carre_dans_le_plan_hyper_hyper_complexe(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) /* Fonction introduite le 20111017144351. */ DEFV(Argument,DEFV(image,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 5.0 donne de bons resultats) ; voir */ /* a ce propos les commentaires de 'v $xci/z_carre.01$K'... */ DEFV(Argument,DEFV(image,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ O_AU_CARRE_DANS_LE_PLAN_HYPER_HYPER_COMPLEXE(BLOC(store_point_load_point(imageA ,fV_cDENORMALISE_OX(new_X) ,fV_cDENORMALISE_OY(new_Y) ,imageR ,X ,Y ); ) ); RETI(imageR); Eblock EFonctionP /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( O * * 2 ) */ /* E N C O O R D O N N E E S D U P L A N H Y P E R - H Y P E R - C O M P L E X E */ /* [0,1] x [0,1] x [0,1] x [0,1] x [0,1] x [0,1] x [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ BFonctionF DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_RR,FU))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_RS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_RT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_RU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_RV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_II,FU))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_IS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_IT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_IU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_IV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_JR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_JI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_JJ,FU))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_JK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_JS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_JT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_JU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_JV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_KR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_KI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_KJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_KK,FU))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_KS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_KT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_KU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_KV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_SR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_SI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_SJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_SK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_SS,FU))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_ST,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_SU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_SV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_TR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_TI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_TJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_TK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_TS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_TT,FU))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_TU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_TV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_UR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_UI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_UJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_UK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_US,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_UT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_UU,FU))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_UV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_VR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_VI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_VJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_VK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_VS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_VT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_VU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice1_VV,FU))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice2_RR,FU))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice2_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice2_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice2_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice2_RS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice2_RT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice2_RU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice2_RV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice2_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice2_II,FU))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice2_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice2_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice2_IS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice2_IT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice2_IU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____matrice2_IV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____composante_J,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____composante_K,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____composante_S,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____composante_T,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____composante_U,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_au_carre_dans_le_plan_hyper_hyper_complexe_____composante_V,FZERO))); DEFV(Common,DEFV(FonctionF,POINTERF(IFo_au_carre_dans_le_plan_hyper_hyper_complexe(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) /* Fonction introduite le 20111017144351. */ DEFV(Argument,DEFV(imageF,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 5.0 donne de bons resultats) ; voir */ /* a ce propos les commentaires de 'v $xci/z_carre.01$K'... */ DEFV(Argument,DEFV(imageF,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ O_AU_CARRE_DANS_LE_PLAN_HYPER_HYPER_COMPLEXE(BLOC(storeF_point_loadF_point(imageA ,fV_cDENORMALISE_OX(new_X) ,fV_cDENORMALISE_OY(new_Y) ,imageR ,X ,Y ); ) ); RETIF(imageR); Eblock EFonctionF #undef O_AU_CARRE_DANS_LE_PLAN_HYPER_HYPER_COMPLEXE #undef O_AU_CARRE_PLANS_HYPER_HYPER_IMAGE_COMPLEXE #undef O_AU_CARRE_DANS_PLANS_HYPER_HYPER_IMAGE_OU_HYPER_HYPER_COMPLEXE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( 1 / O ) : */ /* */ /*************************************************************************************************************************************/ #define UN_SUR_O_DANS_PLANS_HYPER_HYPER_IMAGE_OU_HYPER_HYPER_COMPLEXE \ Bblock \ TRANSFORMATION__UN_SUR_O(point_manoeuvre,point_courant); \ Eblock \ /* Definition generale de la transformation un sur 'o' dans les plans hyper-image ou */ \ /* hyper-complexe. */ #define UN_SUR_O_PLANS_HYPER_HYPER_IMAGE_COMPLEXE \ UN_SUR_O_DANS_PLANS_HYPER_HYPER_IMAGE_OU_HYPER_HYPER_COMPLEXE \ /* Introduit le 20111017152554 afin de reduire la longueur de certaines lignes... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( 1 / O ) */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ #define UN_SUR_O_DANS_LE_PLAN_HYPER_HYPER_IMAGE(action_rangement) \ Bblock \ TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_IMAGE(BLOC(VIDE;) \ ,IZNE(HHCmodule2(point_courant)) \ ,BLOC(UN_SUR_O_PLANS_HYPER_HYPER_IMAGE_COMPLEXE;) \ ,BLOC(action_rangement) \ ,DIVI(facteur_multiplicatif,EXP2(facteur_correctif)) \ ); \ Eblock \ /* Definition de la transformation conforme en coordonnees d'ecran [Xmin,Xmax]x[Ymin,Ymax]. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( 1 / O ) */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ BFonctionP DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_RR,FU))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_RS,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_RT,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_RU,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_RV,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_II,FU))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_IS,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_IT,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_IU,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_IV,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_JR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_JI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_JJ,FU))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_JK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_JS,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_JT,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_JU,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_JV,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_KR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_KI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_KJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_KK,FU))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_KS,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_KT,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_KU,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_KV,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_SR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_SI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_SJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_SK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_SS,FU))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_ST,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_SU,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_SV,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_TR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_TI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_TJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_TK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_TS,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_TT,FU))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_TU,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_TV,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_UR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_UI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_UJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_UK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_US,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_UT,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_UU,FU))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_UV,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_VR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_VI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_VJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_VK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_VS,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_VT,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_VU,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_VV,FU))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice2_RR,FU))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice2_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice2_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice2_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice2_RS,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice2_RT,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice2_RU,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice2_RV,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice2_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice2_II,FU))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice2_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice2_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice2_IS,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice2_IT,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice2_IU,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____matrice2_IV,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____composante_J,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____composante_K,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____composante_S,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____composante_T,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____composante_U,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_image_____composante_V,FZERO))); DEFV(Common,DEFV(FonctionP,POINTERp(Iun_sur_o_dans_le_plan_hyper_hyper_image(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) DEFV(Argument,DEFV(image,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 64000.0 donne de bons resultats). */ DEFV(Argument,DEFV(image,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ CALS(Inoir(imageR)); /* L'image Resultat est nettoye ici (contrairement a la transformation q**2), */ /* a cause du test de nullite du carre du module du nombre complexe courant ; */ /* dans ce cas aucun point n'est marque... */ UN_SUR_O_DANS_LE_PLAN_HYPER_HYPER_IMAGE(BLOC(store_point_load_point(imageA ,new_X ,new_Y ,imageR ,X ,Y ); ) ); RETI(imageR); Eblock EFonctionP /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( 1 / O ) */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ BFonctionF DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_RR,FU))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_RS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_RT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_RU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_RV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_II,FU))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_IS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_IT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_IU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_IV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_JR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_JI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_JJ,FU))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_JK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_JS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_JT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_JU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_JV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_KR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_KI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_KJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_KK,FU))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_KS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_KT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_KU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_KV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_SR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_SI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_SJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_SK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_SS,FU))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_ST,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_SU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_SV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_TR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_TI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_TJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_TK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_TS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_TT,FU))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_TU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_TV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_UR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_UI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_UJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_UK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_US,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_UT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_UU,FU))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_UV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_VR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_VI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_VJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_VK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_VS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_VT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_VU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice1_VV,FU))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice2_RR,FU))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice2_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice2_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice2_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice2_RS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice2_RT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice2_RU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice2_RV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice2_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice2_II,FU))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice2_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice2_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice2_IS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice2_IT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice2_IU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____matrice2_IV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____composante_J,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____composante_K,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____composante_S,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____composante_T,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____composante_U,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_image_____composante_V,FZERO))); DEFV(Common,DEFV(FonctionF,POINTERF(IFun_sur_o_dans_le_plan_hyper_hyper_image(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) /* Fonction introduite le 20111017144351. */ DEFV(Argument,DEFV(imageF,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 64000.0 donne de bons resultats). */ DEFV(Argument,DEFV(imageF,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ CALS(IFinitialisation(imageR,FZERO)); /* L'image Resultat est nettoye ici (contrairement a la transformation q**2), */ /* a cause du test de nullite du carre du module du nombre complexe courant ; */ /* dans ce cas aucun point n'est marque... */ UN_SUR_O_DANS_LE_PLAN_HYPER_HYPER_IMAGE(BLOC(storeF_point_loadF_point(imageA ,new_X ,new_Y ,imageR ,X ,Y ); ) ); RETIF(imageR); Eblock EFonctionF #undef UN_SUR_O_DANS_LE_PLAN_HYPER_HYPER_IMAGE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( 1 / O ) */ /* E N C O O R D O N N E E S D U P L A N H Y P E R - H Y P E R - C O M P L E X E */ /* [0,1] x [0,1] x [0,1] x [0,1] x [0,1] x [0,1] x [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ #define UN_SUR_O_DANS_LE_PLAN_HYPER_HYPER_COMPLEXE(action_rangement) \ Bblock \ TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_COMPLEXE(BLOC(VIDE;) \ ,IZNE(HHCmodule2(point_courant)) \ ,BLOC(UN_SUR_O_PLANS_HYPER_HYPER_IMAGE_COMPLEXE;) \ ,BLOC(action_rangement) \ ); \ Eblock \ /* Definition de la transformation conforme en coordonnees d'ecran [Xmin,Xmax]x[Ymin,Ymax]. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( 1 / O ) */ /* E N C O O R D O N N E E S D U P L A N H Y P E R - H Y P E R - C O M P L E X E */ /* [0,1] x [0,1] x [0,1] x [0,1] x [0,1] x [0,1] x [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ BFonctionP DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_RR,FU))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_RS,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_RT,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_RU,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_RV,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_II,FU))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_IS,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_IT,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_IU,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_IV,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_JR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_JI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_JJ,FU))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_JK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_JS,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_JT,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_JU,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_JV,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_KR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_KI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_KJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_KK,FU))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_KS,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_KT,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_KU,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_KV,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_SR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_SI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_SJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_SK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_SS,FU))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_ST,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_SU,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_SV,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_TR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_TI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_TJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_TK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_TS,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_TT,FU))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_TU,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_TV,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_UR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_UI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_UJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_UK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_US,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_UT,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_UU,FU))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_UV,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_VR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_VI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_VJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_VK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_VS,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_VT,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_VU,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_VV,FU))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice2_RR,FU))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice2_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice2_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice2_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice2_RS,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice2_RT,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice2_RU,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice2_RV,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice2_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice2_II,FU))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice2_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice2_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice2_IS,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice2_IT,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice2_IU,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice2_IV,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____composante_J,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____composante_K,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____composante_S,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____composante_T,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____composante_U,FZERO))); DEFV(Common,DEFV(Float,SINT(Iun_sur_o_dans_le_plan_hyper_hyper_complexe_____composante_V,FZERO))); DEFV(Common,DEFV(FonctionP,POINTERp(Iun_sur_o_dans_le_plan_hyper_hyper_complexe(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) /* Fonction introduite le 20111017144351. */ DEFV(Argument,DEFV(image,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 0.25 donne de bons resultats) ; voir */ /* a ce propos les commentaires de 'v $xci/un_sur_z.01$K'... */ DEFV(Argument,DEFV(image,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ CALS(Inoir(imageR)); /* L'image Resultat est nettoye ici (contrairement a la transformation q**2), */ /* a cause du test de nullite du carre du module du nombre complexe courant ; */ /* dans ce cas aucun point n'est marque... */ UN_SUR_O_DANS_LE_PLAN_HYPER_HYPER_COMPLEXE(BLOC(store_point_load_point(imageA ,fV_cDENORMALISE_OX(new_X) ,fV_cDENORMALISE_OY(new_Y) ,imageR ,X ,Y ); ) ); RETI(imageR); Eblock EFonctionP /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E K * ( 1 / O ) */ /* E N C O O R D O N N E E S D U P L A N H Y P E R - H Y P E R - C O M P L E X E */ /* [0,1] x [0,1] x [0,1] x [0,1] x [0,1] x [0,1] x [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ BFonctionF DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_RR,FU))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_RS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_RT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_RU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_RV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_II,FU))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_IS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_IT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_IU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_IV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_JR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_JI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_JJ,FU))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_JK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_JS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_JT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_JU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_JV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_KR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_KI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_KJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_KK,FU))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_KS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_KT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_KU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_KV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_SR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_SI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_SJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_SK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_SS,FU))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_ST,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_SU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_SV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_TR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_TI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_TJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_TK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_TS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_TT,FU))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_TU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_TV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_UR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_UI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_UJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_UK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_US,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_UT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_UU,FU))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_UV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_VR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_VI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_VJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_VK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_VS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_VT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_VU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice1_VV,FU))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice2_RR,FU))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice2_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice2_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice2_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice2_RS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice2_RT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice2_RU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice2_RV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice2_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice2_II,FU))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice2_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice2_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice2_IS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice2_IT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice2_IU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____matrice2_IV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____composante_J,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____composante_K,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____composante_S,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____composante_T,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____composante_U,FZERO))); DEFV(Common,DEFV(Float,SINT(IFun_sur_o_dans_le_plan_hyper_hyper_complexe_____composante_V,FZERO))); DEFV(Common,DEFV(FonctionF,POINTERF(IFun_sur_o_dans_le_plan_hyper_hyper_complexe(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) /* Fonction introduite le 20111017144351. */ DEFV(Argument,DEFV(imageF,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 0.25 donne de bons resultats) ; voir */ /* a ce propos les commentaires de 'v $xci/un_sur_z.01$K'... */ DEFV(Argument,DEFV(imageF,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ CALS(IFinitialisation(imageR,FZERO)); /* L'image Resultat est nettoye ici (contrairement a la transformation q**2), */ /* a cause du test de nullite du carre du module du nombre complexe courant ; */ /* dans ce cas aucun point n'est marque... */ UN_SUR_O_DANS_LE_PLAN_HYPER_HYPER_COMPLEXE(BLOC(storeF_point_loadF_point(imageA ,fV_cDENORMALISE_OX(new_X) ,fV_cDENORMALISE_OY(new_Y) ,imageR ,X ,Y ); ) ); RETIF(imageR); Eblock EFonctionF #undef UN_SUR_O_DANS_LE_PLAN_HYPER_HYPER_COMPLEXE #undef UN_SUR_O_PLANS_HYPER_HYPER_IMAGE_COMPLEXE #undef UN_SUR_O_DANS_PLANS_HYPER_HYPER_IMAGE_OU_HYPER_HYPER_COMPLEXE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E H O M O G R A P H I Q U E : */ /* */ /*************************************************************************************************************************************/ #define O_HOMOGRAPHIQUE_DANS_PLANS_HYPER_HYPER_IMAGE_OU_HYPER_HYPER_COMPLEXE \ Bblock \ TRANSFORMATION__O_HOMOGRAPHIQUE(point_manoeuvre,point_courant,nombre_A,nombre_B,nombre_C,nombre_D,INDIRECT); \ /* Calcul de : */ \ /* */ \ /* A.o + B */ \ /* --------- */ \ /* C.o + D */ \ /* */ \ Eblock \ /* Definition generale de la transformation homographique dans les plans hyper-hyper-image */ \ /* ou hyper-hyper-complexe. */ #define O_HOMOGRAPHIQUE_PLANS_HYPER_HYPER_IMAGE_COMPLEXE \ O_HOMOGRAPHIQUE_DANS_PLANS_HYPER_HYPER_IMAGE_OU_HYPER_HYPER_COMPLEXE \ /* Introduit le 20111017152554 afin de reduire la longueur de certaines lignes... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E H O M O G R A P H I Q U E */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ #define O_HOMOGRAPHIQUE_DANS_LE_PLAN_HYPER_HYPER_IMAGE(action_rangement) \ Bblock \ TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_IMAGE(BLOC(DEFV(hyper_hyper_complexe,point_manoeuvre_A); \ DEFV(hyper_hyper_complexe,point_manoeuvre_B); \ DEFV(hyper_hyper_complexe,point_manoeuvre_C); \ DEFV(hyper_hyper_complexe,point_manoeuvre_D); \ /* Nombres complexes intermediaires... */ \ ) \ ,TOUJOURS_VRAI \ ,BLOC(O_HOMOGRAPHIQUE_PLANS_HYPER_HYPER_IMAGE_COMPLEXE;) \ ,BLOC(action_rangement) \ ,NEUT(facteur_multiplicatif) \ ); \ Eblock \ /* Definition de la transformation conforme en coordonnees d'ecran [Xmin,Xmax]x[Ymin,Ymax]. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E H O M O G R A P H I Q U E */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ BFonctionP DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_RR,FU))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_RS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_RT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_RU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_RV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_II,FU))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_IS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_IT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_IU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_IV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_JR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_JI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_JJ,FU))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_JK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_JS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_JT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_JU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_JV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_KR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_KI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_KJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_KK,FU))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_KS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_KT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_KU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_KV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_SR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_SI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_SJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_SK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_SS,FU))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_ST,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_SU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_SV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_TR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_TI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_TJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_TK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_TS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_TT,FU))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_TU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_TV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_UR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_UI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_UJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_UK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_US,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_UT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_UU,FU))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_UV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_VR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_VI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_VJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_VK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_VS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_VT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_VU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice1_VV,FU))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice2_RR,FU))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice2_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice2_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice2_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice2_RS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice2_RT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice2_RU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice2_RV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice2_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice2_II,FU))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice2_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice2_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice2_IS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice2_IT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice2_IU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____matrice2_IV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____composante_J,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____composante_K,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____composante_S,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____composante_T,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____composante_U,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_image_____composante_V,FZERO))); DEFV(Common,DEFV(FonctionP,POINTERp(Io_homographique_dans_le_plan_hyper_hyper_image(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ,ARGUMENT_POINTERs(nombre_A) ,ARGUMENT_POINTERs(nombre_B) ,ARGUMENT_POINTERs(nombre_C) ,ARGUMENT_POINTERs(nombre_D) ) ) ) ) DEFV(Argument,DEFV(image,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 0.01 donne de bons resultats). */ DEFV(Argument,DEFV(image,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(hyper_hyper_complexe,POINTERs(nombre_A))); DEFV(Argument,DEFV(hyper_hyper_complexe,POINTERs(nombre_B))); DEFV(Argument,DEFV(hyper_hyper_complexe,POINTERs(nombre_C))); DEFV(Argument,DEFV(hyper_hyper_complexe,POINTERs(nombre_D))); /* Definition des quatre coefficients complexes de la transformation homographique : */ /* */ /* A.o + B */ /* --------- */ /* C.o + D */ /* */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ O_HOMOGRAPHIQUE_DANS_LE_PLAN_HYPER_HYPER_IMAGE(BLOC(store_point_load_point(imageA ,new_X ,new_Y ,imageR ,X ,Y ); ) ); RETI(imageR); Eblock EFonctionP /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E H O M O G R A P H I Q U E */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ BFonctionF DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_RR,FU))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_RS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_RT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_RU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_RV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_II,FU))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_IS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_IT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_IU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_IV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_JR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_JI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_JJ,FU))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_JK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_JS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_JT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_JU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_JV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_KR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_KI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_KJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_KK,FU))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_KS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_KT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_KU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_KV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_SR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_SI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_SJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_SK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_SS,FU))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_ST,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_SU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_SV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_TR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_TI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_TJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_TK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_TS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_TT,FU))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_TU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_TV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_UR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_UI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_UJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_UK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_US,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_UT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_UU,FU))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_UV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_VR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_VI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_VJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_VK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_VS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_VT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_VU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice1_VV,FU))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice2_RR,FU))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice2_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice2_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice2_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice2_RS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice2_RT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice2_RU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice2_RV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice2_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice2_II,FU))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice2_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice2_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice2_IS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice2_IT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice2_IU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____matrice2_IV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____composante_J,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____composante_K,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____composante_S,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____composante_T,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____composante_U,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_image_____composante_V,FZERO))); DEFV(Common,DEFV(FonctionF,POINTERF(IFo_homographique_dans_le_plan_hyper_hyper_image(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ,ARGUMENT_POINTERs(nombre_A) ,ARGUMENT_POINTERs(nombre_B) ,ARGUMENT_POINTERs(nombre_C) ,ARGUMENT_POINTERs(nombre_D) ) ) ) ) /* Fonction introduite le 20111017144351. */ DEFV(Argument,DEFV(imageF,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 0.01 donne de bons resultats). */ DEFV(Argument,DEFV(imageF,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(hyper_hyper_complexe,POINTERs(nombre_A))); DEFV(Argument,DEFV(hyper_hyper_complexe,POINTERs(nombre_B))); DEFV(Argument,DEFV(hyper_hyper_complexe,POINTERs(nombre_C))); DEFV(Argument,DEFV(hyper_hyper_complexe,POINTERs(nombre_D))); /* Definition des quatre coefficients complexes de la transformation homographique : */ /* */ /* A.o + B */ /* --------- */ /* C.o + D */ /* */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ O_HOMOGRAPHIQUE_DANS_LE_PLAN_HYPER_HYPER_IMAGE(BLOC(storeF_point_loadF_point(imageA ,new_X ,new_Y ,imageR ,X ,Y ); ) ); RETIF(imageR); Eblock EFonctionF #undef O_HOMOGRAPHIQUE_DANS_LE_PLAN_HYPER_HYPER_IMAGE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E H O M O G R A P H I Q U E */ /* E N C O O R D O N N E E S D U P L A N H Y P E R - H Y P E R - C O M P L E X E */ /* [0,1] x [0,1] x [0,1] x [0,1] x [0,1] x [0,1] x [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ #define O_HOMOGRAPHIQUE_DANS_LE_PLAN_HYPER_HYPER_COMPLEXE(action_rangement) \ Bblock \ TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_COMPLEXE(BLOC(DEFV(hyper_hyper_complexe,point_manoeuvre_A); \ DEFV(hyper_hyper_complexe,point_manoeuvre_B); \ DEFV(hyper_hyper_complexe,point_manoeuvre_C); \ DEFV(hyper_hyper_complexe,point_manoeuvre_D); \ /* Nombres complexes intermediaires... */ \ ) \ ,TOUJOURS_VRAI \ ,BLOC(O_HOMOGRAPHIQUE_PLANS_HYPER_HYPER_IMAGE_COMPLEXE;) \ ,BLOC(action_rangement) \ ); \ Eblock \ /* Definition de la transformation conforme en coordonnees d'ecran [Xmin,Xmax]x[Ymin,Ymax]. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E H O M O G R A P H I Q U E */ /* E N C O O R D O N N E E S D U P L A N H Y P E R - H Y P E R - C O M P L E X E */ /* [0,1] x [0,1] x [0,1] x [0,1] x [0,1] x [0,1] x [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ BFonctionP DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_RR,FU))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_RS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_RT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_RU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_RV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_II,FU))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_IS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_IT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_IU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_IV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_JR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_JI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_JJ,FU))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_JK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_JS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_JT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_JU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_JV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_KR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_KI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_KJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_KK,FU))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_KS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_KT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_KU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_KV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_SR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_SI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_SJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_SK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_SS,FU))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_ST,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_SU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_SV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_TR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_TI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_TJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_TK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_TS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_TT,FU))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_TU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_TV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_UR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_UI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_UJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_UK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_US,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_UT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_UU,FU))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_UV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_VR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_VI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_VJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_VK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_VS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_VT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_VU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_VV,FU))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice2_RR,FU))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice2_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice2_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice2_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice2_RS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice2_RT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice2_RU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice2_RV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice2_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice2_II,FU))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice2_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice2_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice2_IS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice2_IT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice2_IU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____matrice2_IV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____composante_J,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____composante_K,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____composante_S,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____composante_T,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____composante_U,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_homographique_dans_le_plan_hyper_hyper_complexe_____composante_V,FZERO))); DEFV(Common,DEFV(FonctionP,POINTERp(Io_homographique_dans_le_plan_hyper_hyper_complexe(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ,ARGUMENT_POINTERs(nombre_A) ,ARGUMENT_POINTERs(nombre_B) ,ARGUMENT_POINTERs(nombre_C) ,ARGUMENT_POINTERs(nombre_D) ) ) ) ) /* Fonction introduite le 20111017144351. */ DEFV(Argument,DEFV(image,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 5.0 donne de bons resultats) ; voir */ /* a ce propos les commentaires de 'v $xci/z_homogra.01$K'... */ DEFV(Argument,DEFV(image,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(hyper_hyper_complexe,POINTERs(nombre_A))); DEFV(Argument,DEFV(hyper_hyper_complexe,POINTERs(nombre_B))); DEFV(Argument,DEFV(hyper_hyper_complexe,POINTERs(nombre_C))); DEFV(Argument,DEFV(hyper_hyper_complexe,POINTERs(nombre_D))); /* Definition des quatre coefficients complexes de la transformation homographique : */ /* */ /* A.o + B */ /* --------- */ /* C.o + D */ /* */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ O_HOMOGRAPHIQUE_DANS_LE_PLAN_HYPER_HYPER_COMPLEXE(BLOC(store_point_load_point(imageA ,fV_cDENORMALISE_OX(new_X) ,fV_cDENORMALISE_OY(new_Y) ,imageR ,X ,Y ); ) ); RETI(imageR); Eblock EFonctionP /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E H O M O G R A P H I Q U E */ /* E N C O O R D O N N E E S D U P L A N H Y P E R - H Y P E R - C O M P L E X E */ /* [0,1] x [0,1] x [0,1] x [0,1] x [0,1] x [0,1] x [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ BFonctionF DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_RR,FU))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_RS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_RT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_RU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_RV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_II,FU))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_IS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_IT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_IU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_IV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_JR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_JI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_JJ,FU))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_JK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_JS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_JT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_JU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_JV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_KR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_KI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_KJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_KK,FU))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_KS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_KT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_KU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_KV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_SR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_SI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_SJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_SK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_SS,FU))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_ST,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_SU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_SV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_TR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_TI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_TJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_TK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_TS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_TT,FU))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_TU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_TV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_UR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_UI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_UJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_UK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_US,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_UT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_UU,FU))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_UV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_VR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_VI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_VJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_VK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_VS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_VT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_VU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice1_VV,FU))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice2_RR,FU))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice2_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice2_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice2_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice2_RS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice2_RT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice2_RU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice2_RV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice2_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice2_II,FU))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice2_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice2_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice2_IS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice2_IT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice2_IU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____matrice2_IV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____composante_J,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____composante_K,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____composante_S,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____composante_T,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____composante_U,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_homographique_dans_le_plan_hyper_hyper_complexe_____composante_V,FZERO))); DEFV(Common,DEFV(FonctionF,POINTERF(IFo_homographique_dans_le_plan_hyper_hyper_complexe(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ,ARGUMENT_POINTERs(nombre_A) ,ARGUMENT_POINTERs(nombre_B) ,ARGUMENT_POINTERs(nombre_C) ,ARGUMENT_POINTERs(nombre_D) ) ) ) ) /* Fonction introduite le 20111017144351. */ DEFV(Argument,DEFV(imageF,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 5.0 donne de bons resultats) ; voir */ /* a ce propos les commentaires de 'v $xci/z_homogra.01$K'... */ DEFV(Argument,DEFV(imageF,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(hyper_hyper_complexe,POINTERs(nombre_A))); DEFV(Argument,DEFV(hyper_hyper_complexe,POINTERs(nombre_B))); DEFV(Argument,DEFV(hyper_hyper_complexe,POINTERs(nombre_C))); DEFV(Argument,DEFV(hyper_hyper_complexe,POINTERs(nombre_D))); /* Definition des quatre coefficients complexes de la transformation homographique : */ /* */ /* A.o + B */ /* --------- */ /* C.o + D */ /* */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ O_HOMOGRAPHIQUE_DANS_LE_PLAN_HYPER_HYPER_COMPLEXE(BLOC(storeF_point_loadF_point(imageA ,fV_cDENORMALISE_OX(new_X) ,fV_cDENORMALISE_OY(new_Y) ,imageR ,X ,Y ); ) ); RETIF(imageR); Eblock EFonctionF #undef O_HOMOGRAPHIQUE_DANS_LE_PLAN_HYPER_HYPER_COMPLEXE #undef O_HOMOGRAPHIQUE_PLANS_HYPER_HYPER_IMAGE_COMPLEXE #undef O_HOMOGRAPHIQUE_DANS_PLANS_HYPER_HYPER_IMAGE_OU_HYPER_HYPER_COMPLEXE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N H Y P E R B O L I Q U E 1 G E N E R A L I S E E : */ /* */ /*************************************************************************************************************************************/ #define O_HYPERBOLIQUE_1_DANS_PLANS_HYPER_HYPER_IMAGE_OU_HYPER_HYPER_COMPLEXE \ Bblock \ DEFV(hyper_hyper_complexe_etendu,point_courant_etendu); \ DEFV(hyper_hyper_complexe_etendu,point_manoeuvre_etendu); \ \ HHCextension_directe(point_courant_etendu,point_courant); \ \ EGAL(HHCHHS_Rho(point_manoeuvre_etendu) \ ,FfABSO(LIN2(NomDeLaFonctionCourante QD@@__ _____ponderation_TAHX \ ,TAHX(AXPB(NomDeLaFonctionCourante QD@@__ _____A_TAHX_du_module \ ,HHCHHS_Rho(point_courant_etendu) \ ,NomDeLaFonctionCourante QD@@__ _____B_TAHX_du_module \ ) \ ) \ ,NomDeLaFonctionCourante QD@@__ _____ponderation_SINX \ ,SINX(AXPB(NomDeLaFonctionCourante QD@@__ _____A_SINX_du_module \ ,HHCHHS_Rho(point_courant_etendu) \ ,NomDeLaFonctionCourante QD@@__ _____B_SINX_du_module \ ) \ ) \ ,NomDeLaFonctionCourante QD@@__ _____translation_du_module \ ) \ ) \ ); \ /* Par l'usage de 'TAHX(...)', le module de 'point_courant_etendu', quelle que soit sa */ \ /* valeur, est ramene dans [0,1['... */ \ /* */ \ /* Le 20111230170628 la fonction 'FfABSO(...)' fut introduite car, en effet, un module */ \ /* ne peut etre que positif ou nul... */ \ EGAL(HHCHHS_Angle1(point_manoeuvre_etendu),NEUT(HHCHHS_Angle1(point_courant_etendu))); \ EGAL(HHCHHS_Angle2(point_manoeuvre_etendu),NEUT(HHCHHS_Angle2(point_courant_etendu))); \ EGAL(HHCHHS_Angle3(point_manoeuvre_etendu),NEUT(HHCHHS_Angle3(point_courant_etendu))); \ EGAL(HHCHHS_Angle4(point_manoeuvre_etendu),NEUT(HHCHHS_Angle4(point_courant_etendu))); \ EGAL(HHCHHS_Angle5(point_manoeuvre_etendu),NEUT(HHCHHS_Angle5(point_courant_etendu))); \ EGAL(HHCHHS_Angle6(point_manoeuvre_etendu),NEUT(HHCHHS_Angle6(point_courant_etendu))); \ EGAL(HHCHHS_Angle7(point_manoeuvre_etendu),NEUT(HHCHHS_Angle7(point_courant_etendu))); \ \ HHCextension_inverse(point_manoeuvre,point_manoeuvre_etendu); \ Eblock \ /* Definition generale de la transformation 'o' hyperbolique dans les plans image ou */ \ /* complexe (introduite le 20111229172827). */ #define O_HYPERBOLIQUE_1_DANS_PLANS_HH_IMAGE_OU_HH_COMPLEXE \ Bblock \ O_HYPERBOLIQUE_1_DANS_PLANS_HYPER_HYPER_IMAGE_OU_HYPER_HYPER_COMPLEXE; \ Eblock \ /* Synonyme destine a raccourcir la longueur des lignes qui suivent... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A T R A N S F O R M A T I O N H Y P E R B O L I Q U E 1 G E N E R A L I S E E */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ #define O_HYPERBOLIQUE_1_DANS_LE_PLAN_HYPER_HYPER_IMAGE(action_de_rangement) \ Bblock \ TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_IMAGE(BLOC(VIDE;) \ ,TOUJOURS_VRAI \ ,BLOC(O_HYPERBOLIQUE_1_DANS_PLANS_HH_IMAGE_OU_HH_COMPLEXE;) \ ,BLOC(action_de_rangement) \ ,MUL2(facteur_multiplicatif,NEUT(facteur_correctif)) \ ); \ Eblock \ /* Definition de la transformation en coordonnees d'ecran [Xmin,Xmax]x[Ymin,Ymax]. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N H Y P E R B O L I Q U E 1 G E N E R A L I S E E */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ BFonctionP DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_RR,FU))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_RS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_RT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_RU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_RV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_II,FU))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_IS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_IT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_IU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_IV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_JR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_JI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_JJ,FU))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_JK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_JS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_JT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_JU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_JV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_KR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_KI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_KJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_KK,FU))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_KS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_KT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_KU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_KV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_SR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_SI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_SJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_SK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_SS,FU))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_ST,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_SU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_SV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_TR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_TI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_TJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_TK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_TS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_TT,FU))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_TU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_TV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_UR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_UI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_UJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_UK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_US,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_UT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_UU,FU))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_UV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_VR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_VI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_VJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_VK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_VS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_VT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_VU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_VV,FU))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice2_RR,FU))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice2_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice2_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice2_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice2_RS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice2_RT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice2_RU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice2_RV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice2_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice2_II,FU))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice2_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice2_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice2_IS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice2_IT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice2_IU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice2_IV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____composante_J,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____composante_K,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____composante_S,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____composante_T,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____composante_U,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____composante_V,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____ponderation_TAHX,FU))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____A_TAHX_du_module,FU))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____B_TAHX_du_module,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____ponderation_SINX,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____A_SINX_du_module,FU))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____B_SINX_du_module,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image_____translation_du_module,FZERO))); DEFV(Common,DEFV(FonctionP,POINTERp(Io_hyperbolique_1_dans_le_plan_hyper_hyper_image(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) /* Fonction introduite le 20111229172827. */ DEFV(Argument,DEFV(image,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 0.01 donne de bons resultats). */ DEFV(Argument,DEFV(image,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ O_HYPERBOLIQUE_1_DANS_LE_PLAN_HYPER_HYPER_IMAGE(BLOC(store_point_load_point(imageA ,new_X ,new_Y ,imageR ,X ,Y ); ) ); RETI(imageR); Eblock EFonctionP /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N H Y P E R B O L I Q U E 1 G E N E R A L I S E E */ /* E N C O O R D O N N E E S D ' E C R A N [Xmin,Xmax] x [Ymin,Ymax] : */ /* */ /*************************************************************************************************************************************/ BFonctionF DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_RR,FU))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_RS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_RT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_RU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_RV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_II,FU))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_IS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_IT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_IU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_IV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_JR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_JI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_JJ,FU))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_JK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_JS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_JT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_JU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_JV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_KR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_KI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_KJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_KK,FU))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_KS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_KT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_KU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_KV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_SR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_SI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_SJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_SK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_SS,FU))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_ST,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_SU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_SV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_TR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_TI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_TJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_TK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_TS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_TT,FU))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_TU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_TV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_UR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_UI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_UJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_UK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_US,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_UT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_UU,FU))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_UV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_VR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_VI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_VJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_VK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_VS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_VT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_VU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice1_VV,FU))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice2_RR,FU))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice2_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice2_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice2_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice2_RS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice2_RT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice2_RU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice2_RV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice2_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice2_II,FU))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice2_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice2_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice2_IS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice2_IT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice2_IU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____matrice2_IV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____composante_J,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____composante_K,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____composante_S,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____composante_T,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____composante_U,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____composante_V,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____ponderation_TAHX,FU))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____A_TAHX_du_module,FU))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____B_TAHX_du_module,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____ponderation_SINX,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____A_SINX_du_module,FU))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____B_SINX_du_module,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image_____translation_du_module,FZERO))); DEFV(Common,DEFV(FonctionF,POINTERF(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_image(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) /* Fonction introduite le 20111229172827. */ DEFV(Argument,DEFV(imageF,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K' (une valeur de l'ordre de 0.01 donne de bons resultats). */ DEFV(Argument,DEFV(imageF,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ O_HYPERBOLIQUE_1_DANS_LE_PLAN_HYPER_HYPER_IMAGE(BLOC(storeF_point_loadF_point(imageA ,new_X ,new_Y ,imageR ,X ,Y ); ) ); RETIF(imageR); Eblock EFonctionF #undef O_HYPERBOLIQUE_1_DANS_LE_PLAN_HYPER_HYPER_IMAGE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L A T R A N S F O R M A T I O N H Y P E R B O L I Q U E 1 G E N E R A L I S E E */ /* E N C O O R D O N N E E S D U P L A N C O M P L E X E [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ #define O_HYPERBOLIQUE_1_DANS_LE_PLAN_HYPER_HYPER_COMPLEXE(action_de_rangement) \ Bblock \ TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_COMPLEXE \ (BLOC(VIDE;) \ ,TOUJOURS_VRAI \ ,BLOC(O_HYPERBOLIQUE_1_DANS_PLANS_HH_IMAGE_OU_HH_COMPLEXE;) \ ,BLOC(action_de_rangement) \ ); \ Eblock \ /* Definition de la transformation en coordonnees d'ecran [Xmin,Xmax]x[Ymin,Ymax]. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N H Y P E R B O L I Q U E 1 G E N E R A L I S E E */ /* E N C O O R D O N N E E S D U P L A N C O M P L E X E [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ BFonctionP DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_RR,FU))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_RS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_RT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_RU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_RV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_II,FU))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_IS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_IT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_IU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_IV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_JR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_JI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_JJ,FU))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_JK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_JS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_JT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_JU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_JV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_KR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_KI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_KJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_KK,FU))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_KS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_KT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_KU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_KV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_SR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_SI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_SJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_SK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_SS,FU))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_ST,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_SU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_SV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_TR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_TI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_TJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_TK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_TS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_TT,FU))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_TU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_TV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_UR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_UI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_UJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_UK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_US,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_UT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_UU,FU))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_UV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_VR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_VI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_VJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_VK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_VS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_VT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_VU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_VV,FU))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice2_RR,FU))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice2_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice2_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice2_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice2_RS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice2_RT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice2_RU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice2_RV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice2_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice2_II,FU))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice2_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice2_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice2_IS,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice2_IT,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice2_IU,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice2_IV,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____composante_J,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____composante_K,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____composante_S,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____composante_T,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____composante_U,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____composante_V,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____ponderation_TAHX,FU))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____A_TAHX_du_module,FU))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____B_TAHX_du_module,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____ponderation_SINX,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____A_SINX_du_module,FU))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____B_SINX_du_module,FZERO))); DEFV(Common,DEFV(Float,SINT(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____translation_du_module,FZERO))); DEFV(Common,DEFV(FonctionP,POINTERp(Io_hyperbolique_1_dans_le_plan_hyper_hyper_complexe(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) /* Fonction introduite le 20111229172827. */ DEFV(Argument,DEFV(image,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K'. */ DEFV(Argument,DEFV(image,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ O_HYPERBOLIQUE_1_DANS_LE_PLAN_HYPER_HYPER_COMPLEXE(BLOC(store_point_load_point(imageA ,fV_cDENORMALISE_OX(new_X) ,fV_cDENORMALISE_OY(new_Y) ,imageR ,X ,Y ); ) ); RETI(imageR); Eblock EFonctionP /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N H Y P E R B O L I Q U E 1 G E N E R A L I S E E */ /* E N C O O R D O N N E E S D U P L A N C O M P L E X E [0,1] x [0,1] : */ /* */ /*************************************************************************************************************************************/ BFonctionF DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_RR,FU))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_RS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_RT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_RU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_RV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_II,FU))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_IS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_IT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_IU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_IV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_JR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_JI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_JJ,FU))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_JK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_JS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_JT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_JU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_JV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_KR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_KI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_KJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_KK,FU))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_KS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_KT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_KU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_KV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_SR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_SI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_SJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_SK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_SS,FU))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_ST,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_SU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_SV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_TR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_TI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_TJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_TK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_TS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_TT,FU))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_TU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_TV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_UR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_UI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_UJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_UK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_US,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_UT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_UU,FU))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_UV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_VR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_VI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_VJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_VK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_VS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_VT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_VU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice1_VV,FU))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice2_RR,FU))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice2_RI,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice2_RJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice2_RK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice2_RS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice2_RT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice2_RU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice2_RV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice2_IR,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice2_II,FU))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice2_IJ,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice2_IK,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice2_IS,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice2_IT,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice2_IU,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____matrice2_IV,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____composante_J,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____composante_K,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____composante_S,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____composante_T,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____composante_U,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____composante_V,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____ponderation_TAHX,FU))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____A_TAHX_du_module,FU))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____B_TAHX_du_module,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____ponderation_SINX,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____A_SINX_du_module,FU))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____B_SINX_du_module,FZERO))); DEFV(Common,DEFV(Float,SINT(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe_____translation_du_module,FZERO))); DEFV(Common,DEFV(FonctionF,POINTERF(IFo_hyperbolique_1_dans_le_plan_hyper_hyper_complexe(imageR,ARGUMENT_POINTERs(R_translation) ,facteur_multiplicatif ,imageA,ARGUMENT_POINTERs(A_translation) ) ) ) ) /* Fonction introduite le 20111229172827. */ DEFV(Argument,DEFV(imageF,imageR)); /* Image resultat a generer. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(R_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de generation de 'imageR' ; on n'obliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ DEFV(Argument,DEFV(Float,facteur_multiplicatif)); /* Facteur multiplicatif 'K'. */ DEFV(Argument,DEFV(imageF,imageA)); /* Image argument. */ DEFV(Argument,DEFV(deltaF_2D,POINTERs(A_translation))); /* Translation horizontale ('dx') et verticale ('dy') des coordonnees */ /* de l'image 'imageA' ; on n'oubliera pas que cette translation est */ /* exprimee dans des unites telles que l'unite vaut respectivement */ /* [Xmin,Xmax] et [Ymin,Ymax]. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ O_HYPERBOLIQUE_1_DANS_LE_PLAN_HYPER_HYPER_COMPLEXE(BLOC(storeF_point_loadF_point(imageA ,fV_cDENORMALISE_OX(new_X) ,fV_cDENORMALISE_OY(new_Y) ,imageR ,X ,Y ); ) ); RETIF(imageR); Eblock EFonctionF #undef O_HYPERBOLIQUE_1_DANS_LE_PLAN_HYPER_HYPER_COMPLEXE #undef O_HYPERBOLIQUE_1_DANS_PLANS_HH_IMAGE_OU_HH_COMPLEXE #undef O_HYPERBOLIQUE_1_DANS_PLANS_HYPER_HYPER_IMAGE_OU_HYPER_HYPER_COMPLEXE #undef TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_COMPLEXE #undef TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_IMAGE #undef NomFonctionCourant #undef TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_IMAGE_____Ymax_ref #undef TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_IMAGE_____Ymin_ref #undef TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_IMAGE_____Xmax_ref #undef TRANSFORMATION_CONFORME_DANS_LE_PLAN_HYPER_HYPER_IMAGE_____Xmin_ref #undef A_translation__dX_____ #undef A_translation__dY_____ #undef R_translation__dX_____ #undef R_translation__dY_____ #undef storeJ_point_loadJ_point #undef storeF_point_loadF_point #undef store_point_load_point #undef COORDONNEES_EFFECTIVES_DE_store_load _______________________________________________________________________________________________________________________________________