Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- p = Permutations[{0, 1, -1, 0, 1, -1, 0, 1, -1}, {3}];
- hexes = Flatten[ Table[{(-1)^i, (-1)^j, (-1)^k},
- {i, 2}, {j, 2}, {k, 2}
- ], 2][[;; 4]];
- hex[n_] :=
- SortBy[ Select[p, (n.# == 0) && Norm[#] > 0 &], angle[n, #] &];
- Perp[n_] :=
- Perp[n] =
- First[{x, y, z} /.
- FindInstance[{x, y, z}.n == 0 && (Norm[{x, y, z}]) > 0, {x, y,
- z}, Reals]];
- angle[n_, v_] :=
- Mod[VectorAngle[Perp[n], v] If[(Perp[n]\[Cross]v).n > 0, 1, -1],
- 2 Pi];
- anim[\[Theta]_] := Graphics3D[{
- Opacity[0.5], Red, Cuboid[{-1, -1, -1}, {1, 1, 1}], Opacity[1],
- White,
- ,
- Polygon[
- hex[#]] & /@ (hexes[[;;
- Round[4 TriangleWave[\[Theta]/(4 Pi)]]]])
- }, PlotRange -> 1.1, Boxed -> False,
- ViewPoint -> {5 Sin[\[Theta]/4], 5 Cos[\[Theta]/4], 2},
- ViewAngle -> Pi/8];
- Manipulate[
- anim[2 Pi (1 + ((\[Theta] - Pi)/(Pi))^3)/2], {\[Theta], 0, 2 Pi}]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement