/*************************************************************************************************************************************/
/* */
/* G E N E R A T I O N D U D O D E C A E D R E R E G U L I E R : */
/* */
/* */
/* Author of '$xtc/DodecaedreRegulier.01$vv$c' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 20260921140010). */
/* */
/*************************************************************************************************************************************/
#define NSOMMETS 20
#define NARETES 30
#include "Polyedres.01.vv.I"
/*************************************************************************************************************************************/
/* */
/* G E N E R A T I O N D E S S O M M E T S D U D O D E C A E D R E : */
/* */
/*************************************************************************************************************************************/
double un_sur_phi;
/* Nombre d'or... */
double Xmin_Dodecaedre=+INFINI,Ymin_Dodecaedre=+INFINI,Zmin_Dodecaedre=+INFINI;
double Xmax_Dodecaedre=-INFINI,Ymax_Dodecaedre=-INFINI,Zmax_Dodecaedre=-INFINI;
/* Extrema du dodecaedre=. */
static void dodecahedron(void)
{
int n=0;
int s1,s2,s3;
for (s1=-1; s1<=1; s1+=2)
{
for (s2=-1; s2<=1; s2+=2)
{
for (s3=-1; s3<=1; s3+=2)
{
p[n++] = (POINT){s1,s2,s3};
/* Generation de 8 sommets {+/-1,+/-1,+/-1}. */
}
}
}
for (s1=-1; s1<=1; s1+=2)
{
for (s2=-1; s2<=1; s2+=2)
{
p[n++] = (POINT){0,s1*(1+un_sur_phi),s2*(1-(un_sur_phi*un_sur_phi))};
/* Generation de 4 sommets {0,(+/-1)*(1+Phi),(+/-1)*(1-(Phi*Phi))}. */
}
}
for (s1=-1; s1<=1; s1+=2)
{
for (s2=-1; s2<=1; s2+=2)
{
p[n++] = (POINT){s1*(1+un_sur_phi),s2*(1-(un_sur_phi*un_sur_phi)),0};
/* Generation de 4 sommets {(+/-1)*(1+Phi),(+/-1)*(1-(Phi*Phi)),0}. */
}
}
for (s1=-1; s1<=1; s1+=2)
{
for (s2=-1; s2<=1; s2+=2)
{
p[n++] = (POINT){s1*(1-(un_sur_phi*un_sur_phi)),0,s2*(1+un_sur_phi)};
/* Generation de 4 sommets {(+/-1)*(1-(Phi*Phi)),0,(+/-1)*(1+Phi)}. */
}
}
EXTREMA_SOMMETS(Xmin_Dodecaedre,Ymin_Dodecaedre,Zmin_Dodecaedre,Xmax_Dodecaedre,Ymax_Dodecaedre,Zmax_Dodecaedre);
}
/*************************************************************************************************************************************/
/* */
/* P R O G R A M M E P R I N C I P A L : */
/* */
/*************************************************************************************************************************************/
void main(int argc,char *argv[])
{
un_sur_phi = 1.0/((1.0+sqrt(5.0))/2.0);
/* Valeur par defaut... */
if (argc >= 2)
{
GET_ARGUMENT(1,futur_un_sur_phi,un_sur_phi);
if (argc >= 3)
{
GET_ARGUMENT(2,futur_epsilon1,epsilon1);
if (argc >= 4)
{
GET_ARGUMENT(3,futur_epsilon2,epsilon2);
if (argc >= 5)
{
printf("Les arguments en sur-nombre sont ignores.\n");
}
else
{
}
}
else
{
}
}
else
{
}
}
else
{
}
dodecahedron();
EDITIONS_FINALES("Dodecaedre"
,Xmin_Dodecaedre,Ymin_Dodecaedre,Zmin_Dodecaedre
,Xmax_Dodecaedre,Ymax_Dodecaedre,Zmax_Dodecaedre
);
bonds("Dodecaedre");
return;
}