#include #include #define Q .809016994374947424102293 /* (1+sqrt(5))/4 */ #define P .309016994374947424102293 double gr[61*9]= { 1,0,0, 0,1,0, 0,0,1, -.5, P, Q, -P, Q,-.5, -Q,-.5, -P, -1, 0, 0, 0, 1, 0, 0, 0,-1 }; double vert[13*3]; double face[21*3]= { 1,1,1 }; double edge[31*3]= { 1,0,0 }; static int npts,nv,nf,ne; icosagen() { int i,j,k,n; n=3; for(i=1; i60)break; for(j=1; jb[i]+1e-9)return 0; return 1; } fixpt(a,n) double *a; { int i,j,k,m; double d; for(d=i=0; i<3; i++)d+=a[i]*a[i]; for(i=0; i<3; i++)a[i]/=sqrt(d); for(m=k=1; k<60; k++) { if(m>n)break; mulvec(gr+k*9,a,a+m*3); for(j=0; j