Bir Bölgeyi Renklendirin

Sep 04 2020

Benim aramalarım bu konuda hiçbir yere götürmedi.

Bir MeshRegion(örneğin, 3B'de gömülü bir 2B manifoldum var) ve bunun üzerinde bir fonksiyon çizmek istiyorum: öyle ki (x, y, z) noktasındaki bir noktanın rengi koordinatların bir fonksiyonu tarafından belirlenir.

MeshCellStyleHücre başına düz renk belirlememe izin veren, ancak tam bir ColorFunctionstil için koordinatlara erişim sağlayan buldum . Ayrıca RegionPlot3D, (x,y,z) ∈ ℛtam boyutlu bir altmanifold için (kullanarak ) işe yarayabilecek, ancak 3B'ye gömülü daha düşük boyutlu bir nesne geçirildiğinde, örnekleme algoritması asla çarpmaz.

Yanıtlar

9 kglr Sep 04 2020 at 17:13

Aşağıdaki konularda örgü koordinatlarını ve poligonları çıkarabilir MeshRegionve bir inşa etmek için kullanabilirsiniz GraphicsComplexile VertexColors.

Örneğin:

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]

Almak VertexColors -> (Opacity[.7, Hue[f@##]] & @@@ Rescale[mc])için kullanın