Раскрасить регион

Sep 04 2020

Мои поиски ни к чему не привели.

У меня есть MeshRegion(скажем, 2D-многообразие, встроенное в 3D), и я хотел бы построить на нем функцию: так, чтобы цвет точки в (x, y, z) определялся функцией координат.

Я нашел MeshCellStyle, что позволяет мне указывать плоский цвет для каждой ячейки, но дает доступ к координатам для полного ColorFunctionстиля. Есть также RegionPlot3D, что может работать (использовать (x,y,z) ∈ ℛ) для полномасштабного подмногообразия, но при передаче объекта более низкой размерности, встроенного в 3D, алгоритм выборки никогда не срабатывает.

Ответы

9 kglr Sep 04 2020 at 17:13

Вы можете извлекать координаты сетки и свои многоугольники MeshRegionи использовать их для построения GraphicsComplexс VertexColors.

Например:

mreg = DiscretizeRegion[
       ImplicitRegion[-3 y - 4 x y^2 + 4 x z^2 + 4 x^2 z + 2 y^2 z^2 + z^3 == 0, 
         {x, y, z}],  MaxCellMeasure -> .001]

mc = MeshCoordinates[mreg];

polys = MeshCells[mreg, 2];

f[x_, y_, z_] := x y + z; 

Graphics3D[{EdgeForm[], 
  GraphicsComplex[mc, polys, VertexColors -> (Hue[f@##] & @@@ Rescale[mc])]}, 
  Boxed -> False]

Используйте, VertexColors -> (Opacity[.7, Hue[f@##]] & @@@ Rescale[mc])чтобы получить