// faces.c for n-dimensional cube, the number of m-dimensional sub cubes // is 2^(n-m)*comb(n,m) m=0 vertices, m=1 edges, m=2 faces, m=3 cubes // volume=edge_length^n, surface= edge_length^2*faces #include static int pwr2(int n) { int pwr = 1; int i; if(n<=0) return 1; for(i=0; in) return 0; return fct(n)/(fct(m)*fct(n-m)); } // end comb int main(int argc, char *argv[]) { int n, m; int face[11]; printf("faces.c running, data for various n-cubes, n-spheres, n dimensions \n"); for(n=0; n<=10; n++) { if(n>3) printf("n=%d-cube \n", n); if(n==3) printf("3-cube cube \n"); if(n==2) printf("2-cube square \n"); if(n==1) printf("1-cube line \n"); if(n==0) { printf("0-cube point \n"); printf("vertices = 1 \n\n"); continue; } for(m=n; m>=0; m--) { face[m] = pwr2(n-m)*comb(n,m); if(m>3) printf("%d-cubes = %d \n", m, face[m]); if(m==3) printf("cubes = %d \n", face[m]); if(m==2) printf("2D faces = %d \n", face[m]); if(m==1) printf("edges = %d \n", face[m]); if(m==0) printf("vertices = %d \n", face[m]); } // end m printf("\n"); } // end n printf("\n"); printf("\n"); printf("cubes of n dimensions \n"); printf("with edge length E, n>=3, volume = E^n, area=(2D faces)*E*E \n"); printf("n-cube has 2^n vertex, with n edges at each vertex \n"); printf("n>=m, there are pwr2(n-m)*comb(n,m) n-m sub cubes \n"); printf("\n"); printf("\n"); printf(" D-1 surface D volume \n"); printf("2D circle 2 Pi R 1 Pi R^2 \n"); printf("3D sphere 4 Pi R^2 4/3 Pi R^3 \n"); printf("4D 4-sphere 2 Pi^2 R^3 1/2 Pi^2 R^4 \n"); printf("5D 5-sphere 8/3 Pi^2 R^4 8/15 Pi^2 R^5 \n"); printf("6D 6-sphere 1 Pi^3 R^5 1/6 Pi^3 R^6 \n"); printf("7D 7-sphere 16/15 Pi^3 R^6 16/105 Pi^3 R^7 \n"); printf("8D 8-sphere 1/3 Pi^4 R^7 1/24 Pi^4 R^8 \n"); printf("9D 9-sphere 32/105 Pi^4 R^8 32/945 Pi^4 R^9 \n"); printf("10D 10-sphere 1/12 Pi^5 R^9 1/120 Pi^5 R^10 \n"); printf("\n"); printf("\n"); printf("volume V_n(R)= Pi^(n/2) R^n / gamma(n/2+1) \n"); printf("gamma(integer) = factorial(integer-1) gamma(5) = 24 \n"); printf("gamma(1/2) = sqrt(Pi), gamma(n/2+1) = (2n)! sqrt(Pi)/(4^n n!) \n"); printf("or V_2k(R) = Pi^k R^2k/k! , V_2k+1 = 2 k! (4Pi)^k R^(2k+1)/(2k+1)! \n"); printf("surface area A_n(R) = d/dR V_n(R) \n"); printf("\n"); printf("\n"); printf("one definition of sequence of n-spheres \n"); printf("a1, a2, a3, a4, a5, a6, a7 are angles, typ: theta, phi, ...\n"); printf("x1, x2, x3, x4, x5, x6, x7, x8 are orthogonal coordinates \n"); printf("x1^2 + x2^2 + x3^2 + x4^2 + x5^2 + x6^2 + x7^2 +x8^2 = R^2 \n"); printf(" Radius R = sqrt(R^2) \n"); printf("\n"); printf("2D circle \n"); printf("x1 = R cos(a1) typ: x theta \n"); printf("x2 = R sin(a1) typ: y theta \n"); printf("\n"); printf("a1 = arctan(x2/x1) or a1 = acos(x1/R) \n"); printf("\n"); printf("3D sphere \n"); printf("x1 = R cos(a1) typ: z phi \n"); printf("x2 = R sin(a1) cos(a2) typ: x phi theta \n"); printf("x3 = R sin(a1) sin(a2) typ: y phi theta \n"); printf("\n"); printf("a1 = arctan(sqrt(x2^2+x3^2)/x1) or a1 = acos(x1/R) \n"); printf("a2 = arctan(x3/x2) or a2 = acos(x2/sqrt(x2^2+x3^2)) \n"); printf("\n"); printf("4D 4-sphere continuing systematic notation, notice pattern \n"); printf("x1 = R cos(a1) \n"); printf("x2 = R sin(a1) cos(a2) \n"); printf("x3 = R sin(a1) sin(a2) cos(a3) \n"); printf("x4 = R sin(a1) sin(a2) sin(a3) \n"); printf("\n"); printf("a1 = acos(x1/sqrt(x1^2+x2^2+x3^2+x4^2+x5^2)) \n"); printf("a1 = acos(x1/sqrt(x1^2+x2^2+x3^2+x4^2+x5^2)) \n"); printf("a1 = acos(x1/sqrt(x1^2+x2^2+x3^2+x4^2)) \n"); printf("a2 = acos(x2/sqrt(x2^2+x3^2+x4^2)) \n"); printf("a3 = acos(x3/sqrt(x3^2+x4^2)) if x4>=0 \n"); printf("a3 = 2 Pi - acos(x3/sqrt(x3^2+x4^2)) if x4<0 \n"); printf("\n"); printf("5D 5-sphere \n"); printf("x1 = R cos(a1) \n"); printf("x2 = R sin(a1) cos(a2) \n"); printf("x3 = R sin(a1) sin(a2) cos(a3) \n"); printf("x4 = R sin(a1) sin(a2) sin(a3) cos(a4)\n"); printf("x5 = R sin(a1) sin(a2) sin(a3) sin(a4)\n"); printf("\n"); printf("a2 = acos(x2/sqrt(x2^2+x3^2+x4^2+x5^2)) \n"); printf("a3 = acos(x3/sqrt(x3^2+x4^2+x5^2)) \n"); printf("a4 = acos(x4/sqrt(x4^2+x5^2)) if x5>=0 \n"); printf("a4 = 2 Pi - acos(x4/sqrt(x4^2+x5^2)) if x5<0 \n"); printf("\n"); printf("6D 6-sphere \n"); printf("x1 = R cos(a1) \n"); printf("x2 = R sin(a1) cos(a2) \n"); printf("x3 = R sin(a1) sin(a2) cos(a3) \n"); printf("x4 = R sin(a1) sin(a2) sin(a3) cos(a4)\n"); printf("x5 = R sin(a1) sin(a2) sin(a3) sin(a4) cos(a5) \n"); printf("x6 = R sin(a1) sin(a2) sin(a3) sin(a4) sin(a5) \n"); printf("\n"); printf("a1 = acos(x1/sqrt(x1^2+x2^2+x3^2+x4^2+x5^2+x6^2)) \n"); printf("a2 = acos(x2/sqrt(x2^2+x3^2+x4^2+x5^2+x6^2)) \n"); printf("a3 = acos(x3/sqrt(x3^2+x4^2+x5^2+x6^2)) \n"); printf("a4 = acos(x4/sqrt(x4^2+x5^2+x6^2)) \n"); printf("a5 = acos(x5/sqrt(x5^2+x6^2)) if x6>=0 \n"); printf("a5 = 2 Pi - acos(x5/sqrt(x5^2+x6^2)) if x6<0 \n"); printf("\n"); printf("7D 7-sphere \n"); printf("x1 = R cos(a1) \n"); printf("x2 = R sin(a1) cos(a2) \n"); printf("x3 = R sin(a1) sin(a2) cos(a3) \n"); printf("x4 = R sin(a1) sin(a2) sin(a3) cos(a4)\n"); printf("x5 = R sin(a1) sin(a2) sin(a3) sin(a4) cos(a5) \n"); printf("x6 = R sin(a1) sin(a2) sin(a3) sin(a4) sin(a5) cos(a6) \n"); printf("x7 = R sin(a1) sin(a2) sin(a3) sin(a4) sin(a5) sin(a6) \n"); printf("\n"); printf("a1 = acos(x1/sqrt(x1^2+x2^2+x3^2+x4^2+x5^2+x6^2+x7^2)) \n"); printf("a2 = acos(x2/sqrt(x2^2+x3^2+x4^2+x5^2+x6^2+x7^2)) \n"); printf("a3 = acos(x3/sqrt(x3^2+x4^2+x5^2+x6^2+x7^2)) \n"); printf("a4 = acos(x4/sqrt(x4^2+x5^2+x6^2+x7^2)) \n"); printf("a5 = acos(x5/sqrt(x5^2+x6^2+x7^2)) \n"); printf("a6 = acos(x6/sqrt(x6^2+x6^2)) if x7>=0 \n"); printf("a6 = 2 Pi - acos(x6/sqrt(x6^2+x7^2)) if x7<0 \n"); printf("\n"); printf("8D 8-sphere \n"); printf("x1 = R cos(a1) \n"); printf("x2 = R sin(a1) cos(a2) \n"); printf("x3 = R sin(a1) sin(a2) cos(a3) \n"); printf("x4 = R sin(a1) sin(a2) sin(a3) cos(a4)\n"); printf("x5 = R sin(a1) sin(a2) sin(a3) sin(a4) cos(a5) \n"); printf("x6 = R sin(a1) sin(a2) sin(a3) sin(a4) sin(a5) cos(a6) \n"); printf("x7 = R sin(a1) sin(a2) sin(a3) sin(a4) sin(a5) sin(a6) cos(a7) \n"); printf("x8 = R sin(a1) sin(a2) sin(a3) sin(a4) sin(a5) sin(a6) sin(a7) \n"); printf("\n"); printf("a1 = acos(x1/sqrt(x1^2+x2^2+x3^2+x4^2+x5^2+x6^2+x7^2+x8^2)) \n"); printf("a2 = acos(x2/sqrt(x2^2+x3^2+x4^2+x5^2+x6^2+x7^2+x8^2)) \n"); printf("a3 = acos(x3/sqrt(x3^2+x4^2+x5^2+x6^2+x7^2+x8^2)) \n"); printf("a4 = acos(x4/sqrt(x4^2+x5^2+x6^2+x7^2+x8^2)) \n"); printf("a5 = acos(x5/sqrt(x5^2+x6^2+x7^2+x8^2)) \n"); printf("a6 = acos(x6/sqrt(x5^2+x6^2+x7^2+x8^2)) \n"); printf("a7 = acos(x7/sqrt(x7^2+x8^2)) if x8>=0 \n"); printf("a7 = 2 Pi - acos(x7/sqrt(x7^2+x8^2)) if x8<0 \n"); printf("\n"); printf("faces.c finished \n"); return 0; } // end main of faces.c