Как сделать такие рисунки

Sep 26 2020

Этот рис. Представляет LQU, где LQU является функцией $c_1,c_3$, и $c_3$, $c_i \in[-1,1]$.

Как сделать такие рисунки?

Ответы

11 kglr Sep 26 2020 at 03:43
tet = Tetrahedron[{{-1, -1, -1}, {1, 1, -1}, {-1, 1, 1}, {1, -1, 1}}];

Graphics3D[{tet}, Axes -> True]

Мы можем использовать RegionPlot3Dс параметрами Meshи MeshShadingразделить tetна 8 тетраэдров и стилизовать грани по-разному:

SeedRandom[12]

RegionPlot3D[tet,  
 PlotPoints -> 90, BaseStyle -> Opacity[.9], 
 Mesh -> 1, 
 MeshShading -> RandomColor[{2, 2, 2}] , 
 Lighting -> "Neutral", Axes -> True]

Мы также можем использовать функцию SymmetricSubdivisionиз Tetrahedron >> Applications, чтобы разделить tetна 8 тетраэдров:

SymmetricSubdivision[Tetrahedron[pl_], k_] /; 0 <= k < 2^Length[pl] := 
  Module[{n = Length[pl] - 1, i0, bl, pos},
   i0 = DigitCount[k, 2, 1]; bl = IntegerDigits[k, 2, n];
   pos = FoldList[If[#2 == 0, #1 + {0, 1}, #1 + {1, 0}] &, {0, i0},  Reverse[bl]];
   Tetrahedron @ Map[Mean, Extract[pl, #] & /@ Map[{#} &, pos + 1, {2}]]]

colors = {Yellow, Yellow, Blue, Yellow, Blue, Blue, Blue, Yellow};

Graphics3D[{colors[[# + 1]], SymmetricSubdivision[tet, #]} & /@ 
  Range[0, 7], BaseStyle -> Opacity[0.5], Axes -> True]