ระบายสีพื้นที่

Sep 04 2020

การค้นหาของฉันไม่มีใครนำไปสู่การค้นหานี้

ฉันมีMeshRegion(พูดคือท่อร่วม 2 มิติที่ฝังอยู่ใน 3 มิติ) และต้องการพล็อตฟังก์ชั่นบนมันดังนั้นสีของจุดที่ (x, y, z) จะถูกกำหนดโดยฟังก์ชันของพิกัด

ฉันพบMeshCellStyleแล้วซึ่งทำให้ฉันสามารถระบุสีแบนต่อเซลล์ได้ แต่ให้การเข้าถึงพิกัดสำหรับColorFunctionสไตล์เต็มรูปแบบ นอกจากนี้ยังRegionPlot3Dสามารถใช้งานได้ (โดยใช้(x,y,z) ∈ ℛ) สำหรับ submanifold แบบเต็มมิติ แต่เมื่อส่งผ่านวัตถุมิติต่ำกว่าที่ฝังอยู่ใน 3 มิติอัลกอริทึมการสุ่มตัวอย่างจะไม่เกิดขึ้น

คำตอบ

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])เพื่อรับ