/*************************************************************************************************************************************/
/* */
/* 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.41$I' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 20230210115227). */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/* :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.42$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,w,t}, avec : */
/* */
/* u E [ 0 , p/2 ] */
/* */
/* v E [ -1 , +1 ] */
/* */
/* w E [ -1 , +1 ] */
/* */
/* t E [ -1 , +1 ] */
/* */
/* (ou 'p' designe 'pi') et : */
/* */
/* Q = u + i.v + j.w + k.t */
/* */
/* */
/*************************************************************************************************************************************/
/* :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)));
DEFV(Local,DEFV(Float,INIT(coordonnee_w,FLOT__UNDEF)));
DEFV(Local,DEFV(Float,INIT(coordonnee_t,FLOT__UNDEF)));
/* Definition des coordonnees parametriques {u,v,w,t}. */
DEFV(Local,DEFV(Logical,INIT(initialiser_les_coordonnees_u_v_w_t,VRAI)));
/* Controle de l'initialisation des coordonnees parametriques {u,v,w,t}. */
#include xrs/CalabiYau.31.1.I"
#define GENERATION_DU_CALABI_YAU_4(u,v,w,t) \
Bblock \
Test(IFOU(IL_FAUT(initialiser_les_coordonnees_u_v_w_t) \
,IFET(IL_NE_FAUT_PAS(initialiser_les_coordonnees_u_v_w_t) \
,I4OU(IFNE(u,coordonnee_u) \
,IFNE(v,coordonnee_v) \
,IFNE(w,coordonnee_w) \
,IFNE(t,coordonnee_t) \
) \
) \
) \
) \
Bblock \
EGAL(initialiser_les_coordonnees_u_v_w_t,FAUX); \
EGAL(coordonnee_u,u); \
EGAL(coordonnee_v,v); \
EGAL(coordonnee_w,w); \
EGAL(coordonnee_t,t); \
/* Initialisation et optimisation du processus... */ \
\
begin_nouveau_block \
Bblock \
GENERATION_DU_CALABI_YAU_OCTODIMENSIONNEL(w,t); \
/* Mis sous cette forme le 20230210114942... */ \
Eblock \
end_nouveau_block \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
/* Calcul sur la variete hyper-complexe a 4 dimensions. */
BFonctionV
DEFV(Local,DEFV(FonctionV,FCalabiYau_4(u,v,w,t)))
DEFV(Argument,DEFV(Float,u));
DEFV(Argument,DEFV(Float,v));
DEFV(Argument,DEFV(Float,w));
DEFV(Argument,DEFV(Float,t));
/* Definition des coordonnees parametriques. */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
Bblock
/*..............................................................................................................................*/
GENERATION_DU_CALABI_YAU_4(u,v,w,t);
/* Calcul, si besoin est, de {q1,q2}. */
RETU_VIDE;
Eblock
EFonctionV
#undef GENERATION_DU_CALABI_YAU_4
#define EDITION_EVENTUELLE_DES_PROJECTIONS(nom_de_la_coordonnee,valeur_de_la_coordonnee) \
Bblock \
Test(IL_FAUT(editer_les_projections)) \
Bblock \
CAL3(Prme0("{")); \
\
CAL3(Prme4("{%+.^^^,%+.^^^,%+.^^^,%+.^^^}" \
,HReelle(q1) \
,HImaginaire(q1) \
,HJmaginaire(q1) \
,HKmaginaire(q1) \
) \
); \
\
CAL3(Prme0(",")); \
\
CAL3(Prme4("{%+.^^^,%+.^^^,%+.^^^,%+.^^^}" \
,HReelle(q2) \
,HImaginaire(q2) \
,HJmaginaire(q2) \
,HKmaginaire(q2) \
) \
); \
\
CAL3(Prme0("} ")); \
\
CAL3(Prme1(" R=%+.^^^" \
,COEFFICIENT_DE_PROJECTION_PERSPECTIVE_01_8D_3D_R(HReelle(q1) \
,HImaginaire(q1) \
,HJmaginaire(q1) \
,HKmaginaire(q1) \
,HReelle(q2) \
,HImaginaire(q2) \
,HJmaginaire(q2) \
,HKmaginaire(q2) \
) \
) \
); \
\
CAL3(Prme0(" --> ")); \
\
CAL3(Prme2(" %s=%+.^^^\n" \
,nom_de_la_coordonnee \
,valeur_de_la_coordonnee \
) \
); \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
/* Procedure introduite le 20230317100821... */
BFonctionF
DEFV(Local,DEFV(FonctionF,FFx_CalabiYau_4(u,v,w,t)))
DEFV(Argument,DEFV(Float,u));
DEFV(Argument,DEFV(Float,v));
DEFV(Argument,DEFV(Float,w));
DEFV(Argument,DEFV(Float,t));
/* Definition des coordonnees parametriques. */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
Bblock
DEFV(Float,INIT(coordonnee_projetee_X,FLOT__UNDEF));
/* Coordonnee 'X' projetee introduite explicitement le 20230317095358... */
/*..............................................................................................................................*/
CALS(FCalabiYau_4(u,v,w,t));
/* Calcul, si besoin est, de {q1,q2}. */
EGAL(coordonnee_projetee_X
,COND(IL_FAUT(faire_une_projection_parallele)
,PROJECTION_PARALLELE_01_8D_3D_X(HReelle(q1)
,HImaginaire(q1)
,HJmaginaire(q1)
,HKmaginaire(q1)
,HReelle(q2)
,HImaginaire(q2)
,HJmaginaire(q2)
,HKmaginaire(q2)
)
,PROJECTION_PERSPECTIVE_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 */
/* */
EDITION_EVENTUELLE_DES_PROJECTIONS("X",coordonnee_projetee_X);
/* Introduit le 20230317100821... */
RETU(coordonnee_projetee_X);
Eblock
EFonctionF
BFonctionF
DEFV(Local,DEFV(FonctionF,FFy_CalabiYau_4(u,v,w,t)))
DEFV(Argument,DEFV(Float,u));
DEFV(Argument,DEFV(Float,v));
DEFV(Argument,DEFV(Float,w));
DEFV(Argument,DEFV(Float,t));
/* Definition des coordonnees parametriques. */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
Bblock
DEFV(Float,INIT(coordonnee_projetee_Y,FLOT__UNDEF));
/* Coordonnee 'Y' projetee introduite explicitement le 20230317095358... */
/*..............................................................................................................................*/
CALS(FCalabiYau_4(u,v,w,t));
/* Calcul, si besoin est, de {q1,q2}. */
EGAL(coordonnee_projetee_Y
,COND(IL_FAUT(faire_une_projection_parallele)
,PROJECTION_PARALLELE_01_8D_3D_Y(HReelle(q1)
,HImaginaire(q1)
,HJmaginaire(q1)
,HKmaginaire(q1)
,HReelle(q2)
,HImaginaire(q2)
,HJmaginaire(q2)
,HKmaginaire(q2)
)
,PROJECTION_PERSPECTIVE_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 */
/* */
EDITION_EVENTUELLE_DES_PROJECTIONS("Y",coordonnee_projetee_Y);
/* Introduit le 20230317100821... */
RETU(coordonnee_projetee_Y);
Eblock
EFonctionF
BFonctionF
DEFV(Local,DEFV(FonctionF,FFz_CalabiYau_4(u,v,w,t)))
DEFV(Argument,DEFV(Float,u));
DEFV(Argument,DEFV(Float,v));
DEFV(Argument,DEFV(Float,w));
DEFV(Argument,DEFV(Float,t));
/* Definition des coordonnees parametriques. */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
Bblock
DEFV(Float,INIT(coordonnee_projetee_Z,FLOT__UNDEF));
/* Coordonnee 'Z' projetee introduite explicitement le 20230317095358... */
/*..............................................................................................................................*/
CALS(FCalabiYau_4(u,v,w,t));
/* Calcul, si besoin est, de {q1,q2}. */
EGAL(coordonnee_projetee_Z
,COND(IL_FAUT(faire_une_projection_parallele)
,PROJECTION_PARALLELE_01_8D_3D_Z(HReelle(q1)
,HImaginaire(q1)
,HJmaginaire(q1)
,HKmaginaire(q1)
,HReelle(q2)
,HImaginaire(q2)
,HJmaginaire(q2)
,HKmaginaire(q2)
)
,PROJECTION_PERSPECTIVE_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 */
/* */
EDITION_EVENTUELLE_DES_PROJECTIONS("Z",coordonnee_projetee_Z);
/* Introduit le 20230317100821... */
RETU(coordonnee_projetee_Z);
Eblock
EFonctionF
#undef EDITION_EVENTUELLE_DES_PROJECTIONS
#define Fx_CalabiYau_4(u,v,w,t) \
FFx_CalabiYau_4(u,v,w,t) \
/* Definition de la fonction F (u,v,w,t). */ \
/* x */
#define Fy_CalabiYau_4(u,v,w,t) \
FFy_CalabiYau_4(u,v,w,t) \
/* Definition de la fonction F (u,v,w,t). */ \
/* y */
#define Fz_CalabiYau_4(u,v,w,t) \
FFz_CalabiYau_4(u,v,w,t) \
/* Definition de la fonction F (u,v,w,t). */ \
/* 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_4 \
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'... */