# faces.py data for various n-cubes, n-spheres # various n dimensions for n-dimensional object volume, area, edge length # the number of m-dimensional sub objects # execute python faces.py > faces_py.out def main(): face = [0 for i in range(12)] print("faces.py running, data for various n-cubes, n-spheres, n dimensions") print("edge length L for cubes, radius R for spheres") print(" ") for n in range(0, 11): if n>3 : print("n=",n,"-cube") if n==3 : print("n=3-cube cube") if n==2 : print("n=2-cube square") if n==1 : print("n=1-cube line") if n==0 : print("0-cube point") print("vertices = 1") print(" ") continue for m in range (n, -1, -1): # print("loop m=",m) # debug face[m] = pwr2(n-m)*comb(n,m) # print("face[",m,"]=",face[m]) # debug if m>3 : if face[m]==1 : print(m,"-cubes = ", face[m]," volume=L^",m) else: print(m,"-cubes = ", face[m]," volume=",face[m],"*L^",m) if m==3 : print("cubes = ", face[m]," volume=",face[m],"L^3") if m==2 : print("2D faces = ", face[m]," area=",face[m],"*L^2") if m==1 : print("edges = ", face[m]," length=",face[m],"*L") if m==0 : print("vertices = ", face[m]) # end m print(" ") # end n print(" ") print(" ") print(" cubes of n dimensions") print(" with edge length E, n>=3, volume = E^n, area=(2D faces)*E*E") print(" n-cube has 2^n vertex, with n edges at each vertex") print(" n>=m, there are pwr2(n-m)*comb(n,m) n-m sub cubes") print(" ") print("Spheres up to 10 dimensions ") print(" ") print(" D-1 surface D volume") print("2D circle 2 Pi R 1 Pi R^2") print("3D sphere 4 Pi R^2 4/3 Pi R^3") print("4D 4-sphere 2 Pi^2 R^3 1/2 Pi^2 R^4") print("5D 5-sphere 8/3 Pi^2 R^4 8/15 Pi^2 R^5") print("6D 6-sphere 1 Pi^3 R^5 1/6 Pi^3 R^6") print("7D 7-sphere 16/15 Pi^3 R^6 16/105 Pi^3 R^7") print("8D 8-sphere 1/3 Pi^4 R^7 1/24 Pi^4 R^8") print("9D 9-sphere 32/105 Pi^4 R^8 32/945 Pi^4 R^9") print("10D 10-sphere 1/12 Pi^5 R^9 1/120 Pi^5 R^10") print(" ") print("volume V_n(R)= Pi^(n/2) R^n / gamma(n/2+1)") print("gamma(integer) = factorial(integer-1) gamma(5) = 24") print("gamma(1/2) = sqrt(Pi), gamma(n/2+1) = (2n)! sqrt(Pi)/(4^n n!)") print("or V_2k(R) = Pi^k R^2k/k! , V_2k+1 = 2 k! (4Pi)^k R^(2k+1)/(2k+1)!") print("surface area A_n(R) = d/dR V_n(R)") print(" ") print(" ") print("one definition of sequence of n-spheres") print("a1, a2, a3, a4, a5, a6, a7 are angles, typ: theta, phi, ...") print(" ") print("x1, x2, x3, x4, x5, x6, x7, x8 are orthogonal coordinates") print("x1^2 + x2^2 + x3^2 + x4^2 + x5^2 + x6^2 + x7^2 +x8^2 = R^2") print(" Radius R = sqrt(R^2)") print(" ") print("2D circle") print("x1 = R cos(a1) typ: x theta") print("x2 = R sin(a1) typ: y theta") print(" ") print("a1 = arctan(x2/x1) or a1 = acos(x1/R)") print(" ") print("3D sphere") print("x1 = R cos(a1) typ: z phi") print("x2 = R sin(a1) cos(a2) typ: x phi theta") print("x3 = R sin(a1) sin(a2) typ: y phi theta") print(" ") print("a1 = arctan(sqrt(x2^2+x3^2)/x1) or a1 = acos(x1/R)") print("a2 = arctan(x3/x2) or a2 = acos(x2/sqrt(x2^2+x3^2))") print(" ") print("4D 4-sphere continuing systematic notation, notice pattern") print("x1 = R cos(a1)") print("x2 = R sin(a1) cos(a2)") print("x3 = R sin(a1) sin(a2) cos(a3)") print("x4 = R sin(a1) sin(a2) sin(a3)") print(" ") print("a1 = acos(x1/sqrt(x1^2+x2^2+x3^2+x4^2))") print("a2 = acos(x2/sqrt(x2^2+x3^2+x4^2))") print("a3 = acos(x3/sqrt(x3^2+x4^2)) if x4>=0") print("a3 = 2 Pi - acos(x3/sqrt(x3^2+x4^2)) if x4<0") print(" ") print("5D 5-sphere") print("x1 = R cos(a1)") print("x2 = R sin(a1) cos(a2)") print("x3 = R sin(a1) sin(a2) cos(a3)") print("x4 = R sin(a1) sin(a2) sin(a3) cos(a4)") print("x5 = R sin(a1) sin(a2) sin(a3) sin(a4)") print(" ") print("a1 = acos(x1/sqrt(x1^2+x2^2+x3^2+x4^2+x5^2))") print("a2 = acos(x2/sqrt(x2^2+x3^2+x4^2+x5^2))") print("a3 = acos(x3/sqrt(x3^2+x4^2+x5^2))") print("a4 = acos(x4/sqrt(x4^2+x5^2)) if x5>=0") print("a4 = 2 Pi - acos(x4/sqrt(x4^2+x5^2)) if x5<0") print(" ") print("6D 6-sphere") print("x1 = R cos(a1)") print("x2 = R sin(a1) cos(a2)") print("x3 = R sin(a1) sin(a2) cos(a3)") print("x4 = R sin(a1) sin(a2) sin(a3) cos(a4)") print("x5 = R sin(a1) sin(a2) sin(a3) sin(a4) cos(a5)") print("x6 = R sin(a1) sin(a2) sin(a3) sin(a4) sin(a5)") print(" ") print("a1 = acos(x1/sqrt(x1^2+x2^2+x3^2+x4^2+x5^2+x6^2))") print("a2 = acos(x2/sqrt(x2^2+x3^2+x4^2+x5^2+x6^2))") print("a3 = acos(x3/sqrt(x3^2+x4^2+x5^2+x6^2))") print("a4 = acos(x4/sqrt(x4^2+x5^2+x6^2))") print("a5 = acos(x5/sqrt(x5^2+x6^2)) if x6>=0") print("a5 = 2 Pi - acos(x5/sqrt(x5^2+x6^2)) if x6<0") print(" ") print("7D 7-sphere") print("x1 = R cos(a1)") print("x2 = R sin(a1) cos(a2)") print("x3 = R sin(a1) sin(a2) cos(a3)") print("x4 = R sin(a1) sin(a2) sin(a3) cos(a4)") print("x5 = R sin(a1) sin(a2) sin(a3) sin(a4) cos(a5)") print("x6 = R sin(a1) sin(a2) sin(a3) sin(a4) sin(a5) cos(a6)") print("x7 = R sin(a1) sin(a2) sin(a3) sin(a4) sin(a5) sin(a6)") print(" ") print("a1 = acos(x1/sqrt(x1^2+x2^2+x3^2+x4^2+x5^2+x6^2+x7^2))") print("a2 = acos(x2/sqrt(x2^2+x3^2+x4^2+x5^2+x6^2+x7^2))") print("a3 = acos(x3/sqrt(x3^2+x4^2+x5^2+x6^2+x7^2))") print("a4 = acos(x4/sqrt(x4^2+x5^2+x6^2+x7^2))") print("a5 = acos(x5/sqrt(x5^2+x6^2+x7^2))") print("a6 = acos(x6/sqrt(x6^2+x6^2)) if x7>=0") print("a6 = 2 Pi - acos(x6/sqrt(x6^2+x7^2)) if x7<0") print(" ") print("8D 8-sphere") print("x1 = R cos(a1)") print("x2 = R sin(a1) cos(a2)") print("x3 = R sin(a1) sin(a2) cos(a3)") print("x4 = R sin(a1) sin(a2) sin(a3) cos(a4)") print("x5 = R sin(a1) sin(a2) sin(a3) sin(a4) cos(a5)") print("x6 = R sin(a1) sin(a2) sin(a3) sin(a4) sin(a5) cos(a6)") print("x7 = R sin(a1) sin(a2) sin(a3) sin(a4) sin(a5) sin(a6) cos(a7)") print("x8 = R sin(a1) sin(a2) sin(a3) sin(a4) sin(a5) sin(a6) sin(a7)") print(" ") print("a1 = acos(x1/sqrt(x1^2+x2^2+x3^2+x4^2+x5^2+x6^2+x7^2+x8^2))") print("a2 = acos(x2/sqrt(x2^2+x3^2+x4^2+x5^2+x6^2+x7^2+x8^2))") print("a3 = acos(x3/sqrt(x3^2+x4^2+x5^2+x6^2+x7^2+x8^2))") print("a4 = acos(x4/sqrt(x4^2+x5^2+x6^2+x7^2+x8^2))") print("a5 = acos(x5/sqrt(x5^2+x6^2+x7^2+x8^2))") print("a6 = acos(x6/sqrt(x5^2+x6^2+x7^2+x8^2))") print("a7 = acos(x7/sqrt(x7^2+x8^2)) if x8>=0") print("a7 = 2 Pi - acos(x7/sqrt(x7^2+x8^2)) if x8<0") print(" ") print("faces.py finished") # end main def pwr2(n): pwr = 1 if n<=0 : return 1 for i in range(0, n) : pwr = pwr*2 return pwr # end pwr2 def fct(n): nfct = 1 if n<=0 : return 1 for i in range(2, n+1): nfct = nfct*i return nfct # end fct def comb(n, m): # n things taken m at a time if m>n : return 0 return fct(n)/(fct(m)*fct(n-m)) # end comb if __name__ == '__main__': main() # end faces.py