Приведенный ниже код используется в программном обеспечении Wolfram Mathematica для построения кубоподобного блока и вращения его с использованием набора кватернионов:
<< Quaternions`
Q = Quaternion;
rotateq[theta_, v_] := Q @@ ({Cos[theta/2], 0, 0, 0} + (Sin[theta/2] Prepend[v, 0])/Sqrt[ Plus @@ (v^2)]);
Rotaterho[vector_, angle_, axis_] := N[rotateq[angle,axis] ** (Q @@ (Prepend[vector, 0])) ** (rotateq[angle, axis])^-1] // Rest// Chop
faces = {{{0, 0, 0}, {1, 0, 0}, {1, 0, 1}, {0, 0, 1}}, {{0, 0, 0}, {0, 0, 1}, {0, 1, 1}, {0, 1, 0}}, {{1, 0, 0}, {1, 1, 0}, {1, 1, 1}, {1, 0, 1}}, {{1, 1, 0},
{0, 1, 0}, {0, 1, 1}, {1, 1, 1}}};
axis = {1, 1, 1};
dots = {{.5, 0, 1}, {.5, 1, 1}, {1.5, .5, .5}, {-.5, .5, .5}};
Manipulate[t = ANGLE Degree;
points = Table[List @@ Rotaterho[dots[[m]], t, axis], {m, 1, 4}];
rotatedfaces = Table[Table[List @@ Rotaterho[faces[[c, m]], t, axis], {m, 1, 4}], {c, 1, 4}];
box = Table[Polygon[rotatedfaces[[m]]], {m, 1, 4}];
Graphics3D[{{EdgeForm[{Thick, Blue}], FaceForm[Red, LightBlue], box},
Thickness[Medium], Line[{{-2, -2, -2}, {2, 2, 2}}], PointSize[.03],Yellow, Point[points[[1]]], Green, Point[points[[2]]], Purple,
Point[points[[3]]], Point[points[[4]]],
Line[{points[[3]], points[[4]]}], Black, Point[{0, 0, 0}],
Point[{1, 1, 1}]}, Axes -> True,
Lighting -> Automatic, BaseStyle -> {FontSize -> 13}, Boxed -> True,
BoxStyle -> Directive[Dashed], AxesLabel -> {x, y, z},
PlotRange -> {{-2, 2}, {-2, 2}, {-2, 2}}], {ANGLE, 0., 360., 1.}]
Результат показан на картинке
https://i.stack.imgur.com/75NAb.jpg
Как добавить этот код и построить структуру, подобную сфере, и получить аналогичный результат?