/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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   6 - D I M E N S I O N N E L L E  :           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xrs/CalabiYau.21$I' :                                                                                          */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 20010530141018).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*        :Debut_listMN_VARIETE_DE_CALABI_YAU_6_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.22$K') :                                                                                    */
/*                                                                                                                                   */
/*                    Une variete complexe de Calabi-Yau                                                                             */
/*                  6-dimensionnelle est definie                                                                                     */
/*                  implicitement par :                                                                                              */
/*                                                                                                                                   */
/*                                      /      \n1   /      \n2   /      \n3                                                         */
/*                                      |  Z'  |     |  Z'  |     |  Z'  |                                                           */
/*                                      |   1  |     |   2  |     |   3  |                                                           */
/*                                      | ---- |   + | ---- |   + | ---- |   = 1                                                     */
/*                                      |  A   |     |  B   |     |  C   |                                                           */
/*                                      \      /     \      /     \      /                                                           */
/*                                                                                                                                   */
/*                  posons :                                                                                                         */
/*                                                                                                                                   */
/*                                            Z'                                                                                     */
/*                                             1                                                                                     */
/*                                      Z  = ----                                                                                    */
/*                                       1    A                                                                                      */
/*                                                                                                                                   */
/*                                            Z'                                                                                     */
/*                                             2                                                                                     */
/*                                      Z  = ----                                                                                    */
/*                                       2    B                                                                                      */
/*                                                                                                                                   */
/*                                            Z'                                                                                     */
/*                                             3                                                                                     */
/*                                      Z  = ----                                                                                    */
/*                                       3    C                                                                                      */
/*                                                                                                                                   */
/*                  d'ou :                                                                                                           */
/*                                                                                                                                   */
/*                                       n1    n2    n3                                                                              */
/*                                      Z   + Z   + Z   = 1                                                                          */
/*                                       1     2     3                                                                               */
/*                                                                                                                                   */
/*                  ou 'Z1', 'Z2' et 'Z3' sont trois nombres complexes.                                                              */
/*                  Cela peut se reecrire :                                                                                          */
/*                                                                                                                                   */
/*                                               2            2            2                                                         */
/*                                      /   n1  \    /   n2  \    /   n3  \                                                          */
/*                                      |  ---- |    |  ---- |    |  ---- |                                                          */
/*                                      |   2   |    |   2   |    |   2   |  = 1                                                     */
/*                                      | Z     |  + | Z     |  + | Z     |                                                          */
/*                                      \  1    /    \  2    /    \  3    /                                                          */
/*                                                                                                                                   */
/*                  ou encore :                                                                                                      */
/*                                                                                                                                   */
/*                                              2           2           2           2             2                                  */
/*                                      cos(phi) *sin(theta)  + sin(phi) *sin(theta)  + cos(theta) = 1                               */
/*                                                                                                                                   */
/*                  d'ou :                                                                                                           */
/*                                                                                                                                   */
/*                                       n1           2           2                                                                  */
/*                                      Z   = cos(phi) *sin(theta)                                                                   */
/*                                       1                                                                                           */
/*                                                                                                                                   */
/*                                       n2           2           2                                                                  */
/*                                      Z   = sin(phi) *sin(theta)                                                                   */
/*                                       2                                                                                           */
/*                                                                                                                                   */
/*                                       n3             2                                                                            */
/*                                      Z   = cos(theta)                                                                             */
/*                                       3                                                                                           */
/*                                                                                                                                   */
/*                  (ou 'phi' et 'theta' sont deux "angles" complexes) d'ou :                                                        */
/*                                                                                                                                   */
/*                                                                               1                                                   */
/*                                                 k1   /                     \ ----                                                 */
/*                                            2ip.---- |                       | n1                                                  */
/*                                                 n1  |         2           2 |                                                     */
/*                                      Z  = e         | cos(phi) *sin(theta)  |                                                     */
/*                                       1              \                     /                                                      */
/*                                                                                                                                   */
/*                                                                               1                                                   */
/*                                                 k2   /                     \ ----                                                 */
/*                                            2ip.---- |                       | n2                                                  */
/*                                                 n2  |         2           2 |                                                     */
/*                                      Z  = e         | sin(phi) *sin(theta)  |                                                     */
/*                                       2              \                     /                                                      */
/*                                                                                                                                   */
/*                                                                     1                                                             */
/*                                                 k3   /           \ ----                                                           */
/*                                            2ip.---- |             | n3                                                            */
/*                                                 n3  |           2 |                                                               */
/*                                      Z  = e         | cos(theta)  |                                                               */
/*                                       3              \           /                                                                */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                  ou 'i' represente l'imaginaire pur (0,1).                                                                        */
/*                                                                                                                                   */
/*                  D'ou :                                                                                                           */
/*                                                                                                                                   */
/*                                                                             2                                                     */
/*                                                 k1   /                   \ ----                                                   */
/*                                            2ip.---- |                     | n1                                                    */
/*                                                 n1  |                     |                                                       */
/*                                      Z  = e         | cos(phi)*sin(theta) |                                                       */
/*                                       1              \                   /                                                        */
/*                                                                                                                                   */
/*                                                                             2                                                     */
/*                                                 k2   /                   \ ----                                                   */
/*                                            2ip.---- |                     | n2                                                    */
/*                                                 n2  |                     |                                                       */
/*                                      Z  = e         | sin(phi)*sin(theta) |                                                       */
/*                                       2              \                   /                                                        */
/*                                                                                                                                   */
/*                                                                    2                                                              */
/*                                                 k3   /          \ ----                                                            */
/*                                            2ip.---- |            | n3                                                             */
/*                                                 n3  |            |                                                                */
/*                                      Z  = e         | cos(theta) |                                                                */
/*                                       3              \          /                                                                 */
/*                                                                                                                                   */
/*                  et :                                                                                                             */
/*                                                                                                                                   */
/*                                      Z' = A.Z                                                                                     */
/*                                       1      1                                                                                    */
/*                                                                                                                                   */
/*                                      Z' = B.Z                                                                                     */
/*                                       2      2                                                                                    */
/*                                                                                                                                   */
/*                                      Z' = C.Z                                                                                     */
/*                                       3      3                                                                                    */
/*                                                                                                                                   */
/*                  ou 'k1', 'k2' et 'k3' indicent les racines n-iemes                                                               */
/*                  de l'unite (n = {n1,n2,n3}) :                                                                                    */
/*                                                                                                                                   */
/*                                      k1 E [ 0 , n1-1 ]                                                                            */
/*                                                                                                                                   */
/*                                      k2 E [ 0 , n2-1 ]                                                                            */
/*                                                                                                                                   */
/*                                      k3 E [ 0 , n3-1 ]                                                                            */
/*                                                                                                                                   */
/*                  La variete est ainsi composee de n1.n2.n3 "patches"                                                              */
/*                  parametres chacun par {u(?),v(?)}, avec :                                                                        */
/*                                                                                                                                   */
/*                                      u(?) E [ 0 , p/2 ]                                                                           */
/*                                                                                                                                   */
/*                                      v(?) E [ -1 , +1 ]                                                                           */
/*                                                                                                                                   */
/*                  (ou 'p' designe 'pi' et ou '?' represente                                                                        */
/*                  'phi' et 'theta') et :                                                                                           */
/*                                                                                                                                   */
/*                                      phi   = u1 + i.v1 = u(phi)   + i.v(phi)                                                      */
/*                                      theta = u2 + i.v2 = u(theta) + i.v(theta)                                                    */
/*                                                                                                                                   */
/*                  (voir a ce propos 'v $xrs/CalabiYau.14$I permutation.de..u..et.de..v.'                                           */
/*                  pour la justification des bornes de 'u' et de 'v', en particulier).                                              */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                  [ceci est une generalisation de "A Construction for Computer Complex Curves"                                     */
/*                  de Andrew J. Hanson publie dans "Notices of the American Mathematical Society" du 11-12/1994]                    */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
/*        :Fin_listMN_VARIETE_DE_CALABI_YAU_6_DIMENSIONNELLE_11:                                                                     */
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                  Cette variete est donc a 6 dimensions, et la                                                                     */
/*                  surface a 3 dimensions que l'on visualisera                                                                      */
/*                  sera definie par :                                                                                               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                                      F (u1,v1,u2,v2) = A   R(Z ) + A   I(Z ) + A   R(Z ) + A   I(Z ) + A   R(Z ) + A   I(Z )      */
/*                                       x                 xR1   1     xI1   1     xR2   2     xI2   2     xR3   3     xI3   3       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                                      F (u1,v1,u2,v2) = A   R(Z ) + A   I(Z ) + A   R(Z ) + A   I(Z ) + A   R(Z ) + A   I(Z )      */
/*                                       y                 yR1   1     yI1   1     yR2   2     yI2   2     yR3   3     yI3   3       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                                      F (u1,v1,u2,v2) = A   R(Z ) + A   I(Z ) + A   R(Z ) + A   I(Z ) + A   R(Z ) + A   I(Z )      */
/*                                       z                 zR1   1     zI1   1     zR2   2     zI2   2     zR3   3     zI3   3       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                  soit, par defaut :                                                                                               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                                      F (u1,v1,u2,v2) =     R(Z )                         +     I(Z )                              */
/*                                       x                       1                                   2                               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                                      F (u1,v1,u2,v2) =                 I(Z )                         +     R(Z )                  */
/*                                       y                                   1                                   3                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                                      F (u1,v1,u2,v2) =                             R(Z )                         +     I(Z )      */
/*                                       z                                               2                                   3       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                  (ou 'R(...)' et 'I(...)' designent respectivement                                                                */
/*                  les parties Reelle et Imaginaire). Une possible                                                                  */
/*                  matrice 'A' sera :                                                                                               */
/*                                                                                                                                   */
/*                                      | 1 0 0 1 0 0 |                                                                              */
/*                                      | 0 1 0 0 1 0 |                                                                              */
/*                                      | 0 0 1 0 0 1 |                                                                              */
/*                                                                                                                                   */
/*                  Le 20040331085528 ont ete introduites les procedures                                                             */
/*                  de projection 'v $ximd/operator.1$FON PROJECTION_PARALLELE_01_6D_3D_'.                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

__________pushdef(%%D%%z1%%F%%,z1_2)
__________pushdef(%%D%%z2%%F%%,z2_2)
__________pushdef(%%D%%z3%%F%%,z3_2)
__________pushdef(%%D%%coordonnee_u1%%F%%,coordonnee_u1_2)
__________pushdef(%%D%%coordonnee_v1%%F%%,coordonnee_v1_2)
__________pushdef(%%D%%coordonnee_u2%%F%%,coordonnee_u2_2)
__________pushdef(%%D%%coordonnee_v2%%F%%,coordonnee_v2_2)
__________pushdef(%%D%%initialiser_les_coordonnees_u_v%%F%%,initialiser_les_coordonnees_u_v_2)
                                        /* En vue d'interpolation de surfaces pour eviter des doubles definitions (introduit le      */
                                        /* 20040501115641).                                                                          */

DEFV(Local,DEFV(complexe,z1));
DEFV(Local,DEFV(complexe,z2));
DEFV(Local,DEFV(complexe,z3));
                                        /* Definition des coordonnees {z1,z2,z3} de la variete complexe a 3 dimensions.              */
DEFV(Local,DEFV(Float,INIT(coordonnee_u1,FLOT__UNDEF)));
DEFV(Local,DEFV(Float,INIT(coordonnee_v1,FLOT__UNDEF)));
                                        /* Definition des coordonnees parametriques {u1,v1}.                                         */
DEFV(Local,DEFV(Float,INIT(coordonnee_u2,FLOT__UNDEF)));
DEFV(Local,DEFV(Float,INIT(coordonnee_v2,FLOT__UNDEF)));
                                        /* Definition des coordonnees parametriques {u2,v2}.                                         */
DEFV(Local,DEFV(Logical,INIT(initialiser_les_coordonnees_u_v,VRAI)));
                                        /* Controle de l'initialisation des coordonnees parametriques {u?,v?}.                       */

#define   GENERATION_DU_CALABI_YAU_2(u1,v1,u2,v2)                                                                                       \
                    Bblock                                                                                                              \
                    Test(IFOU(IL_FAUT(initialiser_les_coordonnees_u_v)                                                                  \
                             ,IFET(IL_NE_FAUT_PAS(initialiser_les_coordonnees_u_v)                                                      \
                                  ,IFOU(IFOU(IFNE(u1,coordonnee_u1)                                                                     \
                                            ,IFNE(v1,coordonnee_v1)                                                                     \
                                             )                                                                                          \
                                       ,IFOU(IFNE(u2,coordonnee_u2)                                                                     \
                                            ,IFNE(v2,coordonnee_v2)                                                                     \
                                             )                                                                                          \
                                        )                                                                                               \
                                   )                                                                                                    \
                              )                                                                                                         \
                         )                                                                                                              \
                         Bblock                                                                                                         \
                         DEFV(Float,INIT(exposant_n1,parametre_n1));                                                                    \
                         DEFV(Float,INIT(demi_exposant_n1,MOIT(parametre_n1)));                                                         \
                                        /* Exposant (n1) et demi-exposant (n1/2).                                                    */ \
                         DEFV(Float,INIT(exposant_n2,parametre_n2));                                                                    \
                         DEFV(Float,INIT(demi_exposant_n2,MOIT(parametre_n2)));                                                         \
                                        /* Exposant (n2) et demi-exposant (n2/2).                                                    */ \
                         DEFV(Float,INIT(exposant_n3,parametre_n3));                                                                    \
                         DEFV(Float,INIT(demi_exposant_n3,MOIT(parametre_n3)));                                                         \
                                        /* Exposant (n3) et demi-exposant (n3/2).                                                    */ \
                         DEFV(complexe,phi);                                                                                            \
                         DEFV(complexe,cosinus_phi);                                                                                    \
                         DEFV(complexe,sinus_phi);                                                                                      \
                         DEFV(complexe,theta);                                                                                          \
                         DEFV(complexe,cosinus_theta);                                                                                  \
                         DEFV(complexe,sinus_theta);                                                                                    \
                         DEFV(complexe,puissance_de_cosinus_phi_sinus_theta);                                                           \
                         DEFV(complexe,puissance_de_sinus_phi_sinus_theta);                                                             \
                         DEFV(complexe,puissance_de_cosinus_theta);                                                                     \
                         DEFV(complexe,racine_de_l_unite_1);                                                                            \
                         DEFV(complexe,racine_de_l_unite_2);                                                                            \
                         DEFV(complexe,racine_de_l_unite_3);                                                                            \
                         DEFV(complexe,produit_temporaire);                                                                             \
                                        /* Nombres complexes de manoeuvre...                                                         */ \
                                                                                                                                        \
                         EGAL(initialiser_les_coordonnees_u_v,FAUX);                                                                    \
                         EGAL(coordonnee_u1,u1);                                                                                        \
                         EGAL(coordonnee_v1,v1);                                                                                        \
                         EGAL(coordonnee_u2,u2);                                                                                        \
                         EGAL(coordonnee_v2,v2);                                                                                        \
                                        /* Initialisation et optimisation du processus...                                            */ \
                                                                                                                                        \
                         Cinitialisation(phi,u1,v1);                                                                                    \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  phi   = u1 + i.v1                                                        */ \
                                        /*                                                                                           */ \
                         Cinitialisation(theta,u2,v2);                                                                                  \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  theta = u2 + i.v2                                                        */ \
                                        /*                                                                                           */ \
                         Ccosinus(cosinus_phi,phi);                                                                                     \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  cos(phi)                                                                 */ \
                                        /*                                                                                           */ \
                         Csinus(sinus_phi,phi);                                                                                         \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  sin(phi)                                                                 */ \
                                        /*                                                                                           */ \
                         Ccosinus(cosinus_theta,theta);                                                                                 \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  cos(theta)                                                               */ \
                                        /*                                                                                           */ \
                         Csinus(sinus_theta,theta);                                                                                     \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  sin(theta)                                                               */ \
                                        /*                                                                                           */ \
                         Cproduit(produit_temporaire,cosinus_phi,sinus_theta);                                                          \
                         Cpuissance(puissance_de_cosinus_phi_sinus_theta,produit_temporaire,INVE(demi_exposant_n1));                    \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                           2              2                                                */ \
                                        /*                          ----           ----                                              */ \
                                        /*                           n1             n1                                               */ \
                                        /*                  cos(phi)     sin(theta)                                                  */ \
                                        /*                                                                                           */ \
                         Cproduit(produit_temporaire,sinus_phi,sinus_theta);                                                            \
                         Cpuissance(puissance_de_sinus_phi_sinus_theta,produit_temporaire,INVE(demi_exposant_n2));                      \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                           2              2                                                */ \
                                        /*                          ----           ----                                              */ \
                                        /*                           n2             n2                                               */ \
                                        /*                  sin(phi)     sin(theta)                                                  */ \
                                        /*                                                                                           */ \
                         Cpuissance(puissance_de_cosinus_theta,cosinus_theta,INVE(demi_exposant_n3));                                   \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                             2                                                             */ \
                                        /*                            ----                                                           */ \
                                        /*                             n3                                                            */ \
                                        /*                  cos(theta)                                                               */ \
                                        /*                                                                                           */ \
                         Cdefinition_trigonometrique(racine_de_l_unite_1                                                                \
                                                    ,C_MODULE_UNITAIRE                                                                  \
                                                    ,SCAL(CERCLE_TRIGONOMETRIQUE,exposant_n1,parametre_k1)                              \
                                                     );                                                                                 \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        k1                                                                 */ \
                                        /*                   2ip.----                                                                */ \
                                        /*                        n1                                                                 */ \
                                        /*                  e                                                                        */ \
                                        /*                                                                                           */ \
                         Cdefinition_trigonometrique(racine_de_l_unite_2                                                                \
                                                    ,C_MODULE_UNITAIRE                                                                  \
                                                    ,SCAL(CERCLE_TRIGONOMETRIQUE,exposant_n2,parametre_k2)                              \
                                                     );                                                                                 \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        k2                                                                 */ \
                                        /*                   2ip.----                                                                */ \
                                        /*                        n2                                                                 */ \
                                        /*                  e                                                                        */ \
                                        /*                                                                                           */ \
                         Cdefinition_trigonometrique(racine_de_l_unite_3                                                                \
                                                    ,C_MODULE_UNITAIRE                                                                  \
                                                    ,SCAL(CERCLE_TRIGONOMETRIQUE,exposant_n3,parametre_k3)                              \
                                                     );                                                                                 \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        k3                                                                 */ \
                                        /*                   2ip.----                                                                */ \
                                        /*                        n3                                                                 */ \
                                        /*                  e                                                                        */ \
                                        /*                                                                                           */ \
                         Cproduit(z1,racine_de_l_unite_1,puissance_de_cosinus_phi_sinus_theta);                                         \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        k1           2              2                                      */ \
                                        /*                   2ip.----         ----           ----                                    */ \
                                        /*                        n1           n1             n1                                     */ \
                                        /*                  e        .cos(phi)     sin(theta)                                        */ \
                                        /*                                                                                           */ \
                         Cproduit(z2,racine_de_l_unite_2,puissance_de_sinus_phi_sinus_theta);                                           \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        k2           2              2                                      */ \
                                        /*                   2ip.----         ----           ----                                    */ \
                                        /*                        n2           n2             n2                                     */ \
                                        /*                  e        .sin(phi)     sin(theta)                                        */ \
                                        /*                                                                                           */ \
                         Cproduit(z3,racine_de_l_unite_3,puissance_de_cosinus_theta);                                                   \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        k3             2                                                   */ \
                                        /*                   2ip.----           ----                                                 */ \
                                        /*                        n3             n3                                                  */ \
                                        /*                  e        .cos(theta)                                                     */ \
                                        /*                                                                                           */ \
                         Cproduit(z1,parametre_zA,z1);                                                                                  \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                          k1           2              2                                    */ \
                                        /*                     2ip.----         ----           ----                                  */ \
                                        /*                          n1           n1             n1                                   */ \
                                        /*                  A.e        .cos(phi)     sin(theta)                                      */ \
                                        /*                                                                                           */ \
                         Cproduit(z2,parametre_zB,z2);                                                                                  \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                          k2           2              2                                    */ \
                                        /*                     2ip.----         ----           ----                                  */ \
                                        /*                          n2           n2             n2                                   */ \
                                        /*                  B.e        .sin(phi)     sin(theta)                                      */ \
                                        /*                                                                                           */ \
                         Cproduit(z3,parametre_zC,z3);                                                                                  \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                          k3             2                                                 */ \
                                        /*                     2ip.----           ----                                               */ \
                                        /*                          n3             n3                                                */ \
                                        /*                  C.e        .cos(theta)                                                   */ \
                                        /*                                                                                           */ \
                                                                                                                                        \
                         Test(IL_FAUT(valider_la_qualite_du_calcul_de_z1_de_z2_et_de_z3))                                               \
                              Bblock                                                                                                    \
                              DEFV(complexe,z1_puissance_n1);                                                                           \
                              DEFV(complexe,z2_puissance_n2);                                                                           \
                              DEFV(complexe,z3_puissance_n3);                                                                           \
                              DEFV(complexe,validation);                                                                                \
                                        /* Nombres complexes de manoeuvre...                                                         */ \
                                                                                                                                        \
                              Cpuissance(z1_puissance_n1,z1,parametre_n1);                                                              \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                   n1                                                                      */ \
                                        /*                  z                                                                        */ \
                                        /*                   1                                                                       */ \
                                        /*                                                                                           */ \
                              Cpuissance(z2_puissance_n2,z2,parametre_n2);                                                              \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                   n2                                                                      */ \
                                        /*                  z                                                                        */ \
                                        /*                   2                                                                       */ \
                                        /*                                                                                           */ \
                              Cpuissance(z3_puissance_n3,z3,parametre_n3);                                                              \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                   n3                                                                      */ \
                                        /*                  z                                                                        */ \
                                        /*                   3                                                                       */ \
                                        /*                                                                                           */ \
                              Csomme(validation,z1_puissance_n1,z2_puissance_n2);                                                       \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                   n1    n2                                                                */ \
                                        /*                  z  +  z                                                                  */ \
                                        /*                   1     2                                                                 */ \
                                        /*                                                                                           */ \
                              Csomme(validation,validation,z3_puissance_n3);                                                            \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                   n1    n2    n3                                                          */ \
                                        /*                  z   + z   + z                                                            */ \
                                        /*                   1     2     3                                                           */ \
                                        /*                                                                                           */ \
                                                                                                                                        \
                              Test(CTestIFNE_a_peu_pres_absolu(validation,C_____nombre_complexe_p1__0                                   \
                                                              ,epsilon_de_validation_du_calcul_de_z1_de_z2_et_de_z3                     \
                                                               )                                                                        \
                                   )                                                                                                    \
                                   Bblock                                                                                               \
                                   PRINT_ERREUR("le calcul de 'z1', 'z2' et de 'z3' est incorrect");                                    \
                                   PRINT_DANS_C("z1",z1);                                                                               \
                                   PRINT_DANS_C("z2",z2);                                                                               \
                                   PRINT_DANS_C("z3",z3);                                                                               \
                                   CAL1(Prer4("(%+.^^^,%+.^^^) est obtenu au lieu de (%+.^^^,%+.^^^)\n"                                 \
                                             ,Reelle(validation),Imaginaire(validation)                                                 \
                                             ,Reelle(C_____nombre_complexe_p1__0),Imaginaire(C_____nombre_complexe_p1__0)               \
                                              )                                                                                         \
                                        );                                                                                              \
                                   Eblock                                                                                               \
                              ATes                                                                                                      \
                                   Bblock                                                                                               \
                                   Eblock                                                                                               \
                              ETes                                                                                                      \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Calcul sur la variete complexe a 3 dimensions.                                            */

BFonctionV

DEFV(Local,DEFV(FonctionV,FCalabiYau_2(u1,v1,u2,v2)))
DEFV(Argument,DEFV(Float,u1));
DEFV(Argument,DEFV(Float,v1));
DEFV(Argument,DEFV(Float,u2));
DEFV(Argument,DEFV(Float,v2));
                                        /* Definition des coordonnees parametriques.                                                 */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     GENERATION_DU_CALABI_YAU_2(u1,v1,u2,v2);
                                        /* Calcul, si besoin est, de {z1,z2,z3}.                                                     */

     RETU_VIDE;
                                        /* Introduit le 20071130134837...                                                            */
     Eblock

EFonctionV

#undef    GENERATION_DU_CALABI_YAU_2

BFonctionF

DEFV(Local,DEFV(FonctionF,FFx_CalabiYau_2(u1,v1,u2,v2)))
DEFV(Argument,DEFV(Float,u1));
DEFV(Argument,DEFV(Float,v1));
DEFV(Argument,DEFV(Float,u2));
DEFV(Argument,DEFV(Float,v2));
                                        /* Definition des coordonnees parametriques.                                                 */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     CALS(FCalabiYau_2(u1,v1,u2,v2));
                                        /* Calcul, si besoin est, de {z1,z2,z3}.                                                     */

     RETU(PROJECTION_PARALLELE_01_6D_3D_X(Reelle(z1)
                                         ,Imaginaire(z1)
                                         ,Reelle(z2)
                                         ,Imaginaire(z2)
                                         ,Reelle(z3)
                                         ,Imaginaire(z3)
                                          )
          );
                                        /* Calcul de :                                                                               */
                                        /*                                                                                           */
                                        /*   F (u1,v1,u2,v2) = A   R(Z ) + A   I(Z ) + A   R(Z ) + A   I(Z ) + A   R(Z ) + A   I(Z ) */
                                        /*    x                 xR1   1     xI1   1     xR2   2     xI2   2     xR3   3     xI3   3  */
                                        /*                                                                                           */
     Eblock

EFonctionF

BFonctionF

DEFV(Local,DEFV(FonctionF,FFy_CalabiYau_2(u1,v1,u2,v2)))
DEFV(Argument,DEFV(Float,u1));
DEFV(Argument,DEFV(Float,v1));
DEFV(Argument,DEFV(Float,u2));
DEFV(Argument,DEFV(Float,v2));
                                        /* Definition des coordonnees parametriques.                                                 */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     CALS(FCalabiYau_2(u1,v1,u2,v2));
                                        /* Calcul, si besoin est, de {z1,z2,z3}.                                                     */

     RETU(PROJECTION_PARALLELE_01_6D_3D_Y(Reelle(z1)
                                         ,Imaginaire(z1)
                                         ,Reelle(z2)
                                         ,Imaginaire(z2)
                                         ,Reelle(z3)
                                         ,Imaginaire(z3)
                                          )
          );
                                        /* Calcul de :                                                                               */
                                        /*                                                                                           */
                                        /*   F (u1,v1,u2,v2) = A   R(Z ) + A   I(Z ) + A   R(Z ) + A   I(Z ) + A   R(Z ) + A   I(Z ) */
                                        /*    y                 yR1   1     yI1   1     yR2   2     yI2   2     yR3   3     yI3   3  */
                                        /*                                                                                           */
     Eblock

EFonctionF

BFonctionF

DEFV(Local,DEFV(FonctionF,FFz_CalabiYau_2(u1,v1,u2,v2)))
DEFV(Argument,DEFV(Float,u1));
DEFV(Argument,DEFV(Float,v1));
DEFV(Argument,DEFV(Float,u2));
DEFV(Argument,DEFV(Float,v2));
                                        /* Definition des coordonnees parametriques.                                                 */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     CALS(FCalabiYau_2(u1,v1,u2,v2));
                                        /* Calcul, si besoin est, de {z1,z2,z3}.                                                     */

     RETU(PROJECTION_PARALLELE_01_6D_3D_Z(Reelle(z1)
                                         ,Imaginaire(z1)
                                         ,Reelle(z2)
                                         ,Imaginaire(z2)
                                         ,Reelle(z3)
                                         ,Imaginaire(z3)
                                          )
          );
                                        /* Calcul de :                                                                               */
                                        /*                                                                                           */
                                        /*   F (u1,v1,u2,v2) = A   R(Z ) + A   I(Z ) + A   R(Z ) + A   I(Z ) + A   R(Z ) + A   I(Z ) */
                                        /*    z                 zR1   1     zI1   1     zR2   2     zI2   2     zR3   3     zI3   3  */
                                        /*                                                                                           */
     Eblock

EFonctionF

                                        /* ATTENTION, on notera qu'il ne faut utiliser 'v $xrs/CalabiYau.24$I' et ses definitions    */
                                        /* de {u1,v1} et de {u2,v2} car ce qu'il faut c'est definir un couple simple {u,v} etant     */
                                        /* donne 'v $xrs/surfaces.12$I GENERATION_D_UNE_IMAGE_DE_LA_SURFACE_SANS_DIFFERENTIATION'    */
                                        /* qui utilise des fonctions {Fx(u,v),Fy(u,v),Fz(u,v)} a 2 arguments {u,v} seulement.        */

#define   Fx_CalabiYau_2(u,v)                                                                                                           \
                    FFx_CalabiYau_2(AXPB(alpha_u1,u,beta_u1)                                                                            \
                                   ,AXPB(alpha_v1,v,beta_v1)                                                                            \
                                   ,AXPB(alpha_u2,u,beta_u2)                                                                            \
                                   ,AXPB(alpha_v2,v,beta_v2)                                                                            \
                                    )                                                                                                   \
                                        /* Definition de la fonction F (u,v).                                                        */ \
                                        /*                            x                                                              */
#define   Fy_CalabiYau_2(u,v)                                                                                                           \
                    FFy_CalabiYau_2(AXPB(alpha_u1,u,beta_u1)                                                                            \
                                   ,AXPB(alpha_v1,v,beta_v1)                                                                            \
                                   ,AXPB(alpha_u2,u,beta_u2)                                                                            \
                                   ,AXPB(alpha_v2,v,beta_v2)                                                                            \
                                    )                                                                                                   \
                                        /* Definition de la fonction F (u,v).                                                        */ \
                                        /*                            y                                                              */
#define   Fz_CalabiYau_2(u,v)                                                                                                           \
                    FFz_CalabiYau_2(AXPB(alpha_u1,u,beta_u1)                                                                            \
                                   ,AXPB(alpha_v1,v,beta_v1)                                                                            \
                                   ,AXPB(alpha_u2,u,beta_u2)                                                                            \
                                   ,AXPB(alpha_v2,v,beta_v2)                                                                            \
                                    )                                                                                                   \
                                        /* Definition de la fonction F (u,v).                                                        */ \
                                        /*                            z                                                              */

__________popdef(%%D%%initialiser_les_coordonnees_u_v%%F%%)
__________popdef(%%D%%coordonnee_v2%%F%%)
__________popdef(%%D%%coordonnee_u2%%F%%)
__________popdef(%%D%%coordonnee_v1%%F%%)
__________popdef(%%D%%coordonnee_u1%%F%%)
__________popdef(%%D%%z3%%F%%)
__________popdef(%%D%%z2%%F%%)
__________popdef(%%D%%z1%%F%%)
                                        /* En vue d'interpolation de surfaces pour eviter des doubles definitions (introduit le      */
                                        /* 20040501121802).                                                                          */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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_2                                                                                                              \
                    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' (introduit le 20050203092454)...                                  */



Copyright © Jean-François COLONNA, 2019-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2019-2024.