BoundaryMeshRegion[{p1,p2,…},{bcell1[{i1,…}],bcell2[{j1,…}],…}]
生成具有边界单元 bcellj 的网格,其中以整数 i 给出的坐标取作 pi,这些单元一起表示闭合曲线、曲面等.
BoundaryMeshRegion[…,{…,wi[bcelli[…]],…}]
生成网格,单元属性由符号式封装 wi 定义.
BoundaryMeshRegion[…,boundary1,boundary2,…]
从多个边界 boundaryi 生成网格.
BoundaryMeshRegion
BoundaryMeshRegion[{p1,p2,…},{bcell1[{i1,…}],bcell2[{j1,…}],…}]
生成具有边界单元 bcellj 的网格,其中以整数 i 给出的坐标取作 pi,这些单元一起表示闭合曲线、曲面等.
BoundaryMeshRegion[…,{…,wi[bcelli[…]],…}]
生成网格,单元属性由符号式封装 wi 定义.
BoundaryMeshRegion[…,boundary1,boundary2,…]
从多个边界 boundaryi 生成网格.
更多信息和选项
- BoundaryMeshRegion 也被称作边界表示.
- BoundaryMeshRegion 可以表示在一维、二维或者三维空间中嵌入的分段线性的全维区域.
- BoundaryMeshRegion[…] 在笔记本中显示为边界网格区域的图形.
- BoundaryMeshRegion 通常使用诸如 ConvexHullMesh, BoundaryMesh、BoundaryDiscretizeRegion 和 BoundaryDiscretizeGraphics 等函数构建.
- 边界单元需要表示一个无自相交的封闭曲线或曲面.
- 在 BoundaryMeshRegion[{p1,p2,…},b1,b2,…] 中,边界曲线或曲面 bi 不应该与自身或彼此相交.
- 在 BoundaryMeshRegion[{p1,p2,…},b1,b2,…] 中,如果有任何起点为 p 的无穷射线穿过边界集合 bi 奇数次,则点 p 被认为在由边界曲线或曲面 bi 包围的区域中.
- 下列特殊封装 wi 可用作边界面:
-
Labeled[cell,…] 显示具有标签的 cell Style[cell,…] 显示具有指定样式的 cell Annotation[cell,name->value] 将注释 name->value 与 cell 关联 - BoundaryMeshRegion 中的每个单元都被赋予一个唯一的形如 {d,i} 的 MeshCellIndex,其中 d 是几何维数,i 为索引.
- 出于选择 BoundaryMeshRegion 单元的目的,可以使用下列单元规范:
-
{d,i} 维数为 d、索引为 i 的单元 {d,ispec} 维数为 d、索引规范为 ispec 的单元 {dspec,…} 维数由 dspec 给出的单元 h[{i1,…}] 显式单元,其中标头为 h、顶点索引为 i1、… {c1,c2,…} 显式单元 ci 的列表 - 索引规范 ispec 可以具有下列形式:
-
i 单元索引 i {i1,i2,…} 索引为 ik 的单元 All 全部单元 patt 索引和模式 patt 匹配的单元 - 维数规范 dspec 可以具有下列形式:
-
d 显式维数 d All 从 0 到区域的几何维数的全部维数 patt 与模式 patt 匹配的维数 - BoundaryMeshRegion 含有最大维数为 n-1 的单元,其中 n 是嵌入维数.
- BoundaryMeshRegion 总是被转换成一个优化表示,并出于模式匹配的目的,被诸如 AtomQ 等函数当作原始表示.
- 如果嵌入维数为2,BoundaryMeshRegion 的选项与 Graphics 相同,如果嵌入维数为3,选项与 Graphics3D 相同,并有下列增补和变化:
-
MeshCellLabel Automatic 单元的标签和位置 MeshCellShapeFunction Automatic 单元的形状函数 MeshCellStyle Automatic 单元样式 MeshCellHighlight {} 突出显示的单元的单元列表 MeshCellMarker 0 单元的整数标记 PlotTheme $PlotTheme 网格的全局主题 - PlotTheme 的可能设置包括常见基本主题、强调字体特征的主题和强调大小特征的主题.
- 网格特征主题影响网格单元的图形. 主题包括:
-

"Points" 0 维单元 
"Lines" 一维单元,线框 
"Polygons" 二维单元 - 渲染特征主题影响网格的渲染. 主题包括:
-

"SampledPoints" 来自网格单元的采样点 
"SphereAndTube" 点作为球,线作为管 
"SmoothShading" 平滑上阴影 
"FaceNormals" 各个二维单元的法线 
"LargeMesh" 对于大量单元的优化 - 单元样式及其他规范的实际应用顺序为 MeshCellStyle、Style 和其他封装,其中后面出现的规范覆盖先前出现的规范.
- 单元标签的标签样式及其他规范的实际应用顺序为 MeshCellLabel 和 Labeled,其中后面出现的规范覆盖先前出现的规范.
- BoundaryMeshRegion 可与诸如 RegionMember、RegionDistance、RegionMeasure 和 NDSolve 之类的函数合用.
范例
打开所有单元 关闭所有单元基本范例 (5)
ℛ = BoundaryMeshRegion[{{0}, {1}}, Point[{1, 2}]]{RegionDimension[ℛ], RegionEmbeddingDimension[ℛ]}{BoundedRegionQ[ℛ], RegionBounds[ℛ]}{RegionMeasure[ℛ], RegionCentroid[ℛ]}RegionMember[ℛ, {1 / 2}]ℛ = BoundaryMeshRegion[{{0, 0}, {1, 0}, {0, 1}}, Line[{1, 2, 3, 1}]]{RegionDimension[ℛ], RegionEmbeddingDimension[ℛ]}{BoundedRegionQ[ℛ], RegionBounds[ℛ]}{RegionMeasure[ℛ], RegionCentroid[ℛ]}RegionMember[ℛ, {1 / 3, 1 / 3}]ℛ = BoundaryMeshRegion[{{0, 0, 0}, {1, 0, 0}, {0, 1, 0}, {0, 0, 1}}, Polygon[{{1, 2, 3}, {1, 2, 4}, {2, 3, 4}, {1, 3, 4}}]]{RegionDimension[ℛ], RegionEmbeddingDimension[ℛ]}{BoundedRegionQ[ℛ], RegionBounds[ℛ]}{RegionMeasure[ℛ], RegionCentroid[ℛ]}RegionMember[ℛ, {1 / 4, 1 / 4, 1 / 4}]ℛ = BoundaryMeshRegion[{{0, 0}, {3, 0}, {3, 3}, {0, 3}, {1, 1}, {2, 1}, {2, 2}, {1, 2}}, Line[{1, 2, 3, 4, 1}], Line[{5, 6, 7, 8, 5}]];HighlightMesh[ℛ, Labeled[0, "Index"]]Area[ℛ]pts = {{0, 0, 0}, {0, 1, 0}, {1, 1, 0}, {1, 0, 0}, {0, 0, 1}, {0, 1, 1}, {1, 1, 1}, {1, 0, 1}};
pts1 = ScalingTransform[{3, 3, 3}][pts];
pts2 = TranslationTransform[{1, 1, 1}][pts];
hex = {{2, 3, 4, 1}, {1, 4, 8, 5}, {4, 3, 7, 8}, {3, 2, 6, 7}, {2, 1, 5, 6}, {5, 8, 7, 6}};ℛ = BoundaryMeshRegion[Join[pts1, pts2], Polygon[hex], Polygon[hex + 8], MeshCellStyle -> Opacity[0.3]];HighlightMesh[ℛ, Labeled[0, "Index"]]Volume[ℛ]范围 (18)
一维区域 (4)
ℛ = BoundaryMeshRegion[{{0}, {1}}, Point[{1, 2}]]通过 HighlightMesh 给点加标签:
HighlightMesh[ℛ, Labeled[0, "Index"]]{RegionDimension[ℛ], RegionEmbeddingDimension[ℛ]}{BoundedRegionQ[ℛ], RegionBounds[ℛ]}{RegionMeasure[ℛ], RegionCentroid[ℛ]}RegionMember[ℛ, {0}]BoundaryMeshRegion[{{0}, {3}, {6}, {9}}, {Point[{1, 2}], Point[{3, 4}]}]将 Style 应用于边界点:
BoundaryMeshRegion[{{0}, {1}}, Style[Point[{1, 2}], Red]]BoundaryMeshRegion[{{0}, {1}}, Labeled[Point[{1, 2}], "Index"]]二维区域 (4)
ℛ = BoundaryMeshRegion[{{0, 0}, {3, 0}, {0, 3}}, Line[{1, 2, 3, 1}]]通过 HighlightMesh 给线段加标签:
HighlightMesh[ℛ, Labeled[1, "Index"]]{RegionDimension[ℛ], RegionEmbeddingDimension[ℛ]}{BoundedRegionQ[ℛ], RegionBounds[ℛ]}{RegionMeasure[ℛ], RegionCentroid[ℛ]}RegionMember[ℛ, {1, 1}]ℛ = BoundaryMeshRegion[{{0, 0}, {3, 0}, {3, 3}, {0, 3}, {1, 1}, {2, 1}, {2, 2}, {1, 2}}, Line[{1, 2, 3, 4, 1}], Line[{5, 6, 7, 8, 5}]];通过 HighlightMesh 用相应的索引来标记点:
HighlightMesh[ℛ, Labeled[0, "Index"]]将 Style 应用于边界线:
BoundaryMeshRegion[{{0, 0}, {3, 0}, {3, 3}, {0, 3}, {1, 1}, {2, 1}, {2, 2}, {1, 2}}, Line[{1, 2, 3, 4, 1}], Style[Line[{5, 6, 7, 8, 5}], Red]]BoundaryMeshRegion[{{0, 0}, {3, 0}, {3, 3}, {0, 3}, {1, 1}, {2, 1}, {2, 2}, {1, 2}}, Line[{1, 2, 3, 4, 1}], Labeled[Line[{5, 6, 7, 8, 5}], "Index"]]三维区域 (4)
ℛ = BoundaryMeshRegion[{{0, 0, 0}, {4, 0, 0}, {0, 4, 0}, {0, 0, 4}}, Polygon[{{1, 2, 3}, {1, 2, 4}, {2, 3, 4}, {1, 3, 4}}]]通过 HighlightMesh 标记线段:
HighlightMesh[ℛ, Labeled[1, "Index"]]{RegionDimension[ℛ], RegionEmbeddingDimension[ℛ]}{BoundedRegionQ[ℛ], RegionBounds[ℛ]}{RegionMeasure[ℛ], RegionCentroid[ℛ]}RegionMember[ℛ, {1, 1, 1}]pts = {{0, 0, 0}, {0, 1, 0}, {1, 1, 0}, {1, 0, 0}, {0, 0, 1}, {0, 1, 1}, {1, 1, 1}, {1, 0, 1}};
pts1 = ScalingTransform[{3, 3, 3}][pts];
pts2 = TranslationTransform[{1, 1, 1}][pts];
hex = {{2, 3, 4, 1}, {1, 4, 8, 5}, {4, 3, 7, 8}, {3, 2, 6, 7}, {2, 1, 5, 6}, {5, 8, 7, 6}};ℛ = BoundaryMeshRegion[Join[pts1, pts2], Polygon[hex], Polygon[hex + 8], MeshCellStyle -> Opacity[0.3]];HighlightMesh[ℛ, Labeled[0, "Index"]]将 Style 应用于特定边界面:
pts = {{1, -1, -3}, {1, -1, 1}, {1, 3, 1}, {-3, -1, 1}};
i = {{1, 2, 3}, {1, 2, 4}, {2, 3, 4}, {1, 3, 4}};BoundaryMeshRegion[Join[pts, pts / 2], Polygon[i + 4], Style[Polygon[i], Opacity[0.5, Red]]]pts = {{1, -1, -3}, {1, -1, 1}, {1, 3, 1}, {-3, -1, 1}};
i = {{1, 2, 3}, {1, 2, 4}, {2, 3, 4}, {1, 3, 4}};BoundaryMeshRegion[Join[pts, pts / 2], Polygon[i + 4], Labeled[Polygon[i], "Index"]]演示 (6)
BoundaryMeshRegion[[image], PlotTheme -> "Points"]BoundaryMeshRegion[[image], PlotTheme -> "Lines"]BoundaryMeshRegion[[image], PlotTheme -> "Polygons"]BoundaryMeshRegion[[image], PlotTheme -> "SampledPoints"]BoundaryMeshRegion[[image], PlotTheme -> "SmoothShading"]BoundaryMeshRegion[[image], PlotTheme -> "FaceNormals"]选项 (127)
AlignmentPoint (1)
指定3D Inset 中的对齐位置,使用
坐标:
Table[Graphics[{Inset[BoundaryMeshRegion[{{0, 0}, {1, 0}, {0, 1}}, Line[{1, 2, 3, 1}], ImageSize -> 50, AlignmentPoint -> {a, 0}], {0, 0}]}, ImageSize -> 100, Axes -> True, Ticks -> None], {a, {0, 1 / 2, 1}}]Table[Graphics[{Inset[BoundaryMeshRegion[{{0, 0}, {1, 0}, {0, 1}}, Line[{1, 2, 3, 1}], ImageSize -> 50, AlignmentPoint -> {1 / 2, a}], {0, 0}]}, ImageSize -> 100, Axes -> True, Ticks -> None], {a, {0, 1 / 2, 1}}]AspectRatio (1)
对 AspectRatio 使用数值:
Table[BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], AspectRatio -> 1 / k], {k, 1, 3}]Axes (2)
AxesEdge (2)
BoundaryMeshRegion[{{0, 0, 0}, {2, 0, 0}, {2, 2, 0}, {0, 2, 0}, {1, 1, 2}}, Polygon[{{1, 2, 5}, {1, 5, 4}, {2, 3, 5}, {3, 4, 5}, {1, 4, 3, 2}}], Boxed -> True, Axes -> True, AxesEdge -> Automatic]BoundaryMeshRegion[{{0, 0, 0}, {2, 0, 0}, {2, 2, 0}, {0, 2, 0}, {1, 1, 2}}, Polygon[{{1, 2, 5}, {1, 5, 4}, {2, 3, 5}, {3, 4, 5}, {1, 4, 3, 2}}], Boxed -> True, Axes -> True, AxesEdge -> {{1, 1}, None, None}]AxesLabel (2)
AxesOrigin (2)
AxesStyle (2)
BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], Axes -> True, AxesStyle -> Directive[Orange, 12]]BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], Axes -> True, AxesStyle -> {Directive[Dashed, Red], Blue}]Background (1)
BaselinePosition (3)
{x, BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], ImageSize -> 50, BaselinePosition -> Center], y}通过 Scaled 指定图像的基线为高度的分数:
Table[{x, BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], ImageSize -> 50, BaselinePosition -> Scaled[b]]}, {b, {0, 0.5, 1}}]{x, BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], ImageSize -> 50, BaselinePosition -> Axis], y}BaseStyle (2)
Boxed (2)
BoundaryMeshRegion[{{0, 0, 0}, {2, 0, 0}, {2, 2, 0}, {0, 2, 0}, {1, 1, 2}}, Polygon[{{1, 2, 5}, {1, 5, 4}, {2, 3, 5}, {3, 4, 5}, {1, 4, 3, 2}}], Boxed -> True]BoundaryMeshRegion[{{0, 0, 0}, {2, 0, 0}, {2, 2, 0}, {0, 2, 0}, {1, 1, 2}}, Polygon[{{1, 2, 5}, {1, 5, 4}, {2, 3, 5}, {3, 4, 5}, {1, 4, 3, 2}}], Boxed -> False]BoxRatios (2)
BoundaryMeshRegion[{{0, 0, 0}, {2, 0, 0}, {2, 2, 0}, {0, 2, 0}, {1, 1, 2}}, Polygon[{{1, 2, 5}, {1, 5, 4}, {2, 3, 5}, {3, 4, 5}, {1, 4, 3, 2}}], Boxed -> True, BoxRatios -> {1, 2, 3}]BoundaryMeshRegion[{{0, 0, 0}, {2, 0, 0}, {2, 2, 0}, {0, 2, 0}, {1, 1, 2}}, Polygon[{{1, 2, 5}, {1, 5, 4}, {2, 3, 5}, {3, 4, 5}, {1, 4, 3, 2}}], Boxed -> True, Axes -> True, BoxRatios -> Automatic]BoxStyle (1)
Epilog (1)
FaceGrids (4)
MeshRegion[{{0, 0, 0}, {2, 0, 0}, {2, 2, 0}, {0, 2, 0}, {1, 1, 2}}, Pyramid[{1, 2, 3, 4, 5}], Axes -> True, Boxed -> True, FaceGrids -> All]BoundaryMeshRegion[{{0, 0, 0}, {2, 0, 0}, {2, 2, 0}, {0, 2, 0}, {1, 1, 2}}, Polygon[{{1, 2, 5}, {1, 5, 4}, {2, 3, 5}, {3, 4, 5}, {1, 4, 3, 2}}], Axes -> True, Boxed -> True, FaceGrids -> {{0, 0, 1}, {0, 0, -1}}]BoundaryMeshRegion[{{0, 0, 0}, {2, 0, 0}, {2, 2, 0}, {0, 2, 0}, {1, 1, 2}}, Polygon[{{1, 2, 5}, {1, 5, 4}, {2, 3, 5}, {3, 4, 5}, {1, 4, 3, 2}}], Axes -> True, Boxed -> True, FaceGrids -> {{0, -1, 0}}]BoundaryMeshRegion[{{0, 0, 0}, {2, 0, 0}, {2, 2, 0}, {0, 2, 0}, {1, 1, 2}}, Polygon[{{1, 2, 5}, {1, 5, 4}, {2, 3, 5}, {3, 4, 5}, {1, 4, 3, 2}}], Axes -> True, Boxed -> True, FaceGrids -> {{{0, -1, 0}, {{1}, {2 / 3, 4 / 3}}}}]FaceGridsStyle (1)
Frame (2)
FrameLabel (2)
FrameStyle (2)
BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], Frame -> True, FrameStyle -> Directive[Thick, Gray]]BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], Frame -> True, FrameStyle -> {{Thick, Directive[Thick, Dashed]}, {Blue, Red}}]FrameTicks (3)
BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], Frame -> True, FrameTicks -> None]BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], Frame -> True, FrameTicks -> Automatic]BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], Frame -> True, FrameTicks -> {{None, Automatic}, {Automatic, None}}]FrameTicksStyle (2)
BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], Frame -> True, FrameTicksStyle -> Directive[Orange, 12]]BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], Frame -> True, FrameTicksStyle -> {{Magenta, Blue}, {Red, Green}}]GridLines (3)
BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], GridLines -> Automatic]BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], Axes -> True, GridLines -> {{.5, 1.5}, {.5, 1.5}}]BoundaryMeshRegion[{{-1, 0}, {1, 0}, {0, Sqrt[3]}}, Line[{1, 2, 3, 1}], Axes -> True, GridLines -> {{{-1, Orange}, {-.5, Dotted}, {.5, Dotted}, {1, Orange}}, {0, {.5, Dotted}, {1.5, Dotted}, 2}}]GridLinesStyle (1)
ImageMargins (3)
对 ImageSize 的外侧不允许空白边缘:
Framed[BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}]]]Framed[BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], ImageMargins -> 20]]Framed[BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], ImageMargins -> {{5, 10}, {20, 30}}]]ImagePadding (4)
BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], ImagePadding -> None, Frame -> True, FrameLabel -> {x, y}]Framed[BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], ImagePadding -> All, Frame -> True, FrameLabel -> {x, y}], FrameMargins -> 0]Framed[BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], ImagePadding -> 40, Frame -> True]]Framed[BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], ImagePadding -> {{40, 10}, {20, 5}}, Frame -> True]]ImageSize (3)
Table[BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], ImageSize -> s], {s, {Tiny, Small}}]{BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], ImageSize -> 100], BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, 3}}, Line[{1, 2, 3, 1}], ImageSize -> 100]}{BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], ImageSize -> {100, 100}], BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, 3}}, Line[{1, 2, 3, 1}], ImageSize -> {100, 100}]}LabelStyle (1)
Lighting (4)
BoundaryMeshRegion[{{0, 0, 0}, {2, 0, 0}, {2, 2, 0}, {0, 2, 0}, {1, 1, 2}}, Polygon[{{1, 2, 5}, {1, 5, 4}, {2, 3, 5}, {3, 4, 5}, {1, 4, 3, 2}}], Lighting -> {{"Ambient", Orange}}]Table[BoundaryMeshRegion[{{0, 0, 0}, {2, 0, 0}, {2, 2, 0}, {0, 2, 0}, {1, 1, 2}}, Polygon[{{1, 2, 5}, {1, 5, 4}, {2, 3, 5}, {3, 4, 5}, {1, 4, 3, 2}}], Lighting -> {{"Directional", c, {{1.5, 0, 2}, {0, 0, 0}}}}], {c, {Red, Yellow, Blue}}]Table[BoundaryMeshRegion[{{0, 0, 0}, {2, 0, 0}, {2, 2, 0}, {0, 2, 0}, {1, 1, 2}}, Polygon[{{1, 2, 5}, {1, 5, 4}, {2, 3, 5}, {3, 4, 5}, {1, 4, 3, 2}}], Lighting -> {{"Point", c, {1.5, 0, 3}}}], {c, {Red, Yellow, Blue}}]Table[BoundaryMeshRegion[{{0, 0, 0}, {2, 0, 0}, {2, 2, 0}, {0, 2, 0}, {1, 1, 2}}, Polygon[{{1, 2, 5}, {1, 5, 4}, {2, 3, 5}, {3, 4, 5}, {1, 4, 3, 2}}], Lighting -> {{"Spot", c, {{1, 1, 2.5}, {1, 1, 2}}, Pi / 8}}], {c, {Red, Yellow, Blue}}]MeshCellHighlight (3)
MeshCellHighlight 允许指定加亮 BoundaryMeshRegion 的一部分:
BoundaryMeshRegion[{{0, 0}, {1, 0}, {0, 1}}, Line[{1, 2, 3, 1}], MeshCellHighlight -> {{1, All} -> Red, {0, All} -> Green}]通过使表面变成透明的,三维 BoundaryMeshRegion 的内部结构可见:
BoundaryMeshRegion[{{0, 0, 0}, {1, 0, 0}, {0, 1, 0}, {0, 0, 1}}, Polygon[{{1, 2, 3}, {1, 2, 4}, {2, 3, 4}, {1, 3, 4}}], MeshCellHighlight -> {{2, All} -> Opacity[0.5, Orange]}]BoundaryMeshRegion[{{0, 0}, {1, 0}, {0, 1}}, Line[{1, 2, 3, 1}], MeshCellHighlight -> {{1, 1} -> {Thick, Red}, {1, 2} -> {Dashed, Green}}]MeshRegion[{{0}, {1}, {2}}, Line[{{1, 2, 3}}], MeshCellHighlight -> {{1, 1} -> {Thick, Red}, {1, 2} -> {Dashed, Green}}]BoundaryMeshRegion[{{0, 0}, {1, 0}, {0, 1}}, Line[{1, 2, 3, 1}], MeshCellHighlight -> {Line[{1, 2}] -> {Thick, Red}, Line[{2, 3}] -> {Dashed, Green}}]MeshCellLabel (11)
MeshCellLabel 可用于标记 BoundaryMeshRegion 的不同部分:
BoundaryMeshRegion[{{0, 0}, {3, 0}, {3, 3}, {0, 3}, {1, 1}, {2, 1}, {2, 2}, {1, 2}}, Line[{1, 2, 3, 4, 1}], Line[{5, 6, 7, 8, 5}], MeshCellLabel -> {1 -> "Index"}]MeshCellLabel 可以通过 "Index"、"CellIndex" 或 "Cell" 显示单元的索引:
Table[BoundaryMeshRegion[{{0, 0}, {1, 0}, {0, 1}}, Line[{1, 2, 3, 1}], MeshCellLabel -> {{{0, 3}, {1, 2}} -> cl}], {cl, {"Index", "CellIndex", "Cell"}}]BoundaryMeshRegion[{{0, 0}, {6, 0}, {3, 3}, {3, 6}, {0, 3}}, Line[{1, 2, 3, 4, 5, 1}], MeshCellLabel -> {0 -> "Index", {{1, 1}} -> [image], {{1, 2}} -> Sqrt[a^2 + b^2], {1, 3} -> "North", {1, 4} -> [image], {1, 5} -> [image]}]BoundaryMeshRegion[{{0, 0}, {1, 0}, {0, 1}}, Line[{1, 2, 3, 1}], MeshCellLabel -> {All -> Placed["Cell", Tooltip]}]All 可用于指定所有单元:
BoundaryMeshRegion[{{0, 0}, {1, 0}, {0, 1}}, Line[{1, 2, 3, 1}], MeshCellLabel -> {All -> "x"}]BoundaryMeshRegion[{{0, 0}, {1, 0}, {0, 1}}, Line[{1, 2, 3, 1}], MeshCellLabel -> "x"]BoundaryMeshRegion[{{0, 0}, {1, 0}, {0, 1}}, Line[{1, 2, 3, 1}], MeshCellLabel -> {0 -> "point", 1 -> "line"}]BoundaryMeshRegion[{{0, 0}, {1, 0}, {0, 1}}, Line[{1, 2, 3, 1}], MeshCellLabel -> {{0, {1, 2}} -> "Index", {1, 1} -> "Cell"}]BoundaryMeshRegion[{{0, 0}, {1, 0}, {0, 1}}, Line[{1, 2, 3, 1}], MeshCellLabel -> {Point[{1, 2}] -> "Index", Line[{1, 2}] -> "Cell"}]BoundaryMeshRegion[{{0, 0}, {1, 0}, {0, 1}}, Line[{1, 2, 3, 1}], MeshCellLabel -> {{{0, 1}, {1, 2}} -> "Cell"}]BoundaryMeshRegion[{{0, 0, 0}, {1, 0, 0}, {0, 1, 0}, {0, 0, 1}}, Polygon[{{1, 2, 3}, {1, 2, 4}, {2, 3, 4}, {1, 3, 4}}], MeshCellLabel -> {{0 | 2} -> "CellIndex"}]BoundaryMeshRegion[{{0, 0}, {3, 0}, {3, 3}, {0, 3}, {1, 1}, {2, 1}, {2, 2}, {1, 2}}, Line[{1, 2, 3, 4, 1}], Line[{5, 6, 7, 8, 5}], MeshCellLabel -> {{1, _ ? EvenQ} -> "Index"}]BoundaryMeshRegion[{{0, 0}, {3, 0}, {3, 3}, {0, 3}, {1, 1}, {2, 1}, {2, 2}, {1, 2}}, Labeled[Line[{1, 2, 3, 4, 1}], "x"], Line[{5, 6, 7, 8, 5}], MeshCellLabel -> {1 -> "Index"}]MeshCellMarker (1)
MeshCellMarker 可用于给部分 BoundaryMeshRegion 进行赋值:
BoundaryMeshRegion[{{0, 0}, {1, 0}, {0, 1}}, Line[{1, 2, 3, 1}], MeshCellMarker -> {{1, 1} -> 1, {1, 2} -> 2, {1, 3} -> 3}]使用 MeshCellLabel 显示标记:
BoundaryMeshRegion[{{0, 0}, {1, 0}, {0, 1}}, Line[{1, 2, 3, 1}], MeshCellLabel -> {1 -> "Marker"}, MeshCellMarker -> {{1, 1} -> 1, {1, 2} -> 2, {1, 3} -> 3}]MeshCellShapeFunction (2)
MeshCellShapeFunction 允许指定部分 BoundaryMeshRegion 的函数:
BoundaryMeshRegion[{{0, 0}, {1, 0}, {0, 1}}, Line[{1, 2, 3, 1}], MeshCellShapeFunction -> {1 -> (Arrow[#]&), 0 -> (Disk[#, .05]&)}]BoundaryMeshRegion[{{0, 0}, {1, 0}, {0, 1}}, Line[{1, 2, 3, 1}], MeshCellShapeFunction -> {{0, 1} -> (Disk[#, .1]&), {0, 2} -> (Disk[#, {.1, .05}]&)}]BoundaryMeshRegion[{{0, 0}, {1, 0}, {0, 1}}, Line[{1, 2, 3, 1}], MeshCellShapeFunction -> {Point[1] -> (Disk[#, .1]&), Point[2] -> (Disk[#, {.1, .05}]&)}]MeshCellStyle (8)
All 可用于指定所有单元:
BoundaryMeshRegion[{{0, 0}, {1, 0}, {0, 1}}, Line[{1, 2, 3, 1}], MeshCellStyle -> {All -> Red}]BoundaryMeshRegion[{{0, 0}, {1, 0}, {0, 1}}, Line[{1, 2, 3, 1}], MeshCellStyle -> Red]BoundaryMeshRegion[{{0, 0}, {1, 0}, {0, 1}}, Line[{1, 2, 3, 1}], MeshCellStyle -> {0 -> {PointSize[Large], Green}, 1 -> Red}]BoundaryMeshRegion[{{0, 0}, {1, 0}, {0, 1}}, Line[{1, 2, 3, 1}], MeshCellStyle -> {{0, {1, 2}} -> Directive[PointSize[Large], Green], {1, 1} -> Red}]BoundaryMeshRegion[{{0, 0}, {1, 0}, {0, 1}}, Line[{1, 2, 3, 1}], MeshCellStyle -> {Point[{1, 2}] -> Directive[PointSize[Large], Green], Line[{1, 2}] -> Red}]BoundaryMeshRegion[{{0, 0}, {1, 0}, {0, 1}}, Line[{1, 2, 3, 1}], MeshCellStyle -> {{{0, 1}, {1, 2}} -> Red}]BoundaryMeshRegion[{{0, 0, 0}, {1, 0, 0}, {0, 1, 0}, {0, 0, 1}}, Polygon[{{1, 2, 3}, {1, 2, 4}, {2, 3, 4}, {1, 3, 4}}], MeshCellStyle -> {{0 | 1} -> Red}]BoundaryMeshRegion[{{0, 0}, {3, 0}, {3, 3}, {0, 3}, {1, 1}, {2, 1}, {2, 2}, {1, 2}}, Line[{1, 2, 3, 4, 1}], Line[{5, 6, 7, 8, 5}], MeshCellStyle -> {{1, _ ? EvenQ} -> Red}]ℛ = BoundaryMeshRegion[{{0, 0, 0}, {4, 0, 0}, {0, 4, 0}, {0, 0, 4}}, Polygon[{{1, 2, 3}, {1, 2, 4}, {2, 3, 4}, {1, 3, 4}}], MeshCellStyle -> {0 -> {PointSize[Large], Green}, 1 -> {Dashed, Thick, Red}, 2 -> Opacity[0.7, Brown]}]BoundaryMeshRegion[{{0, 0}, {3, 0}, {3, 3}, {0, 3}, {1, 1}, {2, 1}, {2, 2}, {1, 2}}, Style[Line[{1, 2, 3, 4, 1}], Green], Line[{5, 6, 7, 8, 5}], MeshCellStyle -> {1 -> Red}]PlotLabel (2)
在 TraditionalForm 的图形上方显示标记:
BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], PlotLabel -> x ^ 2 + y ^ 2 == 1]使用 Style 和其它排版函数修改标签所出现的方式:
BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], PlotLabel -> Style[Framed[x ^ 2 + y ^ 2 == 1], 16, Red, Background -> Yellow]]PlotRange (3)
BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], Frame -> True, PlotRange -> All]BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], PlotRange -> {{0, 2}, {0, 1}}, Frame -> True]强制在 PlotRange 剪切:
BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], PlotRange -> {{0, 2}, {0, 1}}, PlotRangeClipping -> True, Frame -> True]PlotRange->s 等价于 PlotRange->{{-s, s}, {-s, s}}:
BoundaryMeshRegion[{{-2, -2}, {2, -2}, {0, Sqrt[3]}}, Line[{1, 2, 3, 1}], Frame -> True, PlotRange -> 1]PlotRangeClipping (2)
允许图形对象分散在 PlotRange 之外:
BoundaryMeshRegion[{{-2, -2}, {2, -2}, {0, Sqrt[3]}}, Line[{1, 2, 3, 1}], Frame -> True, PlotRange -> 1, PlotRangeClipping -> False]在 PlotRange 剪切所有图形对象:
BoundaryMeshRegion[{{-2, -2}, {2, -2}, {0, Sqrt[3]}}, Line[{1, 2, 3, 1}], Frame -> True, PlotRange -> 1, PlotRangeClipping -> True]PlotRangePadding (3)
BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], PlotRangePadding -> 1, Frame -> True]使用 Scaled 坐标包括填充:
BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], PlotRangePadding -> Scaled[0.1], Frame -> True]BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], PlotRangePadding -> {{0.5, 1}, {0.3, 0.3}}, Frame -> True]PlotRegion (3)
BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], Frame -> True, FrameTicks -> False, Background -> LightBlue]BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], Frame -> True, FrameTicks -> False, PlotRegion -> {{0.25, 0.75}, {0.25, 0.75}}, Background -> LightBlue]ImagePadding 可被用于环绕图形添加填充:
BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], Frame -> True, FrameTicks -> False, ImagePadding -> 30, Background -> LightBlue]PlotTheme (9)
Base Themes (2)
BoundaryMeshRegion[{{1, -1, -3}, {1, -1, 1}, {1, 3, 1}, {-3, -1, 1}}, Polygon[{{1, 2, 3}, {1, 2, 4}, {2, 3, 4}, {1, 3, 4}}], PlotTheme -> "Detailed"]BoundaryMeshRegion[{{1, -1, -3}, {1, -1, 1}, {1, 3, 1}, {-3, -1, 1}}, Polygon[{{1, 2, 3}, {1, 2, 4}, {2, 3, 4}, {1, 3, 4}}], PlotTheme -> "Monochrome"]Feature Themes (7)
BoundaryMeshRegion[{{1, -1, -3}, {1, -1, 1}, {1, 3, 1}, {-3, -1, 1}}, Polygon[{{1, 2, 3}, {1, 2, 4}, {2, 3, 4}, {1, 3, 4}}], PlotTheme -> "Points"]BoundaryMeshRegion[{{1, -1, -3}, {1, -1, 1}, {1, 3, 1}, {-3, -1, 1}}, Polygon[{{1, 2, 3}, {1, 2, 4}, {2, 3, 4}, {1, 3, 4}}], PlotTheme -> "Lines"]BoundaryMeshRegion[{{1, -1, -3}, {1, -1, 1}, {1, 3, 1}, {-3, -1, 1}}, Polygon[{{1, 2, 3}, {1, 2, 4}, {2, 3, 4}, {1, 3, 4}}], PlotTheme -> "Polygons"]BoundaryMeshRegion[{{1, -1, -3}, {1, -1, 1}, {1, 3, 1}, {-3, -1, 1}}, Polygon[{{1, 2, 3}, {1, 2, 4}, {2, 3, 4}, {1, 3, 4}}], PlotTheme -> "SampledPoints"]BoundaryMeshRegion[{{1, -1, -3}, {1, -1, 1}, {1, 3, 1}, {-3, -1, 1}}, Polygon[{{1, 2, 3}, {1, 2, 4}, {2, 3, 4}, {1, 3, 4}}], PlotTheme -> "SphereAndTube"]BoundaryMeshRegion[{{1, -1, -3}, {1, -1, 1}, {1, 3, 1}, {-3, -1, 1}}, Polygon[{{1, 2, 3}, {1, 2, 4}, {2, 3, 4}, {1, 3, 4}}], PlotTheme -> "SmoothShading"]BoundaryMeshRegion[{{1, -1, -3}, {1, -1, 1}, {1, 3, 1}, {-3, -1, 1}}, Polygon[{{1, 2, 3}, {1, 2, 4}, {2, 3, 4}, {1, 3, 4}}], PlotTheme -> "FaceNormals"]Prolog (1)
bg = Graphics[Polygon[{{0, 0}, {1, 0}, {1, 1}, {0, 1}}, VertexColors -> {Orange, Orange, White, White}], AspectRatio -> Full];BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], Prolog -> Inset[bg, Scaled[{0, 0}], Scaled[{0, 0}]]]BoundaryMeshRegion[{{0, 0}, {3, 0}, {0, 3}}, Line[{1, 2, 3, 1}], Prolog -> Inset[bg, Scaled[{0, 0}], Scaled[{0, 0}]]]RotateLabel (2)
BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], Frame -> True, FrameLabel -> {None, "y axis"}, RotateLabel -> True]BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], Frame -> True, FrameLabel -> {None, "y axis"}, RotateLabel -> False]SphericalRegion (2)
Table[BoundaryMeshRegion[{{0, 0, 0}, {2, 0, 0}, {2, 2, 0}, {0, 2, 0}, {1, 1, 2}}, Polygon[{{1, 2, 5}, {1, 5, 4}, {2, 3, 5}, {3, 4, 5}, {1, 4, 3, 2}}], SphericalRegion -> True, ImageSize -> 80, ViewPoint -> 3.{ Sin[t], Cos[t], 1}], {t, 0, 4}]如果没有 SphericalRegion,各个图像将尽可能大:
Table[BoundaryMeshRegion[{{0, 0, 0}, {2, 0, 0}, {2, 2, 0}, {0, 2, 0}, {1, 1, 2}}, Polygon[{{1, 2, 5}, {1, 5, 4}, {2, 3, 5}, {3, 4, 5}, {1, 4, 3, 2}}], ImageSize -> 80, ViewPoint -> 3.{ Sin[t], Cos[t], 1}], {t, 0, 4}]Ticks (3)
BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], Axes -> True, Ticks -> None]BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], Axes -> True, Ticks -> Automatic]BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], Ticks -> {{1, 2, 3}, {1, 3}}, Axes -> True]TicksStyle (2)
BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], Axes -> True, TicksStyle -> Directive[Red, Bold]]BoundaryMeshRegion[{{0, 0}, {2, 0}, {1, Sqrt[3]}}, Line[{1, 2, 3, 1}], Axes -> True, TicksStyle -> {Directive[Red, Bold], Directive[Blue, 12]}]ViewAngle (1)
ViewCenter (1)
ViewMatrix (1)
BoundaryMeshRegion[{{0, 0, 0}, {2, 0, 0}, {2, 2, 0}, {0, 2, 0}, {1, 1, 2}}, Polygon[{{1, 2, 5}, {1, 5, 4}, {2, 3, 5}, {3, 4, 5}, {1, 4, 3, 2}}], ViewMatrix -> {TransformationMatrix[RescalingTransform[{{-1, 1}, {-1, 1}, {-1, 1}}]], {{1, 0, 0, 0}, {0, 1, 0, 0}, {0, 0, -1, 0}, {0, 0, 0, 1}}}]ViewPoint (3)
BoundaryMeshRegion[{{0, 0, 0}, {2, 0, 0}, {2, 2, 0}, {0, 2, 0}, {1, 1, 2}}, Polygon[{{1, 2, 5}, {1, 5, 4}, {2, 3, 5}, {3, 4, 5}, {1, 4, 3, 2}}], ViewPoint -> {Pi, Pi / 2, 2}]{BoundaryMeshRegion[{{0, 0, 0}, {2, 0, 0}, {2, 2, 0}, {0, 2, 0}, {1, 1, 2}}, Polygon[{{1, 2, 5}, {1, 5, 4}, {2, 3, 5}, {3, 4, 5}, {1, 4, 3, 2}}], ViewPoint -> Front],
BoundaryMeshRegion[{{0, 0, 0}, {2, 0, 0}, {2, 2, 0}, {0, 2, 0}, {1, 1, 2}}, Polygon[{{1, 2, 5}, {1, 5, 4}, {2, 3, 5}, {3, 4, 5}, {1, 4, 3, 2}}], ViewPoint -> Top]}{BoundaryMeshRegion[{{0, 0, 0}, {2, 0, 0}, {2, 2, 0}, {0, 2, 0}, {1, 1, 2}}, Polygon[{{1, 2, 5}, {1, 5, 4}, {2, 3, 5}, {3, 4, 5}, {1, 4, 3, 2}}], ViewPoint -> {0, -Infinity, 0}],
BoundaryMeshRegion[{{0, 0, 0}, {2, 0, 0}, {2, 2, 0}, {0, 2, 0}, {1, 1, 2}}, Polygon[{{1, 2, 5}, {1, 5, 4}, {2, 3, 5}, {3, 4, 5}, {1, 4, 3, 2}}], ViewPoint -> {0, 0, Infinity}]}ViewRange (2)
BoundaryMeshRegion[{{0, 0, 0}, {2, 0, 0}, {2, 2, 0}, {0, 2, 0}, {1, 1, 2}}, Polygon[{{1, 2, 5}, {1, 5, 4}, {2, 3, 5}, {3, 4, 5}, {1, 4, 3, 2}}], ViewPoint -> {1, 0, 1.5}, SphericalRegion -> True]BoundaryMeshRegion[{{0, 0, 0}, {2, 0, 0}, {2, 2, 0}, {0, 2, 0}, {1, 1, 2}}, Polygon[{{1, 2, 5}, {1, 5, 4}, {2, 3, 5}, {3, 4, 5}, {1, 4, 3, 2}}], ViewPoint -> {1, 0, 1.5}, ViewRange -> {3.5, 7.2}, SphericalRegion -> True]ViewVector (1)
ViewVertical (2)
BoundaryMeshRegion[{{0, 0, 0}, {2, 0, 0}, {2, 2, 0}, {0, 2, 0}, {1, 1, 2}}, Polygon[{{1, 2, 5}, {1, 5, 4}, {2, 3, 5}, {3, 4, 5}, {1, 4, 3, 2}}], ViewVertical -> {1, 0, 0}]Table[BoundaryMeshRegion[{{0, 0, 0}, {2, 0, 0}, {2, 2, 0}, {0, 2, 0}, {1, 1, 2}}, Polygon[{{1, 2, 5}, {1, 5, 4}, {2, 3, 5}, {3, 4, 5}, {1, 4, 3, 2}}], ViewVertical -> v], {v, {{1, 0, 1}, {.5, 0, 1}, {0, -.5, 1}, {0, -1, 1}}}]应用 (6)
多边形 (2)
不相交多边形也是 BoundaryMeshRegion:
RegularPolygonMesh[n_Integer] :=
BoundaryMeshRegion[Table[{Cos[k 2π / n], Sin[k 2π / n]}, {k, n}], Line[Append[Range[n], 1]]]Table[RegularPolygonMesh[n], {n, 3, 10}]Area /@ %Table[Area[RegularPolygonMesh[n]], {n, {10, 10 ^ 2, 10 ^ 3}}]构建有多个矩形孔的二维 BoundaryMeshRegion. 内部矩形的坐标为:
rectangleCoords[{i_, j_}] := rectangleCoords[{i, j}, {0.5, 0.5}];
rectangleCoords[{i_, j_}, {α_, β_}] := {{i - α / 2, j - β / 2}, {i + α / 2, j - β / 2}, {i + α / 2, j + β / 2}, {i - α / 2, j + β / 2}};rectangleIndexes[i_] := Line[i - 1 + {1, 2, 3, 4, 1}];RectangleHoleMesh[{m_, n_}] :=
Module[{oc, hc},
hc = Flatten[Table[rectangleCoords[{i, j}], {j, n}, {i, m}], 2];
oc = {{0, 0}, {m + 1, 0}, {m + 1, n + 1}, {0, n + 1}};
BoundaryMeshRegion[Join[hc, oc],
rectangleIndexes[4 m n + 1],
Sequence@@Table[rectangleIndexes[i], {i, 1, 4 m n, 4}]
]
]RectangleHoleMesh[{20, 10}]RegionMeasure[%]多面体 (4)
不相交多面体也是 BoundaryMeshRegion:
PolyhedronMesh[name_String] :=
BoundaryMeshRegion[PolyhedronData[name, "Vertices"], Polygon[PolyhedronData[name, "FaceIndices"]]]PolyhedronMesh /@ PolyhedronData["Archimedean"]ColoredPolyhedron[name_String] :=
Module[{faces},
faces = GatherBy[PolyhedronData[name, "FaceIndices"], Length[#]&];
BoundaryMeshRegion[PolyhedronData[name, "Vertices"], Table[Style[Polygon[faces[[i]]], ColorData[100, i]], {i, Length[faces]}]]
]Magnify[ColoredPolyhedron /@ PolyhedronData["Archimedean"], 0.5]通过使用多个内部长方体边界构建具有多个空隙的BoundaryMeshRegion. 内部长方体的坐标为:
cuboidCoords[{i_, j_, k_}] := cuboidCoords[{i, j, k}, {0.5, 0.5, 0.5}];
cuboidCoords[{i_, j_, k_}, {α_, β_, γ_}] :=
{{i - α / 2, j - β / 2, k - γ / 2}, {i - α / 2, j + β / 2, k - γ / 2}, {i + α / 2, j + β / 2, k - γ / 2}, {i + α / 2, j - β / 2, k - γ / 2}, {i - α / 2, j - β / 2, k + γ / 2}, {i - α / 2, j + β / 2, k + γ / 2}, {i + α / 2, j + β / 2, k + γ / 2}, {i + α / 2, j - β / 2, k + γ / 2}};cuboidIndexes[i_] := Polygon[(i - 1) + {{2, 3, 4, 1}, {1, 4, 8, 5}, {4, 3, 7, 8}, {3, 2, 6, 7}, {2, 1, 5, 6}, {5, 8, 7, 6}}]CuboidVoidMesh[{m_, n_, p_}] :=
Module[{oc, vc},
vc = Flatten[Table[cuboidCoords[{i, j, k}], {k, p}, {j, n}, {i, m}], 3];
oc = {{0, 0, 0}, {0, n + 1, 0}, {m + 1, n + 1, 0}, {m + 1, 0, 0}, {0, 0, p + 1}, {0, n + 1, p + 1}, {m + 1, n + 1, p + 1}, {m + 1, 0, p + 1}};
BoundaryMeshRegion[Join[vc, oc],
cuboidIndexes[8 m n p + 1],
Sequence@@Table[cuboidIndexes[i], {i, 1, 8 m n p, 8}]]
]HighlightMesh[CuboidVoidMesh[{5, 4, 3}], Style[2, Opacity[0.3]]]RegionMeasure[%]构建一个长方体边界网格,其中有矩形隧道穿过. 可以将其作为二维边界网格与区间的乘积来构建. 使用与上面构建具有孔的多面体相同的结构来构建该二维边界网格:
rectangleCoords[{i_, j_}] := rectangleCoords[{i, j}, {0.5, 0.5}];
rectangleCoords[{i_, j_}, {α_, β_}] := {{i - α / 2, j - β / 2}, {i + α / 2, j - β / 2}, {i + α / 2, j + β / 2}, {i - α / 2, j + β / 2}};rectangleIndexes[i_] := Line[i - 1 + {1, 2, 3, 4, 1}];RectangleHoleMesh[{m_, n_}] :=
Module[{oc, hc},
hc = Flatten[Table[rectangleCoords[{i, j}], {j, n}, {i, m}], 2];
oc = {{0, 0}, {m + 1, 0}, {m + 1, n + 1}, {0, n + 1}};
BoundaryMeshRegion[Join[hc, oc],
rectangleIndexes[4 m n + 1],
Sequence@@Table[rectangleIndexes[i], {i, 1, 4 m n, 4}]
]
]RectangleHoleMesh[{4, 3}]TunnelMesh[{m_, n_}] :=
BoundaryMesh[RegionProduct[TriangulateMesh[RectangleHoleMesh[{m, n}], MeshQualityGoal -> "Minimal"], MeshRegion[{{0}, {1}}, Line[{1, 2}]]]]TunnelMesh[{4, 3}]HighlightMesh[%, {Style[1, None], Style[2, Opacity[0.5]]}]NIntegrate[1, {x, y, z}∈%]属性和关系 (8)
BoundaryMeshRegion 可以表示全维区域:
ℛ = BoundaryMeshRegion[{{0, 0}, {1, 0}, {0, 1}}, Line[{1, 2, 3, 1}]]{RegionEmbeddingDimension[ℛ], RegionDimension[ℛ]}BoundaryMeshRegion 总是有界的:
ℛ = BoundaryMeshRegion[{{0, 0}, {1, 0}, {0, 1}}, Line[{1, 2, 3, 1}]]使用 BoundedRegionQ 来检验,用 RegionBounds 来得到实际边界:
{BoundedRegionQ[ℛ], RegionBounds[ℛ]}BoundaryMeshRegionQ 可用于检验区域是否为 BoundaryMeshRegion:
ℛ = BoundaryMeshRegion[{{0, 0}, {1, 0}, {0, 1}}, Line[{1, 2, 3, 1}]]BoundaryMeshRegionQ[ℛ]使用 ConvexHullMesh 从一个点集创建 BoundaryMeshRegion:
p2 = RandomReal[1, {100, 2}];
p3 = RandomReal[1, {100, 3}];ConvexHullMesh /@ {p2, p3}使用 BoundaryMesh 将 MeshRegion 转换为 BoundaryMeshRegion:
mr = MeshRegion[{{0, 0}, {1, 0}, {0, 1}, {1, 1}, {2, 0}}, {Triangle[{1, 2, 3}], Triangle[{4, 3, 2}], Line[{4, 5}]}]BoundaryMesh[mr]使用 BoundaryDiscretizeRegion 将任意区域转换为 BoundaryMeshRegion:
BoundaryDiscretizeRegion[ImplicitRegion[x ^ 2 + y ^ 2 ≤ 1 || y == 0, {x, y}]]要包括较低维数的组件,使用 DiscretizeRegion:
DiscretizeRegion[ImplicitRegion[x ^ 2 + y ^ 2 ≤ 1 || y == 0, {x, y}], {{-2, 2}, {-1, 1}}]使用 Show 将任意 BoundaryMeshRegion 转换为 Graphics:
ℛ = BoundaryMeshRegion[{{0, 0}, {1, 0}, {0, 1}}, Line[{1, 2, 3, 1}]]Show[ℛ]//InputFormBoundaryMeshRegion 通常比 MeshRegion 更节省内存:
pts = RandomReal[{-1, 1}, {50, 2}];{DelaunayMesh[pts], ConvexHullMesh[pts]}ByteCount /@ %相关的工作流程
- 裁切 3D 图像
文本
Wolfram Research (2014),BoundaryMeshRegion,Wolfram 语言函数,https://reference.wolfram.com/language/ref/BoundaryMeshRegion.html (更新于 2015 年).
CMS
Wolfram 语言. 2014. "BoundaryMeshRegion." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2015. https://reference.wolfram.com/language/ref/BoundaryMeshRegion.html.
APA
Wolfram 语言. (2014). BoundaryMeshRegion. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/BoundaryMeshRegion.html 年
BibTeX
@misc{reference.wolfram_2026_boundarymeshregion, author="Wolfram Research", title="{BoundaryMeshRegion}", year="2015", howpublished="\url{https://reference.wolfram.com/language/ref/BoundaryMeshRegion.html}", note=[Accessed: 10-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_boundarymeshregion, organization={Wolfram Research}, title={BoundaryMeshRegion}, year={2015}, url={https://reference.wolfram.com/language/ref/BoundaryMeshRegion.html}, note=[Accessed: 10-August-2026]}