領域 reg をBoundaryMeshRegionに離散化する.
BoundaryDiscretizeRegion[reg,{{xmin,xmax},…}]
境界
に制限する.
BoundaryDiscretizeRegion
領域 reg をBoundaryMeshRegionに離散化する.
BoundaryDiscretizeRegion[reg,{{xmin,xmax},…}]
境界
に制限する.
詳細とオプション
- BoundaryDiscretizeRegionは,境界評価としても知られている.
- BoundaryDiscretizeRegionは,事実上,領域 reg の完全な次元部分の境界を離散化する.
- 領域 reg は,ConstantRegionQでRegionEmbeddingDimensionが3以下のものなら何でもよい.
- BoundaryDiscretizeRegionには,BoundaryMeshRegionと同じオプションに次の追加・変更を加えたものが使える.
-
AccuracyGoal Automatic 求める確度の桁数 MaxCellMeasure Automatic 最大セル測度 Method Automatic 使用するメソッド PerformanceGoal $PerformanceGoal 速度と質のどちらを考慮するか PrecisionGoal Automatic 目標とする精度の桁数 - AccuracyGoal->a およびPrecisionGoal->p とすると,領域 reg あるいは離散化された領域 dreg とRegionSymmetricDifference[reg,dreg]内の任意の点の間の最大距離を
未満に保とうと試みられる.ただし,
は境界ボックスの対角線の長さである. - m>0であるMaxCellMeasure->m のとき,境界次元 d-1(d は領域次元)中のセル測度は m に制限される.特定の次元についての測度の極限はMaxCellMeasure->{…,di->mi,…}で指定することができる.
例題
すべて開く すべて閉じる例 (2)
BoundaryDiscretizeRegion[Disk[]]BoundaryDiscretizeRegion[Disk[], {{0, 1}, {0, 1}}]BoundaryDiscretizeRegion[Ball[]]BoundaryDiscretizeRegion[Ball[], {{0, 1}, {0, 1}, {0, 1}}]スコープ (24)
1D領域 (5)
LineおよびIntervalは,1Dにおける全次元の領域である:
BoundaryDiscretizeRegion[Interval[{1, 3}]]BoundaryDiscretizeRegion[Line[Transpose@{List /@ Range[1, 20, 2], List /@ Range[2, 20, 2]}]]ImplicitRegionは,変数が1つの場合は1Dである:
BoundaryDiscretizeRegion[ImplicitRegion[Abs[Sin[x]] ≤ 3 / 4, {{x, 0, 10}}]]ℛ = ImplicitRegion[Abs[Sin[x]] ≤ 3 / 4, {x}];BoundaryDiscretizeRegion[ℛ, {{0, 10}}]ParametricRegionは,1つの関数しか持たない場合は,1Dである:
BoundaryDiscretizeRegion[ParametricRegion[{t + 5}, {{t, 0, 10}}]]ℛ = ParametricRegion[{t + 5}, {{t, 0, ∞}}];
BoundedRegionQ[ℛ]BoundaryDiscretizeRegion[ℛ, {{0, 10}}]1DにおけるBooleanRegion:
BoundaryDiscretizeRegion[BooleanRegion[Xor, {Line[{{-2}, {1}}], Line[{{-1}, {2}}]}]]ℛ = ImplicitRegion[x == 0 || x ≥ 1, {{x, 0, 3}}];BoundaryDiscretizeRegion[ℛ]DiscretizeRegionを使って低次元成分も離散化する:
DiscretizeRegion[ℛ]2D領域 (8)
Rectangle,Disk,Simplexは,2Dで全次元になり得る特殊領域である:
BoundaryDiscretizeRegion[Rectangle[]]Disk:
BoundaryDiscretizeRegion[Disk[]]BoundaryDiscretizeRegion[Simplex[2]]ImplicitRegionは,変数が2つあれば,2Dである:
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は,関数が2つであれば,2Dである:
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}]]厳密な領域が2つ与えられると,ParametricRegionを使ってそのMinkowski和を表すことができる:
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]2Dにおける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[ℛ]3D領域 (5)
Cuboid,Ellipsoid,Simplexは,3Dで全次元であり得る特殊領域である:
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は,変数が厳密に3個であれば3Dである:
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は,厳密に3つの関数を持つときは3Dにある:
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 は,辺の長さが l の三角形の面積が a になるように計算される:
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]]3Dでは,表面積はMaxCellMeasureで制御される:
bmr = BoundaryDiscretizeRegion[Ellipsoid[{0, 0, 0}, {3, 2, 1}], MaxCellMeasure -> .1]Histogram[AnnotationValue[{bmr, 2}, MeshCellMeasure]]辺の長さは"Length"の最大測度を設定することで,制御することができる:
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}]面を透明にすることで3Dの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}]面を透過的にすることで,3Dの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"]3D領域についての"RegionPlot3D"メソッドは,RegionPlot3Dに基づいている:
BoundaryDiscretizeRegion[Ball[], Method -> "RegionPlot3D"]3D領域についての"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 Language. 2014. "BoundaryDiscretizeRegion." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2015. https://reference.wolfram.com/language/ref/BoundaryDiscretizeRegion.html.
APA
Wolfram Language. (2014). BoundaryDiscretizeRegion. Wolfram Language & System Documentation Center. Retrieved from 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-July-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-July-2026]}