#include
#include
#include
#include
struct Facet
{
int Facetnum;
struct Facet *left;
struct Facet *right;
double apex_x;
double apex_y;
double apex_z;
char POVobject[102400];
};
struct Facet Facet01;
struct Facet Facet02;
struct Facet Facet03;
struct Facet Facet04a;
struct Facet Facet04b;
struct Facet Facet05;
struct Facet Facet06;
struct Facet Facet07;
struct Facet Facet08;
struct Facet Facet09;
struct Facet Facet10;
struct Facet Facet11;
struct Facet Facet12;
struct Facet Facet13a;
struct Facet Facet13b;
struct Facet Facet14;
struct Facet Facet15;
struct Facet Facet16;
struct Facet Facet17;
struct Facet Facet18;
struct Facet Facet19;
struct Facet Facet20;
int depth=0;
double arcsin(double sinvalue)
{
return(57.29578*asin(sinvalue));
}
double arccos(double sinvalue)
{
return(57.29578*acos(sinvalue));
}
void init_facets()
{
Facet05.left = &Facet19;
Facet05.right = &Facet06;
Facet05.apex_x = 0;
Facet05.apex_y = 0;
Facet05.apex_z = 0;
Facet05.Facetnum = 5;
Facet19.left = &Facet17;
Facet19.right = &Facet01;
Facet19.apex_x = 4.2518;
Facet19.apex_y = -2.6311;
Facet19.apex_z = 0;
Facet19.Facetnum = 19;
Facet17.left = &Facet14;
Facet17.right = &Facet15;
Facet17.apex_x = 0;
Facet17.apex_y = -4.2518;
Facet17.apex_z = -2.6311;
Facet17.Facetnum = 17;
Facet14.left = NULL;
Facet14.right = NULL;
Facet14.apex_x = 0;
Facet14.apex_y = 0;
Facet14.apex_z = 0;
Facet14.Facetnum = 14;
Facet15.left = &Facet03;
Facet15.right = NULL;
Facet15.apex_x = 2.6235;
Facet15.apex_y = 0;
Facet15.apex_z = -4.2564;
Facet15.Facetnum = 15;
Facet03.left = &Facet12;
Facet03.right = &Facet04a;
Facet03.apex_x = -2.6235;
Facet03.apex_y = 0;
Facet03.apex_z = -4.2564;
Facet03.Facetnum = 3;
Facet12.left = NULL;
Facet12.right = NULL;
Facet12.apex_x = 0;
Facet12.apex_y = 0;
Facet12.apex_z = 0;
Facet12.Facetnum = 12;
Facet04a.left = NULL;
Facet04a.right = NULL;
Facet04a.apex_x = 0;
Facet04a.apex_y = 0;
Facet04a.apex_z = 0;
Facet04a.Facetnum = 40;
Facet04b.left = NULL;
Facet04b.right = NULL;
Facet04b.apex_x = 0;
Facet04b.apex_y = 0;
Facet04b.apex_z = 0;
Facet04b.Facetnum = 41;
Facet01.left = &Facet07;
Facet01.right = NULL;
Facet01.apex_x = 4.2518;
Facet01.apex_y = 2.6311;
Facet01.apex_z = 0;
Facet01.Facetnum = 1;
Facet07.left = NULL;
Facet07.right = NULL;
Facet07.apex_x = 0;
Facet07.apex_y = 0;
Facet07.apex_z = 0;
Facet07.Facetnum = 7;
Facet06.left = &Facet09;
Facet06.right = &Facet20;
Facet06.apex_x = 0;
Facet06.apex_y = 4.2518;
Facet06.apex_z = 2.6311;
Facet06.Facetnum = 6;
Facet09.left = NULL;
Facet09.right = &Facet13a;
Facet09.apex_x = 4.2518;
Facet09.apex_y = 2.6311;
Facet09.apex_z = 0;
Facet09.Facetnum = 9;
Facet20.left = &Facet18;
Facet20.right = &Facet02;
Facet20.apex_x = -4.2518;
Facet20.apex_y = 2.6311;
Facet20.apex_z = 0;
Facet20.Facetnum = 20;
Facet18.left = &Facet13b;
Facet18.right = &Facet16;
Facet18.apex_x = 0;
Facet18.apex_y = 4.2518;
Facet18.apex_z = -2.6311;
Facet18.Facetnum = 18;
Facet13a.left = NULL;
Facet13a.right = NULL;
Facet13a.apex_x = 0;
Facet13a.apex_y = 0;
Facet13a.apex_z = 0;
Facet13a.Facetnum = 130;
Facet13b.left = NULL;
Facet13b.right = &Facet11;
Facet13b.apex_x = 4.2518;
Facet13b.apex_y = 2.6311;
Facet13b.apex_z = 0;
Facet13b.Facetnum = 131;
Facet11.left = NULL;
Facet11.right = &Facet04b;
Facet11.apex_x = 2.6235;
Facet11.apex_y = 0;
Facet11.apex_z = -4.2564;
Facet11.Facetnum = 11;
Facet16.left = NULL;
Facet16.right = NULL;
Facet16.apex_x = 0;
Facet16.apex_y = 0;
Facet16.apex_z = 0;
Facet16.Facetnum = 16;
Facet02.left = &Facet08;
Facet02.right = &Facet10;
Facet02.apex_x = -4.2518;
Facet02.apex_y = -2.6311;
Facet02.apex_z = 0;
Facet02.Facetnum = 2;
Facet08.left = NULL;
Facet08.right = NULL;
Facet08.apex_x = 0;
Facet08.apex_y = 0;
Facet08.apex_z = 0;
Facet08.Facetnum = 8;
Facet10.left = NULL;
Facet10.right = NULL;
Facet10.apex_x = 0;
Facet10.apex_y = 0;
Facet10.apex_z = 0;
Facet10.Facetnum = 10;
memset(Facet01.POVobject,0,sizeof(char));
memset(Facet02.POVobject,0,sizeof(char));
memset(Facet03.POVobject,0,sizeof(char));
memset(Facet04a.POVobject,0,sizeof(char));
memset(Facet04b.POVobject,0,sizeof(char));
memset(Facet05.POVobject,0,sizeof(char));
memset(Facet06.POVobject,0,sizeof(char));
memset(Facet07.POVobject,0,sizeof(char));
memset(Facet08.POVobject,0,sizeof(char));
memset(Facet09.POVobject,0,sizeof(char));
memset(Facet10.POVobject,0,sizeof(char));
memset(Facet11.POVobject,0,sizeof(char));
memset(Facet12.POVobject,0,sizeof(char));
memset(Facet13a.POVobject,0,sizeof(char));
memset(Facet13b.POVobject,0,sizeof(char));
memset(Facet14.POVobject,0,sizeof(char));
memset(Facet15.POVobject,0,sizeof(char));
memset(Facet16.POVobject,0,sizeof(char));
memset(Facet17.POVobject,0,sizeof(char));
memset(Facet18.POVobject,0,sizeof(char));
memset(Facet19.POVobject,0,sizeof(char));
memset(Facet20.POVobject,0,sizeof(char));
}
void pivot(struct Facet *Facet_number,
double x1, double y1, double z1,
double x2, double y2, double z2,
double zrotate,
double *a0, double *b0, double *c0)
{
double xm,ym,zm,xmm,ymm,zmm,x0,y0,z0,d1,d2,rz,rx,y0new;
double a1,b1,c1;
double a2,b2,c2;
double a3,b3,c3;
double a4,b4,c4;
double a5,b5,c5;
double a6,b6,c6;
double zrotate2,signx,signz,signx0;
double tmpd1,tmpd2;
double current_angle,new_angle;
double current_angle2,new_angle2;
char POVtemp[1024];
*a0 = Facet_number->apex_x;
*b0 = Facet_number->apex_y;
*c0 = Facet_number->apex_z;
tmpd1 = sqrt((x1*x1)+(y1*y1)+(z1*z1));
tmpd2 = sqrt((x2*x2)+(y2*y2)+(z2*z2));
if(tmpd1>tmpd2)
{
xm = x2; ym = y2; zm = z2;
x0 = x1; y0 = y1; z0 = z1;
}
if(tmpd1x2)
{
xm = x2; ym = y2; zm = z2;
x0 = x1; y0 = y1; z0 = z1;
}
if(x1==x2)
{
if(y1y2)
{
xm = x2; ym = y2; zm = z2;
x0 = x1; y0 = y1; z0 = z1;
}
if(y1==y2)
{
if(z1z2)
{
xm = x2; ym = y2; zm = z2;
x0 = x1; y0 = y1; z0 = z1;
}
}
}
}
sprintf(POVtemp," translate <%f,%f,%f>\n",-xm,-ym,-zm);
strcat(Facet_number->POVobject,POVtemp);
x0 = x0-xm;
y0 = y0-ym;
z0 = z0-zm;
a1 = *a0-xm;
b1 = *b0-ym;
c1 = *c0-zm;
d1 = sqrt((x0*x0)+(y0*y0));
current_angle = arcsin(fabs(y0)/d1);
if((x0>=0)&&(y0>=0))
rz = 90-current_angle;
if((x0>=0)&&(y0<0))
rz = 90+current_angle;
if((x0<0)&&(y0<0))
rz = 270-current_angle;
if((x0<0)&&(y0>=0))
rz = 270+current_angle;
a2 = (a1*cos(-(M_PI/180)*rz))+(b1*sin(-(M_PI/180)*rz));
b2 = (-a1*sin(-(M_PI/180)*rz))+(b1*cos(-(M_PI/180)*rz));
sprintf(POVtemp," rotate z*%f\n",rz);
strcat(Facet_number->POVobject,POVtemp);
y0new = d1;
d2 = sqrt((z0*z0)+(y0new*y0new));
current_angle2 = arcsin(fabs(z0)/d2);
if((y0new>=0)&&(z0>=0))
rx = 90-arcsin(fabs(z0)/d2);
if((y0new>=0)&&(z0<0))
rx = 90+arcsin(fabs(z0)/d2);
if((y0new<0)&&(z0<0))
rx = 270-arcsin(fabs(z0)/d2);
if((y0new<0)&&(z0>=0))
rx = 270+arcsin(fabs(z0)/d2);
b3 = (b2*cos(-(M_PI/180)*rx))+(c1*sin(-(M_PI/180)*rx));
c2 = (-b2*sin(-(M_PI/180)*rx))+(c1*cos(-(M_PI/180)*rx));
sprintf(POVtemp," rotate x*%f\n",rx);
strcat(Facet_number->POVobject,POVtemp);
sprintf(POVtemp," rotate z*%f\n",zrotate);
strcat(Facet_number->POVobject,POVtemp);
a3 = (a2*cos(-(M_PI/180)*zrotate)) + (b3*sin(-(M_PI/180)*zrotate));
b4 = (-a2*sin(-(M_PI/180)*zrotate)) + (b3*cos(-(M_PI/180)*zrotate));
sprintf(POVtemp," rotate x*%f\n",-rx);
strcat(Facet_number->POVobject,POVtemp);
b5 = (b4*cos((M_PI/180)*rx))+(c2*sin((M_PI/180)*rx));
c3 = (-b4*sin((M_PI/180)*rx))+(c2*cos((M_PI/180)*rx));
sprintf(POVtemp," rotate z*%f\n",-rz);
strcat(Facet_number->POVobject,POVtemp);
a4 = (a3*cos((M_PI/180)*rz))+(b5*sin((M_PI/180)*rz));
b6 = (-a3*sin((M_PI/180)*rz))+(b5*cos((M_PI/180)*rz));
sprintf(POVtemp," translate <%f,%f,%f>\n",xm,ym,zm);
strcat(Facet_number->POVobject,POVtemp);
*a0 = a4+xm;
*b0 = b6+ym;
*c0 = c3+zm;
Facet_number->apex_x = *a0;
Facet_number->apex_y = *b0;
Facet_number->apex_z = *c0;
}
void rpivot(struct Facet *Facet_number,
double x1, double y1, double z1,
double x2, double y2, double z2,
double zrotate,
int Calling_Facet)
{
double apex_x,apex_y,apex_z;
pivot(Facet_number,
x1,y1,z1,
x2,y2,z2,
zrotate,
&apex_x,&apex_y,&apex_z);
if(Facet_number->left)
{
rpivot(Facet_number->left,
x1,y1,z1,
x2,y2,z2,
zrotate,
Facet_number->Facetnum);
}
if(Facet_number->right)
{
rpivot(Facet_number->right,
x1,y1,z1,
x2,y2,z2,
zrotate,
Facet_number->Facetnum);
}
}
void pivot_r(struct Facet *Facet_number,
double x1, double y1, double z1,
double x2, double y2, double z2,
double zrotate,
int Calling_Facet)
{
double apex_x,apex_y,apex_z;
pivot(Facet_number,
x1,y1,z1,
x2,y2,z2,
zrotate,
&apex_x,&apex_y,&apex_z);
if(Facet_number->left)
{
rpivot(Facet_number->left,
x1,y1,z1,
x2,y2,z2,
zrotate,
Facet_number->Facetnum);
if((Facet_number->left->Facetnum==17)||
(Facet_number->left->Facetnum==15)||
(Facet_number->left->Facetnum==18)||
(Facet_number->left->Facetnum==9)||
(Facet_number->left->Facetnum==3)||
(Facet_number->left->Facetnum==11)||
(Facet_number->left->Facetnum==7))
pivot_r(Facet_number->left,
x1,y1,z1,
apex_x,apex_y,apex_z,
-zrotate,
Facet_number->Facetnum);
else
pivot_r(Facet_number->left,
x1,y1,z1,
apex_x,apex_y,apex_z,
zrotate,
Facet_number->Facetnum);
}
if(Facet_number->right)
{
rpivot(Facet_number->right,
x1,y1,z1,
x2,y2,z2,
zrotate,
Facet_number->Facetnum);
if((Facet_number->right->Facetnum==17)||
(Facet_number->right->Facetnum==15)||
(Facet_number->right->Facetnum==16)||
(Facet_number->right->Facetnum==40)||
(Facet_number->right->Facetnum==41)||
(Facet_number->right->Facetnum==130)||
(Facet_number->right->Facetnum==18))
pivot_r(Facet_number->right,
apex_x,apex_y,apex_z,
x2,y2,z2,
-zrotate,
Facet_number->Facetnum);
else
pivot_r(Facet_number->right,
apex_x,apex_y,apex_z,
x2,y2,z2,
zrotate,
Facet_number->Facetnum);
}
}
main()
{
int inc,j,plusfour;
char filename[16];
double zrotate,d,x,xcamera,ycamera,zcamera;
FILE *outf;
for(inc=-4;inc<32;inc++)
{
plusfour = inc+4;
sprintf(filename,"dymax%03d.pov",plusfour);
outf = fopen(filename,"w");
printf("Outputting %s....\n",filename);
if(inc>23)
zrotate = 417.53905413413150427;
else
{
switch(inc)
{
case -4:
zrotate = 0;
break;
case -3:
zrotate = 0.05;
break;
case -2:
zrotate = 0.1;
break;
case -1:
zrotate = 0.2;
break;
case 0:
zrotate = 0.5;
break;
default:
zrotate = pow(1.3,inc);
break;
}
}
x = 2.6142*zrotate;
d = sqrt(pow((2.6325+x),2) + pow((4.2564+zrotate),2));
xcamera = (0.1038961*plusfour)-8; /* 8/77 */
ycamera = (0.02525974*plusfour)+8; /* 1.2431/78 */
zcamera = (0.23376623*plusfour)+8; /* 18/78 */
fprintf(outf,"// Persistence of Vision Raytracer\n");
fprintf(outf,"// Unfolding Dymaxion sphere\n");
fprintf(outf,"#include \"colors.inc\"\n");
fprintf(outf,"#include \"shapes.inc\"\n");
fprintf(outf,"#include \"textures.inc\"\n");
fprintf(outf,"\n");
fprintf(outf,"// Camera\n");
fprintf(outf,"camera {\n");
fprintf(outf," location <%f,%f,%f> \n",xcamera,ycamera,zcamera);
fprintf(outf," sky <-2.6235,0,4.2564>\n");
fprintf(outf," look_at <0,0,0>\n");
fprintf(outf," }\n");
fprintf(outf,"\n");
fprintf(outf,"// Light source\n");
fprintf(outf,"light_source { <%f,%f,%f> color White }\n",xcamera,ycamera,zcamera);
fprintf(outf,"\n");
fprintf(outf,"#declare Facet = object {\n");
fprintf(outf," sphere { <%f,0,%f>, %f }\n",-x,-zrotate,d);
fprintf(outf," clipped_by { \n");
fprintf(outf," plane { <0,0,-1>, 0 } \n");
fprintf(outf," object { \n");
fprintf(outf," plane { <0,0,-1>, 0 } \n");
fprintf(outf," rotate x*-108\n");
fprintf(outf," rotate z*-31.75\n");
fprintf(outf," }\n");
fprintf(outf," object { \n");
fprintf(outf," plane { <0,0,-1>, 0 } \n");
fprintf(outf," rotate x*108\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," }\n");
fprintf(outf," }\n");
fprintf(outf," }\n");
fprintf(outf,"\n");
fprintf(outf,"#declare Globe = union {\n");
fprintf(outf," object {\n");
fprintf(outf," Facet\n");
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet\n");
fprintf(outf," rotate z*180\n");
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet\n");
fprintf(outf," rotate x*90\n");
fprintf(outf," rotate y*90\n");
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet\n");
fprintf(outf," rotate x*90\n");
fprintf(outf," rotate y*90\n");
fprintf(outf," rotate z*180\n");
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet\n");
fprintf(outf," rotate x*90\n");
fprintf(outf," rotate y*-90\n");
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet\n");
fprintf(outf," rotate x*90\n");
fprintf(outf," rotate y*-90\n");
fprintf(outf," rotate z*180\n");
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," rotate x*180 \n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," rotate x*180 \n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," rotate z*180\n");
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," rotate x*396\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," rotate x*396\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," rotate z*180\n");
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," rotate x*252\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," rotate x*252\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," rotate z*180\n");
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," rotate x*324\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," rotate x*324\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," rotate z*180\n");
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet\n");
fprintf(outf," rotate z*-31.75\n");
fprintf(outf," rotate x*108\n");
fprintf(outf," rotate z*-31.75\n");
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet\n");
fprintf(outf," rotate z*-31.75\n");
fprintf(outf," rotate x*108\n");
fprintf(outf," rotate z*-31.75\n");
fprintf(outf," rotate z*180\n");
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet\n");
fprintf(outf," rotate z*-31.75\n");
fprintf(outf," rotate x*396\n");
fprintf(outf," rotate z*-31.75\n");
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet\n");
fprintf(outf," rotate z*-31.75\n");
fprintf(outf," rotate x*396\n");
fprintf(outf," rotate z*-31.75\n");
fprintf(outf," rotate z*180\n");
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet\n");
fprintf(outf," rotate z*-31.75\n");
fprintf(outf," rotate x*324\n");
fprintf(outf," rotate z*-31.75\n");
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet\n");
fprintf(outf," rotate z*-31.75\n");
fprintf(outf," rotate x*324\n");
fprintf(outf," rotate z*-31.75\n");
fprintf(outf," rotate z*180\n");
fprintf(outf," }\n");
fprintf(outf," }\n");
fprintf(outf,"\n");
fprintf(outf,"object {\n");
fprintf(outf," Globe\n");
fprintf(outf," pigment {image_map { jpeg \"earthmap10k.reduced.jpg\" map_type 1 interpolate 2 }\n");
fprintf(outf," rotate x*81 rotate z*27 rotate y*-5 }\n");
fprintf(outf," finish {ambient 0.5}\n");
fprintf(outf," rotate z*180\n");
fprintf(outf," }\n");
fprintf(outf,"\n");
fprintf(outf,"// EOF\n");
fclose(outf);
}
for(zrotate=01;zrotate<=42;zrotate++)
{
plusfour = inc+4;
if(zrotate>0)
zrotate = zrotate-0.0126;
init_facets();
pivot_r(&Facet19,0,-4.2518,2.6311,2.6235,0,4.2564,zrotate,5);
pivot_r(&Facet06,2.6235,0,4.2564,-2.6235,0,4.2564,zrotate,5);
sprintf(filename,"dymax%03d.pov",plusfour);
outf = fopen(filename,"w");
printf("Outputting %s....\n",filename);
inc++;
xcamera = (0.1038961*plusfour)-8; /* 8/77 */
ycamera = (0.02525974*plusfour)+8; /* 1.2431/78 */
zcamera = (0.23376623*plusfour)+8; /* 18/78 */
fprintf(outf,"// Persistence of Vision Raytracer\n");
fprintf(outf,"// Unfolding Dymaxion sphere\n");
fprintf(outf,"\n");
fprintf(outf,"#include \"colors.inc\"\n");
fprintf(outf,"#include \"shapes.inc\"\n");
fprintf(outf,"#include \"textures.inc\"\n");
fprintf(outf,"\n");
fprintf(outf,"// Camera\n");
fprintf(outf,"camera {\n");
fprintf(outf," location <%f,%f,%f> \n",xcamera,ycamera,zcamera);
fprintf(outf," sky <-2.6235,0,4.2564>\n");
fprintf(outf," look_at <0,0,0>\n");
fprintf(outf," }\n");
fprintf(outf,"\n");
fprintf(outf,"// Light source\n");
fprintf(outf,"light_source { <%f,%f,%f> color White }\n",xcamera,ycamera,zcamera);
fprintf(outf,"\n");
fprintf(outf,"#declare Facet = object {\n");
fprintf(outf," sphere { <-1087.3552047761052108,0,-417.53905413413150427>, 1168.7895460684055706 }\n");
fprintf(outf," clipped_by { \n");
fprintf(outf," plane { <0,0,-1>, 0 } \n");
fprintf(outf," object { \n");
fprintf(outf," plane { <0,0,-1>, 0 } \n");
fprintf(outf," rotate x*-108\n");
fprintf(outf," rotate z*-31.75\n");
fprintf(outf," }\n");
fprintf(outf," object { \n");
fprintf(outf," plane { <0,0,-1>, 0 } \n");
fprintf(outf," rotate x*108\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," }\n");
fprintf(outf," }\n");
fprintf(outf," }\n");
fprintf(outf,"\n");
fprintf(outf,"#declare Facet04a = object {\n");
fprintf(outf," Facet\n");
fprintf(outf," clipped_by {\n");
fprintf(outf," object {\n");
fprintf(outf," plane { <0,0,1>, 0 }\n");
fprintf(outf," rotate x*-30\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," }\n");
fprintf(outf," }\n");
fprintf(outf," }\n");
fprintf(outf,"#declare Facet04b = object {\n");
fprintf(outf," Facet\n");
fprintf(outf," clipped_by {\n");
fprintf(outf," object {\n");
fprintf(outf," plane { <0,0,-1>, 0 }\n");
fprintf(outf," rotate x*-30\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," }\n");
fprintf(outf," }\n");
fprintf(outf," }\n");
fprintf(outf,"#declare Bound = intersection {\n");
fprintf(outf," plane { <0,1,0>, 0 }\n");
fprintf(outf," object {\n");
fprintf(outf," plane { <0,0,-1>, 0 }\n");
fprintf(outf," rotate x*30\n");
fprintf(outf," rotate z*-31.75\n");
fprintf(outf," }\n");
fprintf(outf," }\n");
fprintf(outf,"#declare Facet13a = object {\n");
fprintf(outf," Facet\n");
fprintf(outf," clipped_by {\n");
fprintf(outf," object { Bound }\n");
fprintf(outf," }\n");
fprintf(outf," }\n");
fprintf(outf,"#declare Facet13b = object {\n");
fprintf(outf," Facet\n");
fprintf(outf," clipped_by {\n");
fprintf(outf," object { Bound inverse }\n");
fprintf(outf," }\n");
fprintf(outf," }\n");
fprintf(outf,"#declare Globe = union {\n");
fprintf(outf," object {\n");
fprintf(outf," Facet // Facet 01\n");
fprintf(outf," pigment {image_map { jpeg \"earthmap10k.reduced.jpg\" map_type 1 interpolate 2 }\n");
fprintf(outf," rotate x*81 rotate z*27 rotate y*-5 }\n");
fprintf(outf," finish {ambient 0.5}\n");
fprintf(outf,"%s",Facet01.POVobject);
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet // Facet 02\n");
fprintf(outf," rotate z*180\n");
fprintf(outf," pigment {image_map { jpeg \"earthmap10k.reduced.jpg\" map_type 1 interpolate 2 }\n");
fprintf(outf," rotate x*81 rotate z*27 rotate y*-5 }\n");
fprintf(outf," finish {ambient 0.5}\n");
fprintf(outf,"%s",Facet02.POVobject);
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet // Facet 03\n");
fprintf(outf," rotate x*90\n");
fprintf(outf," rotate y*90\n");
fprintf(outf," pigment {image_map { jpeg \"earthmap10k.reduced.jpg\" map_type 1 interpolate 2 }\n");
fprintf(outf," rotate x*81 rotate z*27 rotate y*-5 }\n");
fprintf(outf," finish {ambient 0.5}\n");
fprintf(outf,"%s",Facet03.POVobject);
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet04a // Facet 04a\n");
fprintf(outf," rotate x*90\n");
fprintf(outf," rotate y*90\n");
fprintf(outf," rotate z*180\n");
fprintf(outf," pigment {image_map { jpeg \"earthmap10k.reduced.jpg\" map_type 1 interpolate 2 }\n");
fprintf(outf," rotate x*81 rotate z*27 rotate y*-5 }\n");
fprintf(outf," finish {ambient 0.5}\n");
fprintf(outf,"%s",Facet04a.POVobject);
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet04b // Facet 04b\n");
fprintf(outf," rotate x*90\n");
fprintf(outf," rotate y*90\n");
fprintf(outf," rotate z*180\n");
fprintf(outf," pigment {image_map { jpeg \"earthmap10k.reduced.jpg\" map_type 1 interpolate 2 }\n");
fprintf(outf," rotate x*81 rotate z*27 rotate y*-5 }\n");
fprintf(outf," finish {ambient 0.5}\n");
fprintf(outf,"%s",Facet04b.POVobject);
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet // Facet 05\n");
fprintf(outf," rotate x*90\n");
fprintf(outf," rotate y*-90\n");
fprintf(outf," pigment {image_map { jpeg \"earthmap10k.reduced.jpg\" map_type 1 interpolate 2 }\n");
fprintf(outf," rotate x*81 rotate z*27 rotate y*-5 }\n");
fprintf(outf," finish {ambient 0.5}\n");
fprintf(outf,"%s",Facet05.POVobject);
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet // Facet 06\n");
fprintf(outf," rotate x*90\n");
fprintf(outf," rotate y*-90\n");
fprintf(outf," rotate z*180\n");
fprintf(outf," pigment {image_map { jpeg \"earthmap10k.reduced.jpg\" map_type 1 interpolate 2 }\n");
fprintf(outf," rotate x*81 rotate z*27 rotate y*-5 }\n");
fprintf(outf," finish {ambient 0.5}\n");
fprintf(outf,"%s",Facet06.POVobject);
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet // Facet 07\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," rotate x*180\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," pigment {image_map { jpeg \"earthmap10k.reduced.jpg\" map_type 1 interpolate 2 }\n");
fprintf(outf," rotate x*81 rotate z*27 rotate y*-5 }\n");
fprintf(outf," finish {ambient 0.5}\n");
fprintf(outf,"%s",Facet07.POVobject);
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet // Facet 08\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," rotate x*180\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," rotate z*180\n");
fprintf(outf," pigment {image_map { jpeg \"earthmap10k.reduced.jpg\" map_type 1 interpolate 2 }\n");
fprintf(outf," rotate x*81 rotate z*27 rotate y*-5 }\n");
fprintf(outf," finish {ambient 0.5}\n");
fprintf(outf,"%s",Facet08.POVobject);
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet // Facet 09\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," rotate x*396\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," pigment {image_map { jpeg \"earthmap10k.reduced.jpg\" map_type 1 interpolate 2 }\n");
fprintf(outf," rotate x*81 rotate z*27 rotate y*-5 }\n");
fprintf(outf," finish {ambient 0.5}\n");
fprintf(outf,"%s",Facet09.POVobject);
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet // Facet 10\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," rotate x*396\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," rotate z*180\n");
fprintf(outf," pigment {image_map { jpeg \"earthmap10k.reduced.jpg\" map_type 1 interpolate 2 }\n");
fprintf(outf," rotate x*81 rotate z*27 rotate y*-5 }\n");
fprintf(outf," finish {ambient 0.5}\n");
fprintf(outf,"%s",Facet10.POVobject);
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet // Facet 11\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," rotate x*252\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," pigment {image_map { jpeg \"earthmap10k.reduced.jpg\" map_type 1 interpolate 2 }\n");
fprintf(outf," rotate x*81 rotate z*27 rotate y*-5 }\n");
fprintf(outf," finish {ambient 0.5}\n");
fprintf(outf,"%s",Facet11.POVobject);
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet // Facet 12\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," rotate x*252\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," rotate z*180\n");
fprintf(outf," pigment {image_map { jpeg \"earthmap10k.reduced.jpg\" map_type 1 interpolate 2 }\n");
fprintf(outf," rotate x*81 rotate z*27 rotate y*-5 }\n");
fprintf(outf," finish {ambient 0.5}\n");
fprintf(outf,"%s",Facet12.POVobject);
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet13a // Facet 13a\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," rotate x*324\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," pigment {image_map { jpeg \"earthmap10k.reduced.jpg\" map_type 1 interpolate 2 }\n");
fprintf(outf," rotate x*81 rotate z*27 rotate y*-5 }\n");
fprintf(outf," finish {ambient 0.5}\n");
fprintf(outf,"%s",Facet13a.POVobject);
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet13b // Facet 13b\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," rotate x*324\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," pigment {image_map { jpeg \"earthmap10k.reduced.jpg\" map_type 1 interpolate 2 }\n");
fprintf(outf," rotate x*81 rotate z*27 rotate y*-5 }\n");
fprintf(outf," finish {ambient 0.5}\n");
fprintf(outf,"%s",Facet13b.POVobject);
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet // Facet 14\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," rotate x*324\n");
fprintf(outf," rotate z*31.75\n");
fprintf(outf," rotate z*180\n");
fprintf(outf," pigment {image_map { jpeg \"earthmap10k.reduced.jpg\" map_type 1 interpolate 2 }\n");
fprintf(outf," rotate x*81 rotate z*27 rotate y*-5 }\n");
fprintf(outf," finish {ambient 0.5}\n");
fprintf(outf,"%s",Facet14.POVobject);
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet // Facet 15\n");
fprintf(outf," rotate z*-31.75\n");
fprintf(outf," rotate x*108\n");
fprintf(outf," rotate z*-31.75\n");
fprintf(outf," pigment {image_map { jpeg \"earthmap10k.reduced.jpg\" map_type 1 interpolate 2 }\n");
fprintf(outf," rotate x*81 rotate z*27 rotate y*-5 }\n");
fprintf(outf," finish {ambient 0.5}\n");
fprintf(outf,"%s",Facet15.POVobject);
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet // Facet 16\n");
fprintf(outf," rotate z*-31.75\n");
fprintf(outf," rotate x*108\n");
fprintf(outf," rotate z*-31.75\n");
fprintf(outf," rotate z*180\n");
fprintf(outf," pigment {image_map { jpeg \"earthmap10k.reduced.jpg\" map_type 1 interpolate 2 }\n");
fprintf(outf," rotate x*81 rotate z*27 rotate y*-5 }\n");
fprintf(outf," finish {ambient 0.5}\n");
fprintf(outf,"%s",Facet16.POVobject);
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet // Facet 17\n");
fprintf(outf," rotate z*-31.75\n");
fprintf(outf," rotate x*396\n");
fprintf(outf," rotate z*-31.75\n");
fprintf(outf," pigment {image_map { jpeg \"earthmap10k.reduced.jpg\" map_type 1 interpolate 2 }\n");
fprintf(outf," rotate x*81 rotate z*27 rotate y*-5 }\n");
fprintf(outf," finish {ambient 0.5}\n");
fprintf(outf,"%s",Facet17.POVobject);
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet // Facet 18\n");
fprintf(outf," rotate z*-31.75\n");
fprintf(outf," rotate x*396\n");
fprintf(outf," rotate z*-31.75\n");
fprintf(outf," rotate z*180\n");
fprintf(outf," pigment {image_map { jpeg \"earthmap10k.reduced.jpg\" map_type 1 interpolate 2 }\n");
fprintf(outf," rotate x*81 rotate z*27 rotate y*-5 }\n");
fprintf(outf," finish {ambient 0.5}\n");
fprintf(outf,"%s",Facet18.POVobject);
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet // Facet 19\n");
fprintf(outf," rotate z*-31.75\n");
fprintf(outf," rotate x*324\n");
fprintf(outf," rotate z*-31.75\n");
fprintf(outf," pigment {image_map { jpeg \"earthmap10k.reduced.jpg\" map_type 1 interpolate 2 }\n");
fprintf(outf," rotate x*81 rotate z*27 rotate y*-5 }\n");
fprintf(outf," finish {ambient 0.5}\n");
fprintf(outf,"%s",Facet19.POVobject);
fprintf(outf," }\n");
fprintf(outf," object {\n");
fprintf(outf," Facet // Facet 20\n");
fprintf(outf," rotate z*-31.75\n");
fprintf(outf," rotate x*324\n");
fprintf(outf," rotate z*-31.75\n");
fprintf(outf," rotate z*180\n");
fprintf(outf," pigment {image_map { jpeg \"earthmap10k.reduced.jpg\" map_type 1 interpolate 2 }\n");
fprintf(outf," rotate x*81 rotate z*27 rotate y*-5 }\n");
fprintf(outf," finish {ambient 0.5}\n");
fprintf(outf,"%s",Facet20.POVobject);
fprintf(outf," }\n");
fprintf(outf," }\n");
fprintf(outf,"\n");
fprintf(outf,"object {\n");
fprintf(outf," Globe\n");
fprintf(outf," rotate z*180\n");
fprintf(outf," }\n");
fclose(outf);
if(zrotate>0)
zrotate = zrotate+0.0126;
}
}