Guest User

4d hypercube code

a guest
Jun 30th, 2026
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.35 KB | None | 0 0
  1. import numpy as np
  2.  
  3. def onCook(scriptOp):
  4.  
  5. scriptOp.clear()
  6.  
  7. # 16 vertices of tesseract
  8. verts = []
  9.  
  10. for i in range(16):
  11.  
  12. x = -1 if (i & 1) == 0 else 1
  13. y = -1 if (i & 2) == 0 else 1
  14. z = -1 if (i & 4) == 0 else 1
  15. w = -1 if (i & 8) == 0 else 1
  16.  
  17. verts.append(np.array([x,y,z,w], dtype=float))
  18.  
  19. t = absTime.seconds
  20.  
  21. # 4D rotation
  22. def rotate4d(v, a, b, angle):
  23.  
  24. r = np.copy(v)
  25.  
  26. c = np.cos(angle)
  27. s = np.sin(angle)
  28.  
  29. r[a] = v[a]*c - v[b]*s
  30. r[b] = v[a]*s + v[b]*c
  31.  
  32. return r
  33.  
  34. projected = []
  35.  
  36. for v in verts:
  37.  
  38. v = rotate4d(v, 0, 3, t*0.7)
  39. v = rotate4d(v, 1, 2, t*0.5)
  40.  
  41. # 4D -> 3D projection
  42. dist = 4
  43. w = 1 / (dist - v[3])
  44.  
  45. p3 = v[:3] * w * 1.5
  46.  
  47. projected.append(p3)
  48.  
  49. # Create points
  50. pts = []
  51.  
  52. for p in projected:
  53.  
  54. pt = scriptOp.appendPoint()
  55. pt.x = p[0]
  56. pt.y = p[1]
  57. pt.z = p[2]
  58.  
  59. pts.append(pt)
  60.  
  61. # Create edges
  62. for i in range(16):
  63. for j in range(i+1,16):
  64.  
  65. diff = bin(i ^ j).count("1")
  66.  
  67. if diff == 1:
  68.  
  69. poly = scriptOp.appendPoly(2, closed=False)
  70.  
  71. poly[0].point = pts[i]
  72. poly[1].point = pts[j]
  73.  
  74. return
Tags: td code
Advertisement
Add Comment
Please, Sign In to add comment