#include #include #include "3d.h" int main(void); int main(void) { double sqrt5; double r; double h; double s36; double c36; double s72; double c72; double s144; double c144; PT3 pts[12]; int tripts[20][3]; PT3 n[20]; int i; int j; sqrt5 = sqrt(5); c36 = (sqrt5 + 1) / 4; s36 = sqrt((5-sqrt5)/8); c72 = (sqrt5 - 1) / 4; s72 = sqrt((5+sqrt5)/8); c144 = - c36; s144 = s36; h = 1 / sqrt5; r = 2 / sqrt5; printf("ModelV2\n"); printf("1 12 60 20 1\n"); printf("M1 0 0 0 .7 .7 .7 10 .5\n"); pts[ 0] = MAKEPT3(0,0,1); pts[ 1] = MAKEPT3(r,0,h); pts[ 2] = MAKEPT3(r*c72,r*s72,h); pts[ 3] = MAKEPT3(r*c144,r*s144,h); pts[ 4] = MAKEPT3(r*c144,-r*s144,h); pts[ 5] = MAKEPT3(r*c72,-r*s72,h); pts[ 6] = MAKEPT3(0,0,-1); pts[ 7] = MAKEPT3(-r,0,-h); pts[ 8] = MAKEPT3(-r*c72,r*s72,-h); pts[ 9] = MAKEPT3(-r*c144,r*s144,-h); pts[10] = MAKEPT3(-r*c144,-r*s144,-h); pts[11] = MAKEPT3(-r*c72,-r*s72,-h); for (i=0;i<12;i++) printf("%g %g %g\n",pts[i].x,pts[i].y,pts[i].z); tripts[ 0][0] = 0; tripts[ 0][1] = 2; tripts[ 0][2] = 1; tripts[ 1][0] = 0; tripts[ 1][1] = 3; tripts[ 1][2] = 2; tripts[ 2][0] = 0; tripts[ 2][1] = 4; tripts[ 2][2] = 3; tripts[ 3][0] = 0; tripts[ 3][1] = 5; tripts[ 3][2] = 4; tripts[ 4][0] = 0; tripts[ 4][1] = 1; tripts[ 4][2] = 5; tripts[ 5][0] = 1; tripts[ 5][1] = 2; tripts[ 5][2] = 9; tripts[ 6][0] = 2; tripts[ 6][1] = 3; tripts[ 6][2] = 8; tripts[ 7][0] = 3; tripts[ 7][1] = 4; tripts[ 7][2] = 7; tripts[ 8][0] = 4; tripts[ 8][1] = 5; tripts[ 8][2] = 11; tripts[ 9][0] = 5; tripts[ 9][1] = 1; tripts[ 9][2] = 10; tripts[10][0] = 2; tripts[10][1] = 8; tripts[10][2] = 9; tripts[11][0] = 3; tripts[11][1] = 7; tripts[11][2] = 8; tripts[12][0] = 4; tripts[12][1] = 11; tripts[12][2] = 7; tripts[13][0] = 5; tripts[13][1] = 10; tripts[13][2] = 11; tripts[14][0] = 1; tripts[14][1] = 9; tripts[14][2] = 10; tripts[15][0] = 6; tripts[15][1] = 7; tripts[15][2] = 11; tripts[16][0] = 6; tripts[16][1] = 11; tripts[16][2] = 10; tripts[17][0] = 6; tripts[17][1] = 10; tripts[17][2] = 9; tripts[18][0] = 6; tripts[18][1] = 9; tripts[18][2] = 8; tripts[19][0] = 6; tripts[19][1] = 8; tripts[19][2] = 7; for (i=20-1;i>=0;i--) { n[i] = unit3(cross(sub3(pts[tripts[i][2]],pts[tripts[i][1]]), sub3(pts[tripts[i][1]],pts[tripts[i][0]]))); } for (i=20-1;i>=0;i--) { printf("%d s %g %g %g\n",tripts[i][0],n[i].x,n[i].y,n[i].z); printf("%d s %g %g %g\n",tripts[i][1],n[i].x,n[i].y,n[i].z); printf("%d s %g %g %g\n",tripts[i][2],n[i].x,n[i].y,n[i].z); } j = 0; for (i=20-1;i>=0;i--) { printf("0 %d %d %d\n",j,j+1,j+2); j += 3; } printf("20 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19\n"); return(0); }