/*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D ' U N E V A R I E T E D E C A L A B I - Y A U 8 - D I M E N S I O N N E L L E : */ /* */ /* */ /* Author of '$xrs/CalabiYau.31$I' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 20230202171144). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /* :Debut_listMN_VARIETE_DE_CALABI_YAU_8_DIMENSIONNELLE_11: */ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E S T R O I S F O N C T I O N S ' F ' : */ /* */ /* */ /* Definition ('v $xrs/CalabiYau.32$K') : */ /* */ /* Une variete hyper-complexe de Calabi-Yau */ /* 8-dimensionnelle est definie */ /* implicitement par : */ /* */ /* / \n1 / \n2 */ /* | Q' | | Q' | */ /* | 1 | | 2 | */ /* | ---- | + | ---- | = 1 */ /* | A | | B | */ /* \ / \ / */ /* */ /* posons : */ /* */ /* Q' */ /* 1 */ /* Q = ---- */ /* 1 A */ /* */ /* Q' */ /* 2 */ /* Q = ---- */ /* 2 B */ /* */ /* d'ou : */ /* */ /* n1 n2 */ /* Q + Q = 1 */ /* 1 2 */ /* */ /* ou 'Q1' et 'Q2' sont deux nombres hyper-complexes. */ /* Cela peut se reecrire : */ /* */ /* 2 2 */ /* / n1 \ / n2 \ */ /* | ---- | | ---- | */ /* | 2 | | 2 | */ /* | Q | + | Q | = 1 */ /* \ 1 / \ 2 / */ /* */ /* ou encore : */ /* */ /* 2 2 */ /* cos(Q) + sin(Q) = 1 */ /* */ /* d'ou : */ /* */ /* n1 2 */ /* Q = cos(Q) */ /* 1 */ /* */ /* n2 2 */ /* Q = sin(Q) */ /* 2 */ /* */ /* (ou 'Q' est un "angle" hyper-complexe) d'ou : */ /* */ /* 1 */ /* k1 / \ ---- */ /* 2Ip.---- | | n1 */ /* n1 | 2 | */ /* Q = e | cos(Q) | */ /* 1 \ / */ /* */ /* 1 */ /* k2 / \ ---- */ /* 2Ip.---- | | n2 */ /* n2 | 2 | */ /* Q = e | sin(Q) | */ /* 2 \ / */ /* */ /* */ /* ou 'I' represente l'imaginaire pur (0,1,1,1). */ /* */ /* D'ou : */ /* */ /* k1 2 */ /* 2Ip.---- ---- */ /* n1 n1 */ /* Q = e .cos(Q) */ /* 1 */ /* */ /* k2 2 */ /* 2Ip.---- ---- */ /* n2 n2 */ /* Q = e .sin(Q) */ /* 2 */ /* */ /* et : */ /* */ /* Q' = A.Q */ /* 1 1 */ /* */ /* Q' = B.Q */ /* 2 2 */ /* */ /* ou 'k1' et 'k2' indicent les racines n-iemes */ /* de l'unite (n = {n1,n2}) : */ /* */ /* k1 E [ 0 , n1-1 ] */ /* */ /* k2 E [ 0 , n2-1 ] */ /* */ /* La variete est ainsi composee de n1.n2 "patches" */ /* parametres chacun par {u,v,u',v'}, avec : */ /* */ /* u E [ 0 , p/2 ] */ /* */ /* v E [ -1 , +1 ] */ /* */ /* (ou 'p' designe 'pi') et : */ /* */ /* Q = u + i.v + j.u' + k.v' */ /* */ /* {u',v'} etant deux parametres supplementaires (et arbitraires)... */ /* */ /* */ /*************************************************************************************************************************************/ /* :Fin_listMN_VARIETE_DE_CALABI_YAU_8_DIMENSIONNELLE_11: */ /*************************************************************************************************************************************/ /* */ /* */ /* Cette variete est donc a 8 dimensions, et la */ /* surface a 3 dimensions que l'on visualisera */ /* sera definie par : */ /* */ /* */ /* X = (A .R(Q )) + (A .I(Q )) + (A .J(Q )) + (A .K(Q )) + (A .R(Q )) + (A .I(Q )) + (A .J(Q )) + (A .K(Q )) */ /* X1 1 X2 1 X3 1 X4 1 X5 2 X6 2 X7 2 X8 2 */ /* */ /* */ /* Y = (A .R(Q )) + (A .I(Q )) + (A .J(Q )) + (A .K(Q )) + (A .R(Q )) + (A .I(Q )) + (A .J(Q )) + (A .K(Q )) */ /* Y1 1 Y2 1 Y3 1 Y4 1 Y5 2 Y6 2 Y7 2 Y8 2 */ /* */ /* */ /* Z = (A .R(Q )) + (A .I(Q )) + (A .J(Q )) + (A .K(Q )) + (A .R(Q )) + (A .I(Q )) + (A .J(Q )) + (A .K(Q )) */ /* Z1 1 Z2 1 Z3 1 Z4 1 Z5 2 Z6 2 Z7 2 Z8 2 */ /* */ /* */ /* soit, par defaut (qui fait que 'v $xiirs/CAYA.A1.0129' et 'v $xiirs/CAYA.O3' sont semblables bien qu'ayant ete */ /* generees par '$xrs/CalabiYau.12$X' et '$xrs/CalabiYau.32$X' respectivement) : */ /* */ /* */ /* X = R(Q ) + I(Q ) */ /* 1 2 */ /* */ /* */ /* Y = I(Q ) + I(Q ) */ /* 1 2 */ /* */ /* */ /* Z = R(Q ) + I(Q ) */ /* 2 2 */ /* */ /* */ /* (ou 'R(...)', 'I(...)', J(...)' et 'K(...)' designent respectivement */ /* les parties Reelle, Imaginaire, Jmaginaire et Kmaginaire). Une possible */ /* matrice 'A' sera : */ /* */ /* | 1 0 0 0 0 1 0 0 | */ /* | 0 1 0 0 0 1 0 0 | */ /* | 0 0 0 0 1 1 0 0 | */ /* */ /* qui permet de retrouver 'v $xiirs/CAYA.A1.0129' */ /* avec 'v $xiirs/CAYA.O3'... */ /* */ /*************************************************************************************************************************************/ DEFV(Local,DEFV(hyper_complexe,q1)); DEFV(Local,DEFV(hyper_complexe,q2)); /* Definition des coordonnees {q1,q2} de la variete hyper-complexe a 2 dimensions. */ DEFV(Local,DEFV(Float,INIT(coordonnee_u,FLOT__UNDEF))); DEFV(Local,DEFV(Float,INIT(coordonnee_v,FLOT__UNDEF))); /* Definition des coordonnees parametriques {u,v}. */ DEFV(Local,DEFV(Logical,INIT(initialiser_les_coordonnees_u_v,VRAI))); /* Controle de l'initialisation des coordonnees parametriques {u,v}. */ #include xrs/CalabiYau.31.1.I" /* Introduit le 20230210114942... */ #define GENERATION_DU_CALABI_YAU_3(u,v) \ Bblock \ Test(IFOU(IL_FAUT(initialiser_les_coordonnees_u_v) \ ,IFET(IL_NE_FAUT_PAS(initialiser_les_coordonnees_u_v) \ ,IFOU(IFNE(u,coordonnee_u) \ ,IFNE(v,coordonnee_v) \ ) \ ) \ ) \ ) \ Bblock \ EGAL(initialiser_les_coordonnees_u_v,FAUX); \ EGAL(coordonnee_u,u); \ EGAL(coordonnee_v,v); \ /* Initialisation et optimisation du processus... */ \ \ begin_nouveau_block \ Bblock \ GENERATION_DU_CALABI_YAU_OCTODIMENSIONNEL(coordonnee_u_prime,coordonnee_v_prime); \ /* Mis sous cette forme le 20230210114942... */ \ Eblock \ end_nouveau_block \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock \ /* Calcul sur la variete hyper-complexe a 2 dimensions. */ BFonctionV DEFV(Local,DEFV(FonctionV,FCalabiYau_3(u,v))) DEFV(Argument,DEFV(Float,u)); DEFV(Argument,DEFV(Float,v)); /* Definition des coordonnees parametriques. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ GENERATION_DU_CALABI_YAU_3(u,v); /* Calcul, si besoin est, de {q1,q2}. */ RETU_VIDE; Eblock EFonctionV #undef GENERATION_DU_CALABI_YAU_3 BFonctionF DEFV(Local,DEFV(FonctionF,FFx_CalabiYau_3(u,v))) DEFV(Argument,DEFV(Float,u)); DEFV(Argument,DEFV(Float,v)); /* Definition des coordonnees parametriques. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ CALS(FCalabiYau_3(u,v)); /* Calcul, si besoin est, de {q1,q2}. */ RETU(PROJECTION_PARALLELE_01_8D_3D_X(HReelle(q1) ,HImaginaire(q1) ,HJmaginaire(q1) ,HKmaginaire(q1) ,HReelle(q2) ,HImaginaire(q2) ,HJmaginaire(q2) ,HKmaginaire(q2) ) ); /* Calcul de : */ /* */ /* X = (A .R(Q )) + (A .I(Q )) + (A .J(Q )) + (A .K(Q )) */ /* X1 1 X2 1 X3 1 X4 1 */ /* + (A .R(Q )) + (A .I(Q )) + (A .J(Q )) + (A .K(Q )) */ /* X5 2 X6 2 X7 2 X8 2 */ /* */ Eblock EFonctionF BFonctionF DEFV(Local,DEFV(FonctionF,FFy_CalabiYau_3(u,v))) DEFV(Argument,DEFV(Float,u)); DEFV(Argument,DEFV(Float,v)); /* Definition des coordonnees parametriques. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ CALS(FCalabiYau_3(u,v)); /* Calcul, si besoin est, de {q1,q2}. */ RETU(PROJECTION_PARALLELE_01_8D_3D_Y(HReelle(q1) ,HImaginaire(q1) ,HJmaginaire(q1) ,HKmaginaire(q1) ,HReelle(q2) ,HImaginaire(q2) ,HJmaginaire(q2) ,HKmaginaire(q2) ) ); /* Calcul de : */ /* */ /* Y = (A .R(Q )) + (A .I(Q )) + (A .J(Q )) + (A .K(Q )) */ /* Y1 1 Y2 1 Y3 1 Y4 1 */ /* + (A .R(Q )) + (A .I(Q )) + (A .J(Q )) + (A .K(Q )) */ /* Y5 2 Y6 2 Y7 2 Y8 2 */ /* */ Eblock EFonctionF BFonctionF DEFV(Local,DEFV(FonctionF,FFz_CalabiYau_3(u,v))) DEFV(Argument,DEFV(Float,u)); DEFV(Argument,DEFV(Float,v)); /* Definition des coordonnees parametriques. */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ CALS(FCalabiYau_3(u,v)); /* Calcul, si besoin est, de {q1,q2}. */ RETU(PROJECTION_PARALLELE_01_8D_3D_Z(HReelle(q1) ,HImaginaire(q1) ,HJmaginaire(q1) ,HKmaginaire(q1) ,HReelle(q2) ,HImaginaire(q2) ,HJmaginaire(q2) ,HKmaginaire(q2) ) ); /* Calcul de : */ /* */ /* Z = (A .R(Q )) + (A .I(Q )) + (A .J(Q )) + (A .K(Q )) */ /* Z1 1 Z2 1 Z3 1 Z4 1 */ /* + (A .R(Q )) + (A .I(Q )) + (A .J(Q )) + (A .K(Q )) */ /* Z5 2 Z6 2 Z7 2 Z8 2 */ /* */ Eblock EFonctionF #define Fx_CalabiYau_3(u,v) \ FFx_CalabiYau_3(u,v) \ /* Definition de la fonction F (u,v). */ \ /* x */ #define Fy_CalabiYau_3(u,v) \ FFy_CalabiYau_3(u,v) \ /* Definition de la fonction F (u,v). */ \ /* y */ #define Fz_CalabiYau_3(u,v) \ FFz_CalabiYau_3(u,v) \ /* Definition de la fonction F (u,v). */ \ /* z */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* I N I T I A L I S A T I O N S R E L A T I V E S A L A P S E U D O - P R O J E C T I O N : */ /* */ /*************************************************************************************************************************************/ #define Pxyz_CalabiYau_3 \ Bblock \ BLOC(VIDE;); \ Eblock /* Initialisations specifiques a cette surface destinees a permettre la reinjection des */ /* trois pseudo-projections {Projection_de_Fx,Projection_de_Fy,Projection_de_Fz} dans */ /* 'v $xrs/project2D.11$K'... */