/*************************************************************************************************************************************/
/* */
/* 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'... */