将区域 reg 离散化为 BoundaryMeshRegion.
BoundaryDiscretizeRegion[reg,{{xmin,xmax},…}]
限制范围为
.
BoundaryDiscretizeRegion
将区域 reg 离散化为 BoundaryMeshRegion.
BoundaryDiscretizeRegion[reg,{{xmin,xmax},…}]
限制范围为
.
更多信息和选项
- BoundaryDiscretizeRegion 也被称作边界计算.
- BoundaryDiscretizeRegion 对区域 reg 全方位部分的边界进行有效地离散.
- 区域 reg 可以是任意满足 ConstantRegionQ 和小于或等于 3 的 RegionEmbeddingDimension.
- BoundaryDiscretizeRegion 具有与 BoundaryMeshRegion 相同的选项,并有以下增加和改变:
-
AccuracyGoal Automatic 所追求的准确度位数 MaxCellMeasure Automatic 最大单元度量 Method Automatic 所用方法 PerformanceGoal $PerformanceGoal 考虑速度还是质量 PrecisionGoal Automatic 所追求的精度位数 - 在设置 AccuracyGoal->a 和 PrecisionGoal->p 下,将尝试把区域 reg 或离散化区域 dreg 与 RegionSymmetricDifference[reg,dreg] 中任意点之间的距离保持在
以内,其中
为边界框对角线的长度. - 当 MaxCellMeasure->m 时,其中 m>0,边界维数为 d-1 的单元度量将被限定为 m,其中 d 是区域维数. 具体维数的度量极限可以通过 MaxCellMeasure->{…,di->mi,…} 指定.
范例
打开所有单元 关闭所有单元基本范例 (2)
BoundaryDiscretizeRegion[Disk[]]BoundaryDiscretizeRegion[Disk[], {{0, 1}, {0, 1}}]BoundaryDiscretizeRegion[Ball[]]BoundaryDiscretizeRegion[Ball[], {{0, 1}, {0, 1}, {0, 1}}]范围 (24)
一维区域 (5)
BoundaryDiscretizeRegion[Interval[{1, 3}]]BoundaryDiscretizeRegion[Line[Transpose@{List /@ Range[1, 20, 2], List /@ Range[2, 20, 2]}]]如果 ImplicitRegion 有一个变量,则它是一维的:
BoundaryDiscretizeRegion[ImplicitRegion[Abs[Sin[x]] ≤ 3 / 4, {{x, 0, 10}}]]ℛ = ImplicitRegion[Abs[Sin[x]] ≤ 3 / 4, {x}];BoundaryDiscretizeRegion[ℛ, {{0, 10}}]如果 ParametricRegion 仅有一个函数,则它是一维的:
BoundaryDiscretizeRegion[ParametricRegion[{t + 5}, {{t, 0, 10}}]]ℛ = ParametricRegion[{t + 5}, {{t, 0, ∞}}];
BoundedRegionQ[ℛ]BoundaryDiscretizeRegion[ℛ, {{0, 10}}]一维中的 BooleanRegion:
BoundaryDiscretizeRegion[BooleanRegion[Xor, {Line[{{-2}, {1}}], Line[{{-1}, {2}}]}]]ℛ = ImplicitRegion[x == 0 || x ≥ 1, {{x, 0, 3}}];BoundaryDiscretizeRegion[ℛ]也可以使用 DiscretizeRegion 离散化低维分量:
DiscretizeRegion[ℛ]二维区域 (8)
Rectangle、Disk 和 Simplex 是在二维中可以是全维的特殊区域:
BoundaryDiscretizeRegion[Rectangle[]]Disk:
BoundaryDiscretizeRegion[Disk[]]BoundaryDiscretizeRegion[Simplex[2]]如果 ImplicitRegion 有两个变量,则它是二维的:
BoundaryDiscretizeRegion[ImplicitRegion[x ^ 2 - y ^ 2 ≤ 1, {{x, -3, 3}, {y, -3, 3}}]]ℛ = ImplicitRegion[x ^ 2 - y ^ 2 ≤ 1, {x, y}];
BoundedRegionQ[ℛ]BoundaryDiscretizeRegion[ℛ, {{-3, 3}, {-3, 3}}]如果 ParametricRegion 有两个函数,则是二维的:
BoundaryDiscretizeRegion[ParametricRegion[{{t, s (1 - t ^ 2)}, -1 ≤ s ≤ 1 && -1 ≤ t ≤ 1}, {s, t}]]BoundaryDiscretizeRegion[ParametricRegion[{{t, s (1 - t ^ 2)}, -1 ≤ s ≤ 1 && -1 ≤ t ≤ 1}, {s, t}], {{-1, 1}, {-2 / 3, 2 / 3}}]BoundaryDiscretizeRegion[ParametricRegion[{{s, s t}, s ^ 2 + t ^ 2 ≤ 1}, {s, t}]]BoundaryDiscretizeRegion[ParametricRegion[{{s, s t}, Element[{s, t}, Rectangle[{-1, -1}, {1, 1}]]}, {s, t}]]已知两个精确区域,ParametricRegion 可以用来表示它们的的闵可夫斯基和:
r1 = Disk[{0, 0}, 1 / 2];
r2 = Polygon[{{0, 0}, {3, -1}, {1, 0}, {3, 1}}];
pr = ParametricRegion[{{x1 + x2, y1 + y2}, {x1, y1}∈r1 && {x2, y2}∈r2}, {x1, x2, y1, y2}];
BoundaryDiscretizeRegion[pr]二维中的 RegionUnion:
BoundaryDiscretizeRegion[RegionUnion[Disk[{0, 0}, 1], Disk[{1, 0}, 1]]]ℛ = ImplicitRegion[x ^ 2 + y ^ 2 ≤ 1 || x == y, {{x, -2, 2}, {y, -2, 2}}];
DiscretizeRegion[ℛ]BoundaryDiscretizeRegion[ℛ]具有 GeoGridPosition 的多边形:
ℛ = Polygon[GeoGridPosition[{{{-0.9950503945490105, 1.2366760550756015},
{-0.9952074890903578, 1.2369207053693891}, {-0.9952196732768064, 1.2369073327446167},
{-0.9953160063787643, 1.236848436956935}, {-0.9954141759436825, 1.2369993898475449},
{-0. ... 197645333103}, {-0.9949098578570917, 1.2368130881428654},
{-0.9948663952535768, 1.2367477711687371}, {-0.9948714472169538, 1.2367426500757825},
{-0.9949211061652593, 1.2367089232486177}, {-0.9949439717990124, 1.236746107097628}}}, "Bonne"]];BoundaryDiscretizeRegion[ℛ]三维区域 (5)
Cuboid、Ellipsoid 和 Simplex 是在三维中可以是全维的特殊区域:
BoundaryDiscretizeRegion[Cuboid[{0, 0, 0}, {1, 1, 1}]]BoundaryDiscretizeRegion[Ellipsoid[{0, 0, 0}, {{5, 2, 3}, {2, 3, 2}, {3, 2, 5}}]]BoundaryDiscretizeRegion[Simplex[3]]如果 ImplicitRegion 有精确的三个变量,则它是三维的:
BoundaryDiscretizeRegion[ImplicitRegion[(x ^ 2 + (9 / 4)y ^ 2 + z ^ 2 - 1) ^ 3 - x ^ 2z ^ 3 - (9 / 80)y ^ 2z ^ 3 ≤ 0, {x, y, z}]]ℛ = ImplicitRegion[x ^ 2 + y ^ 2 + z ^ 2 ≤ 1, {x, y, z}];
BoundaryDiscretizeRegion[ℛ, {{-3 / 4, 3 / 4}, {-3 / 4, 3 / 4}, {-3 / 4, 3 / 4}}]如果 ParametricRegion 恰好有三个函数,则是三维的:
BoundaryDiscretizeRegion[ParametricRegion[{x, y, z + x * y}, {{x, -1, 1}, {y, -1, 1}, {z, -1, 1}}]]BoundaryDiscretizeRegion[ParametricRegion[{{x, y, z + y * x}, x ^ 2 + y ^ 2 + z ^ 2 <= 1}, {x, y, z}]]ℛ = ImplicitRegion[x ^ 2 + y ^ 2 + z ^ 2 ≤ 1 || x + y + z == 0, {{x, -2, 2}, {y, -2, 2}, {z, -2, 2}}];
DiscretizeRegion[ℛ]BoundaryDiscretizeRegion[ℛ]
详细信息 (2)
使用 MaxCellMeasure 可以控制离散化中的单元测量:
Ω = ImplicitRegion[Abs[x] + Abs[y] ≥ 1, {{x, -2, 2}, {y, -2, 2}}];HighlightMesh[BoundaryDiscretizeRegion[Ω, MaxCellMeasure -> #], 0]& /@ {Automatic, 5, 1, 1 / 5}HighlightMesh[BoundaryDiscretizeRegion[Ω, MaxCellMeasure -> .5], 0]由于面积为 a,长度 l 可以通过面积为 a、边长为 l 的三角形计算得到:
HighlightMesh[bmr = BoundaryDiscretizeRegion[Ω, MaxCellMeasure -> {"Area" -> .1}], 0]使用相同规范的 TriangulateMesh 将使质量保持在边缘附近:
TriangulateMesh[bmr, MaxCellMeasure -> {"Area" -> .1}]Ω = Disk[{1, 2}, {3, 4}, {5, 6}];
HighlightMesh[BoundaryDiscretizeRegion[Ω], 0]任何线段的长度可以通过 MaxCellMeasure 控制:
HighlightMesh[BoundaryDiscretizeRegion[Ω, MaxCellMeasure -> {"Length" -> #}], 0]& /@ {5, 1, 1 / 5}默认 PrecisionGoal 所选的值使得曲线视觉上显得平滑:
HighlightMesh[BoundaryDiscretizeRegion[Ω, PrecisionGoal -> #], 0]& /@ {Automatic, 1, 4}MaxCellMeasure->∞ 可用于将边界度量基于精度:
HighlightMesh[BoundaryDiscretizeRegion[Ω, MaxCellMeasure -> ∞, PrecisionGoal -> #], 0]& /@ {Automatic, 1, 2, 3, 4}PrecisionGoal->None 可用于将边界度量基于 MaxCellMeasure:
HighlightMesh[BoundaryDiscretizeRegion[Ω, MaxCellMeasure -> {"Length" -> #}, PrecisionGoal -> None], 0]& /@ {5, 1, 1 / 5}AccuracyGoal->a 可用于指定绝对绝对公差
:
HighlightMesh[BoundaryDiscretizeRegion[Ω, MaxCellMeasure -> ∞, PrecisionGoal -> None, AccuracyGoal -> #], 0]& /@ {0, 1, 2, 3}默认情况下,MaxCellMeasure 应用边界维度:
HighlightMesh[BoundaryDiscretizeRegion[Ω, MaxCellMeasure -> #], 0]& /@ {10, 1, 1 / 10}HighlightMesh[BoundaryDiscretizeRegion[Ω, MaxCellMeasure -> #, AccuracyGoal -> 4], 0]& /@ {10, 1, 1 / 10}质量 (4)
离散化中的单元度量可以使用 MaxCellMeasure 控制:
BoundaryDiscretizeRegion[Disk[], MaxCellMeasure -> #]& /@ {1, 0.1, 0.01}Max[AnnotationValue[{#, 1}, MeshCellMeasure]]& /@ %使用 AccuracyGoal 来确保离散后的边界接近确切边界:
{ℛ1, ℛ2} = BoundaryDiscretizeRegion[Disk[], AccuracyGoal -> #]& /@ {2, 5}具有较高 AccuracyGoal 的离散化距离真实边界较近:
1 - Max[Norm[#]& /@ AnnotationValue[{#, {1}}, MeshCellCentroid]]& /@ {ℛ1, ℛ2}使用 PrecisionGoal 来确保离散后的边界接近确切边界:
{ℛ1, ℛ2} = BoundaryDiscretizeRegion[Disk[], PrecisionGoal -> #]& /@ {2, 5}具有较高 PrecisionGoal 的离散化距离真实边界较近:
1 - Max[Norm[#]& /@ AnnotationValue[{#, {1}}, MeshCellCentroid]]& /@ {ℛ1, ℛ2}设定 PerformanceGoal 为 "Quality" 以得到高质量的离散化:
ℛ = ImplicitRegion[-1 + 2 x^2 ≤ y ≤ x^2, {{x, -1, 1}, {y, -1, 1}}];BoundaryDiscretizeRegion[ℛ, PerformanceGoal -> "Quality"]或者设定为 "Speed" 使离散化速度更快,但质量可能会降低:
BoundaryDiscretizeRegion[ℛ, PerformanceGoal -> "Speed"]选项 (24)
AccuracyGoal (1)
bmr = BoundaryDiscretizeRegion[Disk[], AccuracyGoal -> 2]ListPlot[err = Map[{ArcTan@@#, Norm[#] - 1}&, AnnotationValue[{bmr, 1}, MeshCellCentroid]]]bmr = BoundaryDiscretizeRegion[Disk[], AccuracyGoal -> 3];
ListPlot[err = Map[{ArcTan@@#, Norm[#] - 1}&, AnnotationValue[{bmr, 1}, MeshCellCentroid]]]MaxCellMeasure (2)
在 MaxCellMeasure->m 时,边界单元尺寸小于或等于
:
bmr = BoundaryDiscretizeRegion[Disk[{0, 0}, {2, 1}], MaxCellMeasure -> .1]Histogram[AnnotationValue[{bmr, 1}, MeshCellMeasure]]在三维空间中,各面的面积由 MaxCellMeasure 控制:
bmr = BoundaryDiscretizeRegion[Ellipsoid[{0, 0, 0}, {3, 2, 1}], MaxCellMeasure -> .1]Histogram[AnnotationValue[{bmr, 2}, MeshCellMeasure]]bmr = BoundaryDiscretizeRegion[Ellipsoid[{0, 0, 0}, {3, 2, 1}], MaxCellMeasure -> {"Length" -> 0.3}]Histogram[AnnotationValue[{bmr, 1}, MeshCellMeasure]]MeshCellHighlight (3)
MeshCellHighlight 允许指定部分 BoundaryMeshRegion 的突出显示:
BoundaryDiscretizeRegion[Disk[], MeshCellHighlight -> {{1, All} -> Red, {0, All} -> Black}]通过使表面透明,可以看见三维 BoundaryMeshRegion 的内部结构:
BoundaryDiscretizeRegion[Cuboid[{0, 0, 0}, {1, 1, 1}], MeshCellHighlight -> {{2, All} -> Opacity[0.5, Orange]}]BoundaryDiscretizeRegion[Simplex[2], MaxCellMeasure -> 1, MeshCellHighlight -> {{1, 1} -> {Thick, Red}, {1, 2} -> {Dashed, Black}}]BoundaryDiscretizeRegion[Simplex[2], MaxCellMeasure -> 1, MeshCellHighlight -> {Line[{1, 2}] -> {Thick, Red}, Line[{2, 4}] -> {Dashed, Black}}]MeshCellLabel (3)
MeshCellLabel 可用于标记部分 BoundaryMeshRegion:
BoundaryDiscretizeRegion[Interval[{1, 3}], MeshCellLabel -> {0 -> "Index"}]BoundaryDiscretizeRegion[Rectangle[], MaxCellMeasure -> 1, MeshCellLabel -> {0 -> "Index", 1 -> "Index"}]BoundaryDiscretizeRegion[Interval[{1, 3}], MeshCellLabel -> {{0, 1} -> "x", {0, 2} -> "y"}]BoundaryDiscretizeRegion[Interval[{1, 3}], MeshCellLabel -> {Point[1] -> "x", Point[2] -> "y"}]MeshCellMarker (1)
MeshCellMarker 可用于给部分 BoundaryMeshRegion 赋值:
BoundaryDiscretizeRegion[Rectangle[], MeshCellMarker -> {{0, 1} -> 1, {0, 2} -> 2}]使用 MeshCellLabel 显示标记:
BoundaryDiscretizeRegion[Rectangle[], MeshCellMarker -> {{0, 1} -> 1, {0, 2} -> 2}, MeshCellLabel -> {0 -> "Marker"}]MeshCellShapeFunction (2)
MeshCellShapeFunction 允许指定部分 BoundaryMeshRegion 的函数:
BoundaryDiscretizeRegion[Rectangle[], MaxCellMeasure -> 1, MeshCellShapeFunction -> {0 -> (Disk[#, .1]&)}]BoundaryDiscretizeRegion[Rectangle[], MaxCellMeasure -> 1, MeshCellShapeFunction -> {{0, 1} -> (Disk[#, .1]&), {0, 2} -> (Disk[#, {.1, .2}]&)}]BoundaryDiscretizeRegion[Rectangle[], MaxCellMeasure -> 1, MeshCellShapeFunction -> {Point[1] -> (Disk[#, .1]&), Point[2] -> (Disk[#, {.1, .2}]&)}]MeshCellStyle (3)
MeshCellStyle 允许指定部分 BoundaryMeshRegion 的样式:
BoundaryDiscretizeRegion[Disk[], MeshCellStyle -> {{1, All} -> Red, {0, All} -> Black}]通过使表面透明,可以看见三维 BoundaryMeshRegion 的内部结构:
BoundaryDiscretizeRegion[Cuboid[{0, 0, 0}, {1, 1, 1}], MeshCellStyle -> {{2, All} -> Opacity[0.5, Orange]}]BoundaryDiscretizeRegion[Simplex[2], MaxCellMeasure -> 1, MeshCellStyle -> {{1, 1} -> Directive[Thick, Red], {1, 2} -> Directive[Dashed, Black]}]BoundaryDiscretizeRegion[Simplex[2], MaxCellMeasure -> 1, MeshCellStyle -> {Line[{1, 2}] -> Directive[Thick, Red], Line[{2, 4}] -> Directive[Dashed, Black]}]Method (6)
方法 "Continuation" 使用曲线延拓方法,在许多情况下可以处理角、尖和急剧变化的情况:
ℛ = ImplicitRegion[-1 + 2 x^2 ≤ y ≤ x^2, {{x, -1, 1}, {y, -1, 1}}];BoundaryDiscretizeRegion[ℛ, Method -> "Continuation"]方法 "RegionPlot" 基于改善 RegionPlot 的输出,有些时候使得速度较快:
ℛ = ImplicitRegion[-1 + 2 x^2 ≤ y ≤ x^2, {{x, -1, 1}, {y, -1, 1}}];BoundaryDiscretizeRegion[ℛ, Method -> "RegionPlot"]BoundaryDiscretizeRegion[RegionUnion[Disk[{0, 0}, 1], Disk[{1, 0}, 1]], Method -> "Boolean"]方法 "DiscretizeGraphics" 对于图形基元是最优化的:
BoundaryDiscretizeRegion[Disk[], Method -> "DiscretizeGraphics"]用于三维区域的方法 "RegionPlot3D" 基于 RegionPlot3D:
BoundaryDiscretizeRegion[Ball[], Method -> "RegionPlot3D"]用于三维区域的方法 "ContourPlot3D" 基于 ContourPlot3D:
BoundaryDiscretizeRegion[Ball[], Method -> "ContourPlot3D"]PlotTheme (2)
PrecisionGoal (1)
bmr = BoundaryDiscretizeRegion[Disk[], PrecisionGoal -> 2]ListPlot[err = Map[{ArcTan@@#, Norm[#] - 1}&, AnnotationValue[{bmr, 1}, MeshCellCentroid]]]bmr = BoundaryDiscretizeRegion[Disk[], AccuracyGoal -> 3];
ListPlot[err = Map[{ArcTan@@#, Norm[#] - 1}&, AnnotationValue[{bmr, 1}, MeshCellCentroid]]]应用 (2)
可视化 LaminaData:
f = LaminaData["Salinon", "Region"]BoundaryDiscretizeRegion[f[1, .5]]可视化 SolidData:
f = SolidData["CylindricalHalfShell", "Region"]BoundaryDiscretizeRegion[f[1, .5, 2]]属性和关系 (5)
BoundaryDiscretizeRegion 的输出是 BoundaryMeshRegion:
ℛ = BoundaryDiscretizeRegion[Disk[]]BoundaryMeshRegionQ[ℛ]已知边界离散,TriangulateMesh 能够离散内部:
{ℛ = BoundaryDiscretizeRegion[Disk[]], TriangulateMesh[ℛ]}ℛ = RegionUnion[Disk[], Line[{{-1, -1}, {1, 1}}]];BoundaryDiscretizeRegion[ℛ]较低维的分量丢失,但可以通过 DiscretizeRegion 表示:
DiscretizeRegion[ℛ]BoundaryDiscretizeRegion 可以离散有孔的区域:
BoundaryDiscretizeRegion[ImplicitRegion[1 ≤ x^2 + y^2 ≤ 4, {x, y}]]BoundaryDiscretizeRegion 可对具有不相交部分的区域进行离散化:
BoundaryDiscretizeRegion[ImplicitRegion[Sin[x y] ≤ 0.2, {x, y}], {{0, 5}, {0, 5}}]文本
Wolfram Research (2014),BoundaryDiscretizeRegion,Wolfram 语言函数,https://reference.wolfram.com/language/ref/BoundaryDiscretizeRegion.html (更新于 2015 年).
CMS
Wolfram 语言. 2014. "BoundaryDiscretizeRegion." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2015. https://reference.wolfram.com/language/ref/BoundaryDiscretizeRegion.html.
APA
Wolfram 语言. (2014). BoundaryDiscretizeRegion. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/BoundaryDiscretizeRegion.html 年
BibTeX
@misc{reference.wolfram_2026_boundarydiscretizeregion, author="Wolfram Research", title="{BoundaryDiscretizeRegion}", year="2015", howpublished="\url{https://reference.wolfram.com/language/ref/BoundaryDiscretizeRegion.html}", note=[Accessed: 07-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_boundarydiscretizeregion, organization={Wolfram Research}, title={BoundaryDiscretizeRegion}, year={2015}, url={https://reference.wolfram.com/language/ref/BoundaryDiscretizeRegion.html}, note=[Accessed: 07-August-2026]}