Advertisement
Matthen

Hexagons inside a cube

Nov 27th, 2011
348
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.88 KB | None | 0 0
  1. p = Permutations[{0, 1, -1, 0, 1, -1, 0, 1, -1}, {3}];
  2. hexes = Flatten[ Table[{(-1)^i, (-1)^j, (-1)^k},
  3. {i, 2}, {j, 2}, {k, 2}
  4. ], 2][[;; 4]];
  5. hex[n_] :=
  6. SortBy[ Select[p, (n.# == 0) && Norm[#] > 0 &], angle[n, #] &];
  7. Perp[n_] :=
  8. Perp[n] =
  9. First[{x, y, z} /.
  10. FindInstance[{x, y, z}.n == 0 && (Norm[{x, y, z}]) > 0, {x, y,
  11. z}, Reals]];
  12. angle[n_, v_] :=
  13. Mod[VectorAngle[Perp[n], v] If[(Perp[n]\[Cross]v).n > 0, 1, -1],
  14. 2 Pi];
  15. anim[\[Theta]_] := Graphics3D[{
  16. Opacity[0.5], Red, Cuboid[{-1, -1, -1}, {1, 1, 1}], Opacity[1],
  17. White,
  18. ,
  19. Polygon[
  20. hex[#]] & /@ (hexes[[;;
  21. Round[4 TriangleWave[\[Theta]/(4 Pi)]]]])
  22. }, PlotRange -> 1.1, Boxed -> False,
  23. ViewPoint -> {5 Sin[\[Theta]/4], 5 Cos[\[Theta]/4], 2},
  24. ViewAngle -> Pi/8];
  25. Manipulate[
  26. anim[2 Pi (1 + ((\[Theta] - Pi)/(Pi))^3)/2], {\[Theta], 0, 2 Pi}]
  27.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement