RegionDifference[reg1,reg2]
gives the difference of the regions reg1 and reg2.
RegionDifference
RegionDifference[reg1,reg2]
gives the difference of the regions reg1 and reg2.
Details and Options
- A point p belongs to RegionDifference[reg1,reg2] if it belongs to reg1 but not reg2.
- For BoundaryMeshRegion reg1 and reg2, RegionDifference gives the smallest BoundaryMeshRegion that contains the difference of reg1 and reg2.
- For MeshRegion reg1 and reg2, RegionDifference gives the smallest MeshRegion that contains the difference of reg1 and reg2.
- RegionDifference takes the same options as Region.
Examples
open all close allBasic Examples (2)
RegionDifference[Disk[{0, 0}, 2], Disk[{3, 0}, 2]];Region[%]Difference of two MeshRegion objects:
RegionDifference[[image], [image]]Scope (16)
Special Regions (6)
For some regions, the difference is computed explicitly:
Subscript[ℛ, 1] = Triangle[{{0, 0}, {1, 0}, {0, 1}}];
Subscript[ℛ, 2] = Disk[{3, 0}, 1];Subscript[ℛ, 3] = RegionDifference[Subscript[ℛ, 1], Subscript[ℛ, 2]]Graphics[{Opacity[0.5], {Red, Subscript[ℛ, 1]}, {Green, Subscript[ℛ, 2]}, {Yellow, Subscript[ℛ, 3]}}]Subscript[ℛ, 1] = Cuboid[];
Subscript[ℛ, 2] = Ball[{0, 0, 0}, 2];Subscript[ℛ, 3] = RegionDifference[Subscript[ℛ, 1], Subscript[ℛ, 2]]The cuboid is contained in the ball:
Graphics3D[{Opacity[0.5], {Red, Subscript[ℛ, 1]}, {Green, Subscript[ℛ, 2]}}]A difference of Line regions:
ℛ = RegionDifference[Line[{{1}, {4}}], Line[{{2}, {3}}]];Region[ℛ]A difference of Polygon regions:
Subscript[ℛ, 1] = Polygon[{{0, 0}, {3, -1}, {2, 0}, {3, 1}}];
Subscript[ℛ, 2] = Polygon[{{5, 0}, {2, 1}, {3, 0}, {2, -1}}];ℛ = RegionDifference[Subscript[ℛ, 1], Subscript[ℛ, 2]];Region[ℛ]A difference of two Cuboid regions:
ℛ = RegionDifference[Cuboid[], Cuboid[{0.5, 0.5, 0.5}]];Region[ℛ]A difference of regions with different RegionDimension:
ℛ = RegionDifference[Circle[{0, 0}, 1], Disk[{1, 0}, 1]];Region[ℛ]Formula Regions (2)
A difference of ImplicitRegion objects is an ImplicitRegion:
Subscript[ℛ, 1] = ImplicitRegion[x ≤ 1, {x}];
Subscript[ℛ, 2] = ImplicitRegion[x ≥ -1, {x}];RegionDifference[Subscript[ℛ, 1], Subscript[ℛ, 2]]Subscript[ℛ, 1] = ImplicitRegion[x^2 + y^2 ≤ 1, {x, y}];
Subscript[ℛ, 2] = ImplicitRegion[x^2 + (y - 1)^2 ≤ 1, {x, y}];RegionDifference[Subscript[ℛ, 1], Subscript[ℛ, 2]]Subscript[ℛ, 1] = ImplicitRegion[x^2 + y^2 + z^2 ≤ 1, {x, y, z}];
Subscript[ℛ, 2] = ImplicitRegion[(x - 1)^2 + y^2 + z^2 ≤ 1, {x, y, z}];RegionDifference[Subscript[ℛ, 1], Subscript[ℛ, 2]]Subscript[ℛ, 1] = ImplicitRegion[x^2 + y^2 + z^2 + u^2 + v^2 ≤ 1, {x, y, z, u, v}];
Subscript[ℛ, 2] = ImplicitRegion[(x - 1)^2 + y^2 + z^2 + u^2 + v^2 ≤ 1, {x, y, z, u, v}];RegionDifference[Subscript[ℛ, 1], Subscript[ℛ, 2]]A difference of ParametricRegion objects:
Subscript[ℛ, 1] = ParametricRegion[{u, v}, {{u, 0, 2}, {v, 0, 2}}];
Subscript[ℛ, 2] = ParametricRegion[{u + 1, v + 1}, {{u, 0, 2}, {v, 0, 2}}];ℛ = RegionDifference[Subscript[ℛ, 1], Subscript[ℛ, 2]];Region[ℛ]Mesh Regions (2)
A difference of BoundaryMeshRegion objects is a BoundaryMeshRegion:
RegionDifference[[image], [image]]BoundedRegionQ[%]RegionDifference[[image], [image]]BoundedRegionQ[%]RegionDifference[[image], [image]]BoundedRegionQ[%]A difference of full-dimensional MeshRegion objects is a MeshRegion:
RegionDifference[[image], [image]]MeshRegionQ[%]RegionDifference[[image], [image]]MeshRegionQ[%]RegionDifference[[image], [image]]MeshRegionQ[%]Derived Regions (2)
A difference of BooleanRegion objects:
Subscript[ℛ, 1] = BooleanRegion[Or, {Triangle[{{0, 0}, {2, 3}, {-2, 3}}], Triangle[{{0, 2}, {2, -1}, {-2, -1}}]}];
Subscript[ℛ, 2] = BooleanRegion[And, {Triangle[{{0, 0}, {2, 3}, {-2, 3}}], Triangle[{{0, 2}, {2, -1}, {-2, 2}}]}];ℛ = RegionDifference[Subscript[ℛ, 1], Subscript[ℛ, 2]];Region[ℛ]A difference of TransformedRegion objects:
Subscript[ℛ, 1] = TransformedRegion[Cuboid[], RotationTransform[Pi / 8, {1, 0, 0}]];
Subscript[ℛ, 2] = TransformedRegion[Cuboid[], RotationTransform[Pi / 8, {0, 1, 0}]];ℛ = RegionDifference[Subscript[ℛ, 1], Subscript[ℛ, 2]];Region[ℛ]CSG Regions (2)
A difference of CSGRegion objects in 2D:
Subscript[ℛ, 1] = CSGRegion[{Disk[], Rectangle[]}];
Subscript[ℛ, 2] = CSGRegion[{Disk[{0, 0}, 1 / 2], Rectangle[{0, 0}, {1 / 2, 1 / 2}]}];RegionDifference[Subscript[ℛ, 1], Subscript[ℛ, 2]]A difference of CSGRegion objects in 3D:
Subscript[ℛ, 1] = CSGRegion[{Cube[1.5], Cube[{0, 0, 1}, 3 / 4]}];
Subscript[ℛ, 2] = CSGRegion[{Cylinder[{{0, 0, -2}, {0, 0, 2}}, 1 / 3], Cylinder[{{-2, 0, 0}, {2, 0, 0}}, 1 / 2]}];RegionDifference[Subscript[ℛ, 1], Subscript[ℛ, 2]]Subdivision Regions (2)
A difference of SubdivisionRegion objects in 2D:
Subscript[ℛ, 1] = SubdivisionRegion[Rectangle[]];
Subscript[ℛ, 2] = SubdivisionRegion[Rectangle[{1 / 2, 1 / 2}]];RegionDifference[Subscript[ℛ, 1], Subscript[ℛ, 2]]A difference of SubdivisionRegion objects in 3D:
Subscript[ℛ, 1] = SubdivisionRegion[Cube[1]];
Subscript[ℛ, 2] = SubdivisionRegion[Tetrahedron[4]];RegionDifference[Subscript[ℛ, 1], Subscript[ℛ, 2]]Applications (4)
{Subscript[ℛ, 1], Subscript[ℛ, 2]} = {[image], [image]};Multicolumn[Table[RegionDifference[Subscript[ℛ, 1], TransformedRegion[Subscript[ℛ, 2], TranslationTransform[{0, 0, t}]]], {t, 0, 2.5, 0.5}], 3, Appearance -> "Horizontal" ]Define a disk annulus as the difference of two disks:
annulus = RegionDifference[Disk[{0, 0}, 2], Disk[{0, 0}, 1]];Region[annulus]The area is the difference of areas:
Area[annulus]Area[Disk[{0, 0}, 2]] - Area[Disk[{0, 0}, 1]]Define a ball shell (sometimes called spherical shell) as the generalization of an annulus to 3D:
shell = RegionDifference[Ball[{0, 0, 0}, 2], Ball[{0, 0, 0}, 1]];RegionPlot3D[shell, PlotPoints -> 40, PlotStyle -> Opacity[0.5]]The volume is the difference of volumes:
Volume[shell]Volume[Ball[{0, 0, 0}, 2]] - Volume[Ball[{0, 0, 0}, 1]]disks = RegionUnion[Disk[{0, 0}, 2], Disk[{6, 0}, 2], Disk[{3, 5}, 2]];RegionDifference[disks, Triangle[{{0, 0}, {6, 0}, {3, 5}}]]//RegionProperties & Relations (5)
A point p belongs to RegionDifference[reg1,reg2] if it belongs to reg1 but not reg2:
Subscript[ℛ, 1] = Disk[{0, 0}, 2];
Subscript[ℛ, 2] = Disk[{0, 3}, 2];
Subscript[ℛ, 3] = RegionDifference[Subscript[ℛ, 1], Subscript[ℛ, 2]];Use RegionMember to test membership:
p = {0, 0};RegionMember[Subscript[ℛ, 3], p] == RegionMember[Subscript[ℛ, 1], p]∧ !RegionMember[Subscript[ℛ, 2], p]RegionDifference is a Boolean combination ¬#2∧#1 of two regions:
{Subscript[ℛ, 1], Subscript[ℛ, 2]} = {[image], [image]};RegionDifference[Subscript[ℛ, 1], Subscript[ℛ, 2]] == BooleanRegion[¬#2∧#1&, {Subscript[ℛ, 1], Subscript[ℛ, 2]}]RegionSymmetricDifference can be found using RegionUnion and RegionDifference:
{Subscript[ℛ, 1], Subscript[ℛ, 2]} = {[image], [image]};RegionSymmetricDifference[Subscript[ℛ, 1], Subscript[ℛ, 2]] == RegionUnion[RegionDifference[Subscript[ℛ, 1], Subscript[ℛ, 2]], RegionDifference[Subscript[ℛ, 2], Subscript[ℛ, 1]]]The RegionDimension of a difference is at most that of the first input:
Subscript[ℛ, 1] = Disk[{0, 0}, 1];
Subscript[ℛ, 2] = Disk[{1, 0}, 1];
Subscript[ℛ, 3] = RegionDifference[Subscript[ℛ, 1], Subscript[ℛ, 2]];RegionDimension[Subscript[ℛ, 3]] == RegionDimension[Subscript[ℛ, 1]]Subscript[ℛ, 1] = Disk[{0, 0}, 1];
Subscript[ℛ, 2] = ImplicitRegion[y > 0∨y < 0, {x, y}];
Subscript[ℛ, 3] = RegionDifference[Subscript[ℛ, 1], Subscript[ℛ, 2]];This difference is a line segment, and thus has dimension 1:
RegionDimension[Subscript[ℛ, 3]]If two regions are disjoint, the RegionMeasure of their difference is that of the first input:
Subscript[ℛ, 1] = Disk[{0, 0}, 1];
Subscript[ℛ, 2] = Disk[{3, 0}, 1];
Subscript[ℛ, 3] = RegionDifference[Subscript[ℛ, 1], Subscript[ℛ, 2]];RegionMeasure[Subscript[ℛ, 3]] == RegionMeasure[Subscript[ℛ, 1]]If they overlap, you must subtract the measure of the RegionIntersection:
Subscript[ℛ, 1] = Disk[{0, 0}, 1];
Subscript[ℛ, 2] = Disk[{1, 0}, 1];
Subscript[ℛ, 3] = RegionDifference[Subscript[ℛ, 1], Subscript[ℛ, 2]];RegionMeasure[Subscript[ℛ, 3]] == RegionMeasure[Subscript[ℛ, 1]] - RegionMeasure[RegionIntersection[Subscript[ℛ, 1], Subscript[ℛ, 2]]]Possible Issues (1)
Difference is defined only for regions with the same RegionEmbeddingDimension:
Subscript[ℛ, 1] = Disk[];
Subscript[ℛ, 2] = Ball[{0, 0, 1}, 1];RegionDifference[Subscript[ℛ, 1], Subscript[ℛ, 2]]Related Guides
Text
Wolfram Research (2014), RegionDifference, Wolfram Language function, https://reference.wolfram.com/language/ref/RegionDifference.html (updated 2017).
CMS
Wolfram Language. 2014. "RegionDifference." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2017. https://reference.wolfram.com/language/ref/RegionDifference.html.
APA
Wolfram Language. (2014). RegionDifference. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/RegionDifference.html
BibTeX
@misc{reference.wolfram_2026_regiondifference, author="Wolfram Research", title="{RegionDifference}", year="2017", howpublished="\url{https://reference.wolfram.com/language/ref/RegionDifference.html}", note=[Accessed: 12-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_regiondifference, organization={Wolfram Research}, title={RegionDifference}, year={2017}, url={https://reference.wolfram.com/language/ref/RegionDifference.html}, note=[Accessed: 12-June-2026]}