RegionDifference[reg1,reg2]
给出区域 reg1 和 reg2 的差别.
RegionDifference
RegionDifference[reg1,reg2]
给出区域 reg1 和 reg2 的差别.
更多信息和选项
- 如果一个点 p 属于 reg1,但不属于 reg2,那么它属于 RegionDifference[reg1,reg2].
- 对于 BoundaryMeshRegion reg1 和 reg2,RegionDifference 给出包含 reg1 和 reg2 之差的最小的 BoundaryMeshRegion.
- 对于 MeshRegion reg1 和 reg2,RegionDifference 给出包含 reg1 和 reg2 之差的最小的 MeshRegion.
- RegionDifference 接受和 Region 一样的选项.
范例
打开所有单元 关闭所有单元基本范例 (2)
RegionDifference[Disk[{0, 0}, 2], Disk[{3, 0}, 2]];Region[%]两个 MeshRegion 对象的差集:
RegionDifference[[image], [image]]范围 (16)
特殊区域 (6)
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]]Graphics3D[{Opacity[0.5], {Red, Subscript[ℛ, 1]}, {Green, Subscript[ℛ, 2]}}]Line 区域的差集:
ℛ = RegionDifference[Line[{{1}, {4}}], Line[{{2}, {3}}]];Region[ℛ]Polygon 区域的差集:
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[ℛ]两个 Cuboid 区域的差集:
ℛ = RegionDifference[Cuboid[], Cuboid[{0.5, 0.5, 0.5}]];Region[ℛ]有不同 RegionDimension 的区域的差集:
ℛ = RegionDifference[Circle[{0, 0}, 1], Disk[{1, 0}, 1]];Region[ℛ]公式区域 (2)
ImplicitRegion 对象之差是一个 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]]ParametricRegion 对象的差集:
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[ℛ]网格区域 (2)
BoundaryMeshRegion 对象之差是一个 BoundaryMeshRegion:
RegionDifference[[image], [image]]BoundedRegionQ[%]RegionDifference[[image], [image]]BoundedRegionQ[%]RegionDifference[[image], [image]]BoundedRegionQ[%]全维 (full-dimensional) MeshRegion 对象之差是一个 MeshRegion:
RegionDifference[[image], [image]]MeshRegionQ[%]RegionDifference[[image], [image]]MeshRegionQ[%]RegionDifference[[image], [image]]MeshRegionQ[%]导出区域 (2)
BooleanRegion 对象之差:
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[ℛ]TransformedRegion 对象之差:
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 区域 (2)
二维 CSGRegion 对象之差:
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]]三维 CSGRegion 对象之差:
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]]细分区域 (2)
二维 SubdivisionRegion 对象之差:
Subscript[ℛ, 1] = SubdivisionRegion[Rectangle[]];
Subscript[ℛ, 2] = SubdivisionRegion[Rectangle[{1 / 2, 1 / 2}]];RegionDifference[Subscript[ℛ, 1], Subscript[ℛ, 2]]三维 SubdivisionRegion 对象之差:
Subscript[ℛ, 1] = SubdivisionRegion[Cube[1]];
Subscript[ℛ, 2] = SubdivisionRegion[Tetrahedron[4]];RegionDifference[Subscript[ℛ, 1], Subscript[ℛ, 2]]应用 (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" ]annulus = RegionDifference[Disk[{0, 0}, 2], Disk[{0, 0}, 1]];Region[annulus]Area[annulus]Area[Disk[{0, 0}, 2]] - Area[Disk[{0, 0}, 1]]shell = RegionDifference[Ball[{0, 0, 0}, 2], Ball[{0, 0, 0}, 1]];RegionPlot3D[shell, PlotPoints -> 40, PlotStyle -> Opacity[0.5]]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}}]]//Region属性和关系 (5)
如果点 p 属于 reg1,但不属于 reg2,那么它属于 RegionDifference[reg1,reg2]:
Subscript[ℛ, 1] = Disk[{0, 0}, 2];
Subscript[ℛ, 2] = Disk[{0, 3}, 2];
Subscript[ℛ, 3] = RegionDifference[Subscript[ℛ, 1], Subscript[ℛ, 2]];用 RegionMember 来测试其归属:
p = {0, 0};RegionMember[Subscript[ℛ, 3], p] == RegionMember[Subscript[ℛ, 1], p]∧ !RegionMember[Subscript[ℛ, 2], p]RegionDifference 是两个区域的布尔组合 ¬#2∧#1:
{Subscript[ℛ, 1], Subscript[ℛ, 2]} = {[image], [image]};RegionDifference[Subscript[ℛ, 1], Subscript[ℛ, 2]] == BooleanRegion[¬#2∧#1&, {Subscript[ℛ, 1], Subscript[ℛ, 2]}]可用 RegionUnion 和 RegionDifference 来求 RegionSymmetricDifference:
{Subscript[ℛ, 1], Subscript[ℛ, 2]} = {[image], [image]};RegionSymmetricDifference[Subscript[ℛ, 1], Subscript[ℛ, 2]] == RegionUnion[RegionDifference[Subscript[ℛ, 1], Subscript[ℛ, 2]], RegionDifference[Subscript[ℛ, 2], Subscript[ℛ, 1]]]差的 RegionDimension 最多可以是第一个输入:
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]];RegionDimension[Subscript[ℛ, 3]]如果两个区域不相交,则它们的差的 RegionMeasure 是第一个输入的度量:
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]]如果它们有重叠,则必须减去 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]]]可能存在的问题 (1)
只有当区域有同样的 RegionEmbeddingDimension 时,它们的差才有定义:
Subscript[ℛ, 1] = Disk[];
Subscript[ℛ, 2] = Ball[{0, 0, 1}, 1];RegionDifference[Subscript[ℛ, 1], Subscript[ℛ, 2]]文本
Wolfram Research (2014),RegionDifference,Wolfram 语言函数,https://reference.wolfram.com/language/ref/RegionDifference.html (更新于 2017 年).
CMS
Wolfram 语言. 2014. "RegionDifference." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2017. https://reference.wolfram.com/language/ref/RegionDifference.html.
APA
Wolfram 语言. (2014). RegionDifference. Wolfram 语言与系统参考资料中心. 追溯自 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: 01-November-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: 01-November-2026]}