RegionBounds[reg]
gives the bounds for the region reg.
RegionBounds[reg,"type"]
gives region bounds of the specified "type".
RegionBounds
RegionBounds[reg]
gives the bounds for the region reg.
RegionBounds[reg,"type"]
gives region bounds of the specified "type".
Details and Options
- RegionBounds is also known as bounding box and bounding volume.
- RegionBounds returns a list {{xmin,xmax},{ymin,ymax},…} of length equal to RegionEmbeddingDimension[reg].
- For an unbounded region, one or several of the coordinate ranges can contain Infinity.
- The following region range "type" specifications can be given:
-
"Minimal" minimal bounds (default) "Sufficient" sufficient bounds "Finite" finite range of interest, not necessarily bounding
Examples
open all close allBasic Examples (3)
ℛ = Triangle[{{0, 0}, {1, 2}, {2, 1}}];bounds = RegionBounds[ℛ]Graphics[{{EdgeForm[LightRed], Lighter[Yellow, 0.5], Rectangle@@Transpose[bounds]}, {Black, ℛ}}]ℛ = Tetrahedron[{{0, 0, 0}, {1, 0, 0}, {0, 1, 0}, {0, 0, 1}}];bounds = RegionBounds[ℛ]Graphics3D[{{EdgeForm[White], Opacity[0.2, Yellow], Cuboid@@Transpose[bounds]}, ℛ}, Boxed -> False]Unbounded regions have infinite bounds:
RegionBounds[HalfLine[{{0, 0}, {1, 1}}]]RegionBounds[InfinitePlane[{{0, 0, 0}, {1, 0, 0}, {0, 1, 0}}]]Scope (27)
Basic Uses (3)
By default, the "Minimal" bounding region is returned:
ℛ = ImplicitRegion[x ^ 4 - x y + y ^ 4 ≤ 1., {x, y}];b = RegionBounds[ℛ]Show[Graphics[{EdgeForm[LightRed], Lighter[Yellow, 0.5], Rectangle@@Transpose[b]}], DiscretizeRegion[ℛ]]Use "Finite" to get some finite bounding region even if the region is not bounded:
ℛ = InfiniteLine[{0, 0}, {1, 1}];
b = RegionBounds[ℛ, "Finite"]Show[Graphics[{EdgeForm[LightRed], Lighter[Yellow, 0.5], Rectangle@@Transpose[b]}], DiscretizeRegion[ℛ]]Other range types return infinite ranges:
RegionBounds[ℛ, "Minimal"]RegionBounds[ℛ, "Sufficient"]"Finite" may not necessarily return the smallest bounding region:
ℛ = Ellipsoid[{0, 0}, {{5, 2}, {2, 5}}];showBounds[b_] := Show[Graphics[{EdgeForm[LightRed], Lighter[Yellow, 0.5], Rectangle@@Transpose[b]}], DiscretizeRegion[ℛ]]{bm, bf} = {RegionBounds[ℛ, "Minimal"], RegionBounds[ℛ, "Finite"]};showBounds /@ {bm, bf}Special Regions (7)
RegionBounds[Point[{{1}, {2}, {3}}]]RegionBounds[Interval[{1, 3}]]RegionBounds[Point[{{1, 1}, {2, 3}, {3, 5}}]]RegionBounds[Circle[{0, 0}, 3]]RegionBounds[Disk[{0, 0}, {3, 5}]]ℛ = Triangle[{{0, 0}, {1, 2}, {2, 1}}];b = RegionBounds[ℛ];Graphics[{{EdgeForm[LightRed], Lighter[Yellow, 0.5], Rectangle@@Transpose[b]}, {Black, ℛ}}]RegionBounds[Point[{{1, 1, 1}, {2, 3, 4}, {3, 5, 8}}]]RegionBounds[Line[{{1, 2, 3}, {4, 5, 6}}]]RegionBounds[Polygon[{{1, 0, 0}, {0, 2, 0}, {0, 0, 3}}]]RegionBounds[Cylinder[{{0, 0, 0}, {0, 0, 1}}, 2]]ℛ = Tetrahedron[{{0, 0, 0}, {1, 0, 0}, {0, 1, 0}, {0, 0, 1}}];b = RegionBounds[ℛ];Graphics3D[{{EdgeForm[White], Opacity[0.2, Yellow], Cuboid@@Transpose[b]}, ℛ}, Boxed -> False]RegionBounds[Simplex[{{1, 0, 0, 0}, {0, 2, 0, 0}, {0, 0, 3, 0}, {0, 0, 0, 4}}]]RegionBounds[Cuboid[{1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}]]RegionBounds[Ball[{1, 2, 3, 4, 5, 6, 7}, 8]]Specify the "Finite" type to get finite bounds for unbounded regions:
ℛ = InfiniteLine[{{10, 11}, {12, 13}}];{RegionBounds[ℛ], RegionBounds[ℛ, "Finite"]}Formula Regions (3)
A union of two disks as an ImplicitRegion:
ℛ = ImplicitRegion[x^2 + y^2 ≤ 4∨(x - 3)^2 + y^2 ≤ 3, {x, y}];
d = DiscretizeRegion[ℛ]b = RegionBounds[ℛ]Show[Graphics[{{EdgeForm[LightRed], Lighter[Yellow, 0.5], Rectangle@@Transpose[b]}}], d]A union of two cylinders as an ImplicitRegion:
ℛ = ImplicitRegion[x^2 + y^2 ≤ 2∨(x - 2)^2 + y^2 ≤ 1, {x, y, {z, 0, 2}}];
d = DiscretizeRegion[ℛ, {{-4, 4}, {-2, 2}, {0, 2}}]b = RegionBounds[ℛ]Show[Graphics3D[{{EdgeForm[White], Opacity[0.2, Yellow], Cuboid@@Transpose[b]}}, Boxed -> False], d]A rational parametrization of a disk represented as a ParametricRegion:
ℛ = ParametricRegion[{(1 - t ^ 2) / (1 + t ^ 2), 2t / (1 + t ^ 2)}, {t}];
d = DiscretizeRegion[ℛ]b = RegionBounds[ℛ]Show[Graphics[{{EdgeForm[LightRed], Lighter[Yellow, 0.5], Rectangle@@Transpose[b]}}], d]Mesh Regions (4)
MeshRegion in 2D:
ℛ = DelaunayMesh[RandomReal[1, {50, 2}]];
b = RegionBounds[ℛ]Show[Graphics[{{EdgeForm[LightRed], Lighter[Yellow, 0.5], Rectangle@@Transpose[b]}}], ℛ]MeshRegion in 3D:
ℛ = DelaunayMesh[RandomReal[1, {100, 3}]];
b = RegionBounds[ℛ]Show[Graphics3D[{{EdgeForm[White], Opacity[0.2, Yellow], Cuboid@@Transpose[b]}}, Boxed -> False], ℛ]BoundaryMeshRegion in 2D:
ℛ = ConvexHullMesh[RandomReal[1, {50, 2}]];
b = RegionBounds[ℛ]Show[Graphics[{{EdgeForm[LightRed], Lighter[Yellow, 0.5], Rectangle@@Transpose[b]}}], ℛ]BoundaryMeshRegion in 3D:
ℛ = ConvexHullMesh[RandomReal[1, {100, 3}]];
b = RegionBounds[ℛ]Show[Graphics3D[{{EdgeForm[White], Opacity[0.2, Yellow], Cuboid@@Transpose[b]}}, Boxed -> False], ℛ]Derived Regions (4)
RegionIntersection of two regions:
ℛ = RegionIntersection[Disk[{0, 0}, 1], Disk[{0, 1}, 1]];
b = RegionBounds[ℛ]Show[Graphics[{{EdgeForm[LightRed], Lighter[Yellow, 0.5], Rectangle@@Transpose[b]}}], DiscretizeRegion[ℛ]]RegionUnion of mixed-dimensional regions:
ℛ = RegionUnion[Circle[{1, 0}, 1], Disk[{0, 0}, 1]];
b = RegionBounds[ℛ]Show[Graphics[{{EdgeForm[LightRed], Lighter[Yellow, 0.5], Rectangle@@Transpose[b]}}], DiscretizeRegion[ℛ]]ℛ = TransformedRegion[Disk[{0, 0}, 1], ScalingTransform[{3, 2}]];
b = RegionBounds[ℛ]Show[Graphics[{{EdgeForm[LightRed], Lighter[Yellow, 0.5], Rectangle@@Transpose[b]}}], DiscretizeRegion[ℛ, {{-3, 3}, {-2, 2}}]]ℛ = RegionBoundary[Disk[{0, 0}, 1]]b = RegionBounds[ℛ]Graphics[{{EdgeForm[LightRed], Lighter[Yellow, 0.5], Rectangle@@Transpose[b]}, Blue, ℛ}]Geographic Regions (2)
Polygons with GeoPosition:
ℛ = Polygon[GeoPosition[{{{40.083441, -88.235716}, {40.083607, -88.257488}, {40.082603, -88.257149},
{40.076136999999996, -88.25740499999999}, {40.076178, -88.270888}, {40.076516, -88.271558},
{40.083686, -88.271512}, {40.083659999999995, -88.267046}, ... 33323}, {40.098112, -88.228687},
{40.095216, -88.228627}, {40.095179, -88.238547}, {40.094480999999995, -88.238546},
{40.094508999999995, -88.23267}, {40.094106, -88.232556}, {40.090666999999996, -88.232477},
{40.090741, -88.235745}}}]];
b = RegionBounds[ℛ]Show[Graphics3D[{{EdgeForm[White], Opacity[0.2, Yellow], Cuboid@@Transpose[b]}}, Boxed -> False], Region[ℛ]]The boundary of a polygon with 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"]];
b = RegionBounds[ℛ]Show[Graphics[{{EdgeForm[LightRed], Lighter[Yellow, 0.5], Rectangle@@Transpose[b]}}], Region[Style[ℛ, Blue]]]CSG Regions (2)
CSGRegion in 2D:
ℛ = CSGRegion["Difference", {Disk[], Disk[{1 / 2, 1 / 2}]}];
b = RegionBounds[ℛ]Show[
Graphics[{{EdgeForm[LightRed], Lighter[Yellow, 0.5], Rectangle@@Transpose[b]}}], ℛ]CSGRegion in 3D:
ℛ = CSGRegion["Difference", {Ball[], Cylinder[{{1, 1, 1}, {1, -1, 1}}]}];
b = RegionBounds[ℛ]Show[
Graphics3D[{{EdgeForm[White], Opacity[0.2, Yellow], , Cuboid@@Transpose[b]}}], ℛ, Boxed -> False]Subdivision Regions (2)
SubdivisionRegion in 2D:
ℛ = SubdivisionRegion[Rectangle[]];
b = RegionBounds[ℛ]Show[
Graphics[{{EdgeForm[LightRed], Lighter[Yellow, 0.5], Rectangle@@Transpose[b]}}], ℛ]SubdivisionRegion in 3D:
ℛ = SubdivisionRegion[Tetrahedron[]];
b = RegionBounds[ℛ]Show[
Graphics3D[{{EdgeForm[White], Opacity[0.2, Yellow], , Cuboid@@Transpose[b]}}], ℛ, Boxed -> False]Applications (5)
Find a bounding Sphere to a region's bounding box:
ℛ = Cone[{{0, 0, 0}, {0, 0, 3}}, 1];Compute corner points of bounding box:
{min, max} = Transpose[RegionBounds[ℛ]];boundingBox = Cuboid[min, max];boundingSphere = Sphere[RegionCentroid[boundingBox], EuclideanDistance[min, max] / 2];Show[Graphics3D[{ℛ, EdgeForm[White], Opacity[0.2, Yellow], boundingBox, boundingSphere}], Boxed -> False]Find a bounding Ellipsoid to a region's bounding box:
ℛ = Cone[{{0, 0, 0}, {0, 0, 3}}, 1];bounds = RegionBounds[ℛ];boundingBox = Cuboid@@Transpose[bounds];Compute a bounding ellipsoid to the bounding box:
r = (Sqrt[3]/2) EuclideanDistance@@@bounds;boundingEllipsoid = Ellipsoid[RegionCentroid[boundingBox], r];Show[Graphics3D[{ℛ, EdgeForm[White], Opacity[0.2, Yellow], boundingBox, boundingEllipsoid}], Boxed -> False]Check for possible region inclusion by checking if bounding boxes overlap:
r1 = Disk[{0, 0}, {3, 4}];
r2 = Disk[{9, 0}, {4, 3}];Graphics[{r1, r2}]Compute bounds for each region:
{b1, b2} = {RegionBounds[r1], RegionBounds[r2]};For each dimension, check if bounds intersect:
intersections = MapThread[Function[{i1, i2}, Interval[] =!= IntervalIntersection[Interval[i1], Interval[i2]]], {b1, b2}]Bounding boxes overlap if and only if bounds in every dimension overlap:
AllTrue[intersections, TrueQ]Create a fast membership rejection test:
ℛ = ImplicitRegion[4 z^4 + 9 (x^2 + y^2 - 4 z^2) ≤ 1, {x, y, z}];Create a region member function:
rmf = RegionMember[ℛ];Create a member function for the region's bounding box:
bounds = N@RegionBounds[ℛ];bmf = RegionMember[Cuboid@@Transpose[bounds]];pts = RandomVariate[UniformDistribution[2bounds], 10 ^ 5];Use region member function to select member points after filtering with bounding box member function:
{tb, pb} = Timing[Select[Select[pts, bmf], rmf]];Compare the timing of only using the region member function:
{tr, pr} = Timing[Select[pts, rmf]];{tb, tr}Both approaches return the same member points:
pb === prFit an oriented bounding box of least area to a region:
ℛ = [image];Find the transform for each edge of the region's convex hull that aligns it with the
axis:
chm = ConvexHullMesh[MeshCoordinates[ℛ]]lines = MeshPrimitives[chm, "Line"];yaxis = Line[{{0, 0}, {0, 1}}];tl = Table[Last[FindGeometricTransform[yaxis, l]], {l, lines}];Compute oriented bounding boxes aligned with each edge of the convex hull:
bounds = Table[RegionBounds[TransformedRegion[chm, t]], {t, tl}];bboxes = Table[Rectangle@@Transpose[b], {b, bounds}];Find the transform that will orient the bounding box with the smallest area to the region:
areas = Area /@ bboxes;index = Position[areas, Min[areas], 1][[1, 1]];tf = Last[FindGeometricTransform[lines[[index]], yaxis]];Visualize the oriented bounding box and region:
g = Graphics[{EdgeForm[LightRed], Lighter[Yellow, 0.5], GeometricTransformation[bboxes[[index]], tf]}];Show[g, ℛ]Properties & Relations (7)
The range is finite for bounded regions:
Subscript[ℛ, 1] = Disk[{0, 0}, 1];
Subscript[ℛ, 2] = InfiniteLine[{{0, 0}, {1, 1}}];{BoundedRegionQ[Subscript[ℛ, 1]], RegionBounds[Subscript[ℛ, 1]]}The range is infinite for unbounded regions:
{BoundedRegionQ[Subscript[ℛ, 2]], RegionBounds[Subscript[ℛ, 2]]}RegionBounds may be used as input to DiscretizeRegion:
ℛ = RegionUnion[Disk[], InfiniteLine[{0, 0}, {1, 1}]];bounds = RegionBounds[ℛ, "Finite"]Double the default DiscretizeRegion bounding range:
{DiscretizeRegion[ℛ, bounds], DiscretizeRegion[ℛ, 2 bounds]}RegionBounds may be used as input to VoronoiMesh:
pts = RandomReal[{-1, 1}, {25, 2}];
g = Graphics[{Orange, Point[pts]}]bounds = RegionBounds[Point[pts]]VoronoiMesh at varying bounding ranges:
Table[Show[VoronoiMesh[pts, n bounds], g], {n, 3}]RegionBounds may be used to specify a PlotRange to DiscretizeGraphics:
ℛ = Disk[{0, 0}, 1];bounds = RegionBounds[ℛ, "Finite"]VoronoiMesh at varying bounding ranges:
Table[DiscretizeGraphics[ℛ, PlotRange -> (n bounds/3) + 1], {n, 3}]Transpose a 2D region's bounds to get coordinates for Rectangle:
ℛ = Disk[{0, 0}, 2];
b = RegionBounds[ℛ]t = Transpose[b]Graphics[{EdgeForm[LightRed], Lighter[Yellow, 0.5], Rectangle@@t, LightBlue, ℛ}]Transpose a 3D region's bounds to get coordinates for Cuboid:
ℛ = Ball[{0, 0, 0}, 2];
b = RegionBounds[ℛ]t = Transpose[b]Graphics3D[{{EdgeForm[White], Opacity[0.2, Yellow], Cuboid@@t}, ℛ}, Boxed -> False]Region bounds may be passed directly into UniformDistribution:
ℛ = Disk[{0, 0}, 1];
Graphics[{LightBlue, EdgeForm[Gray], ℛ}]bounds = RegionBounds[ℛ]Uniformly sample over the bounded region:
pts = RandomVariate[UniformDistribution[bounds], 10 ^ 3];Graphics[{ℛ, AbsolutePointSize[1.6], Orange, Point /@ pts}]Related Guides
History
Text
Wolfram Research (2014), RegionBounds, Wolfram Language function, https://reference.wolfram.com/language/ref/RegionBounds.html.
CMS
Wolfram Language. 2014. "RegionBounds." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/RegionBounds.html.
APA
Wolfram Language. (2014). RegionBounds. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/RegionBounds.html
BibTeX
@misc{reference.wolfram_2026_regionbounds, author="Wolfram Research", title="{RegionBounds}", year="2014", howpublished="\url{https://reference.wolfram.com/language/ref/RegionBounds.html}", note=[Accessed: 12-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_regionbounds, organization={Wolfram Research}, title={RegionBounds}, year={2014}, url={https://reference.wolfram.com/language/ref/RegionBounds.html}, note=[Accessed: 12-June-2026]}