BoundingRegion[{pt1,pt2,…}]
点 pt1, pt2, …についての,軸に平行な最小の境界ボックスを与える.
BoundingRegion[{pt1,pt2,…},form]
タイプ form の境界領域を与える.
BoundingRegion[reg,form]
領域 reg の境界領域を与える.
BoundingRegion
BoundingRegion[{pt1,pt2,…}]
点 pt1, pt2, …についての,軸に平行な最小の境界ボックスを与える.
BoundingRegion[{pt1,pt2,…},form]
タイプ form の境界領域を与える.
BoundingRegion[reg,form]
領域 reg の境界領域を与える.
詳細とオプション
- BoundingRegionは,囲い込み領域あるいは外接領域としても知られている.
- 点集合
についての境界領域
は
となる領域である. - 最適化された境界領域は,方向が定められた最小面積の長方形のように,境界領域についての特性が最小化されることが多い.計算には時間がかかることが多い.
- 高速境界領域は,大抵の場合,多数の点に対して即座に境界領域を与えるが,方向が定められた最小面積の長方形のように最適化された境界領域ではないことがある.
- 1Dで指定可能な form
-

"MinInterval" 最短区間 - 2Dで指定可能な form
-

"MinRectangle" 面積が最小の軸に平行な長方形 
"MinOrientedRectangle" 面積が最小の方向が定められた長方形 
"MinConvexPolygon" 面積が最小の凸多角形 
"MinDisk" 面積が最小の円板 
"MinEllipse" 面積が最小の楕円 
"FastOrientedRectangle" 方向が定められた高速境界長方形 
"FastDisk" 高速境界円板 
"FastEllipse" 高速境界楕円 
"FastStadium" 高速境界スタジアム - 3Dで指定可能な form
-

"MinCuboid" 体積が最小の軸に平行な直方体 
"MinOrientedCuboid" 体積が最小の方向が定められた直方体 
"MinConvexPolyhedron" 体積が最小の凸多面体 
"MinBall" 体積が最小の球体 
"MinEllipsoid" 体積が最小の楕体 
"FastOrientedCuboid" 方向が定められた高速直方体 
"FastBall" 高速球体 
"FastEllipsoid" 高速楕円体 
"FastCylinder" 高速円柱 
"FastCapsule" 高速カプセル - n Dで指定可能な form
-

"MinCuboid" 最小測度の軸に平行な直方体 
"MinBall" 最小測度の球体 
"MinEllipsoid" 最小測度の楕円体 
"FastOrientedCuboid" 方向が定められた高速直方体 
"FastBall" 高速球体 
"FastEllipsoid" 高速楕円体 - BoundingRegion[reg]はBoundingRegion[reg,"MinCuboid"]に等しい,
- 使用可能なオプション
-
PerformanceGoal $PerformanceGoal 最適化するパフォーマンスの局面 WorkingPrecision MachinePrecision 計算精度
例題
すべて開く すべて閉じる例 (4)
点集合を含む最小面積のDisk:
pts = {{3, 10}, {6, 3}, {10, 2}, {2, 8}, {3, 3}};BoundingRegion[pts, "MinDisk"]Region[%, Epilog -> {Black, Point[pts]}]点集合を含む最小面積のRectangle:
pts = {{3, 10}, {6, 3}, {10, 2}, {2, 8}, {3, 3}};BoundingRegion[pts, "MinRectangle"]Region[%, Epilog -> {Black, Point[pts]}]BoundingRegion[pts, "MinOrientedRectangle"]Region[%, Epilog -> {Black, Point[pts]}]点集合を含む最小体積のBall:
pts = {{7, 6, 2}, {7, 7, 2}, {9, 7, 6}, {2, 9, 3}, {5, 4, 5}};BoundingRegion[pts, "MinBall"]Graphics3D[{{Opacity[0.5], %}, Point[pts]}, ImageSize -> Tiny]点集合を含む最小体積のCuboid:
pts = {{7, 6, 2}, {7, 7, 2}, {9, 7, 6}, {2, 9, 3}, {5, 4, 5}};BoundingRegion[pts, "MinCuboid"]Graphics3D[{{Opacity[0.5], %}, Point[pts]}, ImageSize -> Tiny]BoundingRegion[pts, "MinOrientedCuboid"]Graphics3D[{{Opacity[0.5], %}, Point[pts]}, ImageSize -> Tiny]スコープ (28)
1D (3)
"MinInterval"は1Dの点集合のためのものである:
pts = {{1}, {2}, {4}};BoundingRegion[pts, "MinInterval"]NumberLinePlot[{pts, BoundingRegion[pts, "MinInterval"]}]pts = RandomReal[{0, 1}, {10 ^ 6, 1}];BoundingRegion[pts, "MinInterval"]//AbsoluteTimingmr = MeshRegion[{{1}, {2}, {3}, {4}}, Line[{{1, 2}, {3, 4}}], MeshCellStyle -> {Red, Thick}];BoundingRegion[mr, "MinInterval"]Show[NumberLinePlot[{%}], mr]2D (9)
"MinRectangle"は,軸と平行な最小面積のRectangleを与える:
pts = {{3, 10}, {6, 3}, {10, 2}, {2, 8}, {3, 3}};BoundingRegion[pts, "MinRectangle"]Graphics[{{StandardBlue, %}, Point[pts]}, ImageSize -> Tiny]pts = RandomPoint[Disk[], 10 ^ 6];BoundingRegion[pts, "MinRectangle"]//AbsoluteTiming"MinOrientedRectangle"は,軸と平行とは限らないが最小面積の長方形を与える:
pts = {{3, 10}, {6, 3}, {10, 2}, {2, 8}, {3, 3}};BoundingRegion[pts, "MinOrientedRectangle"]Graphics[{{StandardBlue, %}, Point[pts]}, ImageSize -> Tiny]pts = RandomPoint[Disk[], 10 ^ 6];BoundingRegion[pts, "MinOrientedRectangle"]//AbsoluteTiming"MinConvexPolygon"は点を含む最小面積の多角形を与える:
pts = {{3, 10}, {6, 3}, {10, 2}, {2, 8}, {3, 3}};BoundingRegion[pts, "MinConvexPolygon"]Graphics[{{StandardBlue, %}, Point[pts]}, ImageSize -> Tiny]pts = RandomPoint[Disk[], 10 ^ 4];BoundingRegion[pts, "MinConvexPolygon"]"MinDisk"は点を含む最小面積のDiskを与える:
pts = {{3, 10}, {6, 3}, {10, 2}, {2, 8}, {3, 3}};BoundingRegion[pts, "MinDisk"]Graphics[{{StandardBlue, %}, Point[pts]}, ImageSize -> Tiny]pts = RandomPoint[Disk[], 10 ^ 6];BoundingRegion[pts, "MinDisk"]//AbsoluteTiming"FastOrientedRectangle"は方向付けがされた境界長方形を与える.面積が可能な限り最小とは限らない:
pts = {{3, 10}, {6, 3}, {10, 2}, {2, 8}, {3, 3}};BoundingRegion[pts, "FastOrientedRectangle"]Graphics[{{StandardBlue, %}, Point[pts]}, ImageSize -> Tiny]pts = RandomPoint[Disk[], 10 ^ 6];BoundingRegion[pts, "FastOrientedRectangle"]//AbsoluteTiming"FastDisk"は境界Diskを与える.面積が可能な限り最小とは限らない:
pts = {{3, 10}, {6, 3}, {10, 2}, {2, 8}, {3, 3}};BoundingRegion[pts, "FastDisk"]Graphics[{{StandardBlue, %}, Point[pts]}, ImageSize -> Tiny]pts = RandomPoint[Disk[], 10 ^ 6];BoundingRegion[pts, "FastDisk"]//AbsoluteTiming"FastEllipse"は境界Ellipsoidを与える.面積が可能な限り最小とは限らない:
pts = {{3, 10}, {6, 3}, {10, 2}, {2, 8}, {3, 3}};BoundingRegion[pts, "FastEllipse"]Graphics[{{StandardBlue, %}, Point[pts]}, ImageSize -> Tiny]pts = RandomPoint[Disk[], 10 ^ 6];BoundingRegion[pts, "FastEllipse"]//AbsoluteTiming"FastStadium"は境界StadiumShapeを与える.面積が可能な限り最小とは限らない:
pts = {{3, 10}, {6, 3}, {10, 2}, {2, 8}, {3, 3}};BoundingRegion[pts, "FastStadium"]Graphics[{{StandardBlue, %}, Point[pts]}, ImageSize -> Tiny]pts = RandomPoint[Disk[], 10 ^ 6];BoundingRegion[pts, "FastStadium"]//AbsoluteTimingmr = MeshRegion[Table[{2Sin[2kPi / 5], Cos[2kPi / 5]}, {k, 5}], Polygon[{1, 3, 5, 2, 4}]];shapes = {"MinRectangle", "MinDisk", "FastEllipse", "FastStadium"};regs = Table[BoundingRegion[mr, s], {s, shapes}];Table[Show[Graphics[{Opacity[0.5], Green, r}], mr], {r, regs}]3D (11)
"MinCuboid"は最小体積の軸と平行なCuboidを与える:
pts = {{4, 8, 7}, {4, 4, 6}, {0, 10, 6}, {1, 7, 0}, {2, 5, 1}, {3, 7, 3}};BoundingRegion[pts, "MinCuboid"]Graphics3D[{{Opacity[.5], %}, {Red, Point@pts}}]pts = RandomPoint[Ball[], 10 ^ 6];BoundingRegion[pts, "MinCuboid"]//AbsoluteTiming"MinOrientedCuboid"は,軸と平行とは限らないが最小体積の直方体を与える:
pts = {{4, 8, 7}, {4, 4, 6}, {0, 10, 6}, {1, 7, 0}, {2, 5, 1}, {3, 7, 3}};BoundingRegion[pts, "MinOrientedCuboid"]Graphics3D[{{Opacity[.5], %}, {Red, Point@pts}}]pts = RandomPoint[Ball[], 10 ^ 4];BoundingRegion[pts, "MinOrientedCuboid"]//AbsoluteTiming"MinConvexPolyhedron"は,点を含む最小体積の多面体を与える:
pts = {{4, 8, 7}, {4, 4, 6}, {0, 10, 6}, {1, 7, 0}, {2, 5, 1}, {3, 7, 3}};BoundingRegion[pts, "MinConvexPolyhedron"];Graphics3D[{{Opacity[.5], %}, {Red, Point@pts}}]pts = RandomPoint[Ball[], 10 ^ 4];BoundingRegion[pts, "MinConvexPolyhedron"]//AbsoluteTiming"MinBall"は点を含む最小体積のBallを与える:
pts = {{4, 8, 7}, {4, 4, 6}, {0, 10, 6}, {1, 7, 0}, {2, 5, 1}, {3, 7, 3}};BoundingRegion[pts, "MinBall"]Graphics3D[{{Opacity[.5], %}, {Red, Point@pts}}]pts = RandomPoint[Ball[], 10 ^ 6];BoundingRegion[pts, "MinBall"]//AbsoluteTiming"FastOrientedCuboid"は方向付けがされた境界直方体を与える.体積が最小とは限らない:
pts = {{4, 8, 7}, {4, 4, 6}, {0, 10, 6}, {1, 7, 0}, {2, 5, 1}, {3, 7, 3}};BoundingRegion[pts, "FastOrientedCuboid"]Graphics3D[{{Opacity[.5], %}, {Red, Point@pts}}]pts = RandomPoint[Ball[], 10 ^ 6];BoundingRegion[pts, "FastOrientedCuboid"]//AbsoluteTiming"FastBall"は境界Ballを与える.その体積は可能な限り最小とは限らない:
pts = {{4, 8, 7}, {4, 4, 6}, {0, 10, 6}, {1, 7, 0}, {2, 5, 1}, {3, 7, 3}};BoundingRegion[pts, "FastBall"]Graphics3D[{{Opacity[.5], %}, {Red, Point@pts}}]pts = RandomPoint[Ball[], 10 ^ 6];BoundingRegion[pts, "FastBall"]//AbsoluteTiming"FastEllipsoid"は境界Ellipsoidを与える.体積が最小とは限らない:
pts = {{4, 8, 7}, {4, 4, 6}, {0, 10, 6}, {1, 7, 0}, {2, 5, 1}, {3, 7, 3}};BoundingRegion[pts, "FastEllipsoid"]Graphics3D[{{Opacity[.5], %}, {Red, Point@pts}}]pts = RandomPoint[Ball[], 10 ^ 6];BoundingRegion[pts, "FastEllipsoid"]//AbsoluteTiming"FastCylinder"は境界Cylinderを与える.体積が最小とは限らない:
pts = {{4, 8, 7}, {4, 4, 6}, {0, 10, 6}, {1, 7, 0}, {2, 5, 1}, {3, 7, 3}};BoundingRegion[pts, "FastCylinder"]Graphics3D[{{Opacity[.5], %}, {Red, Point@pts}}]pts = RandomPoint[Ball[], 10 ^ 6];BoundingRegion[pts, "FastCylinder"]//AbsoluteTiming"FastCapsule"は境界CapsuleShapeを与える.体積が最小とは限らない:
pts = {{4, 8, 7}, {4, 4, 6}, {0, 10, 6}, {1, 7, 0}, {2, 5, 1}, {3, 7, 3}};BoundingRegion[pts, "FastCapsule"]Graphics3D[{{Opacity[.5], %}, {Red, Point@pts}}]pts = RandomPoint[Ball[], 10 ^ 6];BoundingRegion[pts, "FastCapsule"]//AbsoluteTimingpts = {{4, 8, 7}, {4, 4, 6}, {0, 10, 6}, {1, 7, 0}, {2, 5, 1}, {3, 7, 3}};bregs = BoundingRegion[pts, #]& /@ {"MinCuboid", "MinOrientedCuboid", "MinBall", "FastOrientedCuboid", "FastBall", "FastEllipsoid", "FastCylinder", "FastCapsule"};Volume /@ bregsmr = MeshRegion[Table[{2Sin[2kPi / 5], Cos[2kPi / 5], Sin[Pi / 4 + 2k Pi / 5]}, {k, 5}], Polygon[{1, 3, 5, 2, 4}]];shapes = {"MinCuboid", "MinBall", "FastCylinder", "FastCapsule"};regs = Table[BoundingRegion[mr, s], {s, shapes}];Table[Show[Graphics3D[{Opacity[0.3], r}], mr], {r, regs}]
D (5)
"MinCuboid"は軸と平行な測度値が最小のCuboidを与える:
pts = {{7, 6, 2, 3}, {7, 7, 2, 1}, {9, 7, 6, 4}, {2, 9, 3, 7}, {5, 4, 5, 4}};BoundingRegion[pts, "MinCuboid"]pts = RandomReal[10, {10 ^ 6, 5}];BoundingRegion[pts, "MinCuboid"]//AbsoluteTimingpts = RandomReal[10, {10 ^ 3, 10 ^ 4}];BoundingRegion[pts, "MinCuboid"]//Short//AbsoluteTiming"MinBall"は,点を含む測度値が最小のBallを与える:
pts = {{7, 6, 2, 3}, {7, 7, 2, 1}, {9, 7, 6, 4}, {2, 9, 3, 7}, {5, 4, 5, 4}};BoundingRegion[pts, "MinBall"]pts = RandomReal[10, {10 ^ 6, 5}];BoundingRegion[pts, "MinBall"]//AbsoluteTimingpts = RandomReal[10, {10 ^ 3, 10 ^ 3}];BoundingRegion[pts, "MinBall"]//Short//AbsoluteTimingpts = RandomInteger[10, {10 ^ 3, 10}];BoundingRegion[pts, "MinBall", WorkingPrecision -> Infinity]//AbsoluteTiming"FastOrientedCuboid"は,方向が定められた最小とは限らない境界直方体を与える:
pts = {{7, 6, 2, 3}, {7, 7, 2, 1}, {9, 7, 6, 4}, {2, 9, 3, 7}, {5, 4, 5, 4}};BoundingRegion[pts, "FastOrientedCuboid"]pts = RandomReal[10, {10 ^ 6, 5}];BoundingRegion[pts, "FastOrientedCuboid"]//AbsoluteTimingpts = RandomReal[10, {10 ^ 3, 100}];BoundingRegion[pts, "FastOrientedCuboid"]//Short//AbsoluteTiming"FastBall"は境界Ballを与える.測度値が最小とは限らない:
pts = {{7, 6, 2, 3}, {7, 7, 2, 1}, {9, 7, 6, 4}, {2, 9, 3, 7}, {5, 4, 5, 4}};BoundingRegion[pts, "FastBall"]pts = RandomReal[10, {10 ^ 6, 5}];BoundingRegion[pts, "FastBall"]//AbsoluteTimingpts = RandomReal[10, {10 ^ 3, 10 ^ 4}];BoundingRegion[pts, "FastBall"]//Short//AbsoluteTiming"FastEllipsoid"は境界Ellipsoidを与える.測度値が最小とは限らない:
pts = {{7, 6, 2, 3}, {7, 7, 2, 1}, {9, 7, 6, 4}, {2, 9, 3, 7}, {5, 4, 5, 4}};BoundingRegion[pts, "FastEllipsoid"]pts = RandomReal[10, {10 ^ 6, 5}];BoundingRegion[pts, "FastEllipsoid"]//AbsoluteTimingpts = RandomReal[10, {10 ^ 3, 100}];BoundingRegion[pts, "FastEllipsoid"]//Short//AbsoluteTimingオプション (5)
WorkingPrecision (5)
デフォルトで,WorkingPrecisionはMachinePrecisionである:
pts = RandomReal[10, {5, 3}];BoundingRegion[pts, "FastEllipsoid"]pts = Rationalize[RandomReal[10, {5, 3}], 0];BoundingRegion[pts, "FastEllipsoid", WorkingPrecision -> 10]pts = Rationalize[RandomReal[10, {5, 3}], 0];BoundingRegion[pts, "FastEllipsoid", WorkingPrecision -> 20]InfinityというWorkingPrecisionは境界領域を厳密計算で評価する:
pts = Rationalize[RandomReal[10, {5, 3}], 0];BoundingRegion[pts, "FastEllipsoid", WorkingPrecision -> Infinity]pts = RandomReal[10, {5, 3}];BoundingRegion[pts, "FastEllipsoid", WorkingPrecision -> 20]SetPrecisionを使って入力精度を上げると出力精度も高くなる:
pts2 = SetPrecision[pts, 20];BoundingRegion[pts2, "FastEllipsoid", WorkingPrecision -> 20]Rationalizeを使って厳密数を得る.これで厳密計算が可能になる:
pts3 = Rationalize[pts, 0];BoundingRegion[pts3, "FastEllipsoid", WorkingPrecision -> Infinity]アプリケーション (4)
3Dグラフィックスオブジェクトについて,さまざまな境界領域を求める:
graphics = [image];mesh = DiscretizeGraphics[graphics];breg = Table[BoundingRegion[mesh, shape], {shape, {"MinCuboid", "MinOrientedCuboid", "MinBall", "FastOrientedCuboid", "FastBall", "FastEllipsoid", "FastCylinder", "FastCapsule"}}];Table[Show[graphics, Graphics3D[{Opacity[.5], shape}], PlotLabel -> Volume[shape], ImageSize -> 100], {shape, breg}]reg = ImplicitRegion[(x^2 == 2 y && -3 ≤ x ≤ 3 || x^2 + y^2 ≤ 16 && 64 x^2 + 49 y (2 + y) > 147 || 4 (x^2 + y + y^2) ≤ 15) && 43 + 16 x (3 + x) + 16 (-2 + y) y > 0 && 43 + 16 (-3 + x) x + 16 (-2 + y) y > 0 || 1243 + 1120 x + 400 x^2 + 400 y^2 ≤ 880 y || 1483 + 400 x^2 + 400 y^2 ≤ 1280 x + 880 y || 28323 + 5520 x + 900 x^2 + 900 y^2 == 8464 y || 28323 + 900 x^2 + 900 y^2 == 5520 x + 8464 y, {x, y}];DiscretizeRegionを使って領域を離散化する:
mr = DiscretizeRegion[reg]shapes = {"MinRectangle", "MinDisk", "FastEllipse", "FastStadium"};regs = Table[BoundingRegion[mr, s], {s, shapes}];Table[Show[Graphics[{Opacity[0.5], Green, r}], mr], {r, regs}]棄却サンプリングを使って任意の領域内のランダムな点を計算する:
reg = ImplicitRegion[x^6 - 5 x^4 y + 3 x^4 y^2 + 10 x^2 y^3 + 3 x^2 y^4 - y^5 + y^6 + z^2 ≤ 1, {x, y, z}];br = BoundingRegion[DiscretizeRegion@reg, "MinCuboid"]brpts = RandomPoint[br, 10000];regpts = Select[brpts, RegionMember[reg, #]&];
Length[regpts]Graphics3D[{Blue, AbsolutePointSize[1], Point@regpts}]RandomPointを使ってもとの領域から生成された点と比較する:
Graphics3D[{Blue, AbsolutePointSize[1], Point@RandomPoint[reg, 5000]}]境界領域は,境界領域間の衝突をオブジェクト同士の衝突よりもより簡単により速くチェックできるので,ゲーム物理でしばしば使われる:
obj1 = ImplicitRegion[(x^2 == 2 y && -3 ≤ x ≤ 3 || x^2 + y^2 ≤ 16 && 64 x^2 + 49 y (2 + y) > 147 || 4 (x^2 + y + y^2) ≤ 15) && 43 + 16 x (3 + x) + 16 (-2 + y) y > 0 && 43 + 16 (-3 + x) x + 16 (-2 + y) y > 0 || 1243 + 1120 x + 400 x^2 + 400 y^2 ≤ 880 y || 1483 + 400 x^2 + 400 y^2 ≤ 1280 x + 880 y || 28323 + 5520 x + 900 x^2 + 900 y^2 == 8464 y || 28323 + 900 x^2 + 900 y^2 == 5520 x + 8464 y, {x, y}];
obj2 = RegionIntersection[Disk[{6, 9 / 2}, 3], Disk[{7, 6}, 3]];mr1 = DiscretizeRegion@obj1;
mr2 = DiscretizeRegion@obj2;境界領域が交差しないことをチェックすることでオブジェクトが衝突しないことを示す:
br1 = BoundingRegion[mr1, "MinOrientedRectangle"];
br2 = BoundingRegion[mr2, "MinOrientedRectangle"];
Show[Graphics[{Opacity[0.5], Green, br1, br2}], mr1, mr2]FindInstanceを使って境界領域が交差しないことをチェックする:
FindInstance[Element[{x, y}, br1] && Element[{x, y}, br2], {x, y}, Reals]//RepeatedTimingFindInstance[Element[{x, y}, obj1] && Element[{x, y}, obj2], {x, y}, Reals]//RepeatedTimingしかし,たとえオブジェクトが衝突しなくても,境界領域は互いに素ではないかもしれない:
bd1 = BoundingRegion[mr1, "MinDisk"];
bd2 = BoundingRegion[mr2, "MinDisk"];
FindInstance[Element[{x, y}, bd1] && Element[{x, y}, bd2], {x, y}, Reals]Show[Graphics[{{Opacity[0.5], Green, bd1, bd2}, {Red, Point[{x, y} /. %]}}], mr1, mr2]特性と関係 (9)
pts = {{3, 10}, {6, 3}, {10, 2}, {2, 8}, {3, 3}};breg = BoundingRegion[pts, "MinDisk"]RegionMember[breg, pts]pts = {{3, 10}, {6, 3}, {10, 2}, {2, 8}, {3, 3}};bbreg = RegionBoundary@BoundingRegion[pts, "MinDisk"]RegionMember[bbreg, pts]Graphics[{{bbreg}, {Red, PointSize[Medium], Point[pts]}}, ImageSize -> Tiny]"MinOrientedCuboid"は"MinCuboid"以下の体積を与える:
pts2d = RandomInteger[100, {25, 3}];Volume@BoundingRegion[pts2d, "MinOrientedCuboid"] ≤ Volume@BoundingRegion[pts2d, "MinCuboid"]"MinOrientedRectangle"は,"MinRectangle"以下の面積を与える:
pts3d = RandomInteger[100, {25, 2}];Area@BoundingRegion[pts3d, "MinOrientedRectangle"] ≤ Area@BoundingRegion[pts3d, "MinRectangle"]"MinConvexPolygon"は他の境界領域以下の面積を持つ:
pts = RandomInteger[100, {25, 2}];acvx = Area@BoundingRegion[pts, "MinConvexPolygon"]Table[acvx ≤ Area[BoundingRegion[pts, shape]], {shape, {"MinRectangle", "MinOrientedRectangle", "MinDisk", "FastOrientedRectangle", "FastDisk", "FastEllipse", "FastStadium"}}]"MinConvexPolyhedron"は他の境界領域以下の体積を持つ:
pts = RandomInteger[100, {25, 3}];vcvx = Volume@BoundingRegion[pts, "MinConvexPolyhedron"]Table[vcvx ≤ Volume[BoundingRegion[pts, shape]], {shape, {"MinCuboid", "MinOrientedCuboid", "MinBall", "FastOrientedCuboid", "FastBall", "FastEllipsoid", "FastCylinder", "FastCapsule"}}]"MinConvexPolygon"は2DのConvexHullMeshに対応する:
pts = RandomInteger[100, {25, 2}];{Graphics[{StandardBlue, BoundingRegion[pts, "MinConvexPolygon"]}], ConvexHullMesh[pts]}"MinConvexPolyhedron"は3DのConvexHullMeshに対応する:
pts = RandomInteger[100, {25, 3}];{Graphics3D[BoundingRegion[pts, "MinConvexPolyhedron"], Boxed -> False], ConvexHullMesh[pts]}アフィン独立の3点の"MinConvexPolygon"はTriangleに対応する:
pts = {{1, 1}, {1, 2}, {3, 3}};{Graphics[{StandardBlue, BoundingRegion[pts, "MinConvexPolygon"]}], Graphics[{StandardBlue, Triangle[pts]}]}アフィン独立の4点の"MinConvexPolyhedron"はTetrahedronに対応する:
pts = {{1, 1, 1}, {1, 1, 2}, {3, 1, 3}, {3, 2, 5}};{Graphics3D[BoundingRegion[pts, "MinConvexPolyhedron"], Boxed -> False], Graphics3D[{Tetrahedron[pts]}, Boxed -> False]}Circumsphereは2Dの3点を通る円を与える.対応する円板が境界領域である:
pts = {{0, 0}, {1, 0}, {-1, 1}};d1 = Disk@@Circumsphere[pts]d2 = Disk@@BoundingRegion[pts, "MinDisk", WorkingPrecision -> ∞]外接球のAreaは常に最小円板の面積以上である:
{Area[d1], Area[d2]}//NLegended[Graphics[{{Opacity[0.5], {Blue, d1}, {Red, d2}}, Point[pts]}], SwatchLegend[{Blue, Red}, {Circumsphere, BoundingRegion}]]考えられる問題 (1)
BoundingRegionは要求された領域の退化した形を与えることがある:
BoundingRegion[{{0, 0}}, "MinCuboid"]BoundingRegion[{{0, 0, 0, 0}, {1, 0, 0, 0}, {1, 1, 0, 0}}, "MinCuboid"]テキスト
Wolfram Research (2016), BoundingRegion, Wolfram言語関数, https://reference.wolfram.com/language/ref/BoundingRegion.html (2020年に更新).
CMS
Wolfram Language. 2016. "BoundingRegion." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2020. https://reference.wolfram.com/language/ref/BoundingRegion.html.
APA
Wolfram Language. (2016). BoundingRegion. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/BoundingRegion.html
BibTeX
@misc{reference.wolfram_2026_boundingregion, author="Wolfram Research", title="{BoundingRegion}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/BoundingRegion.html}", note=[Accessed: 31-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_boundingregion, organization={Wolfram Research}, title={BoundingRegion}, year={2020}, url={https://reference.wolfram.com/language/ref/BoundingRegion.html}, note=[Accessed: 31-August-2026]}