DelaunayMesh[{p1,p2,…}]
给出 MeshRegion 表示来自点 p1、p2、… 的德劳内网格.
DelaunayMesh
DelaunayMesh[{p1,p2,…}]
给出 MeshRegion 表示来自点 p1、p2、… 的德劳内网格.
更多信息和选项
- DelaunayMesh 也被称为德劳内三角和德劳内四面体.
- 德劳内网格由区间(一维)、三角形(二维)、四面体(三维)和
维单纯形(
维)组成. - 德劳内网格具有的单纯形单元由
个点定义,使得这相同的
个点的外接圆不含有原始点 pi 中的其他点. - 德劳内网格给出一个三角化,其中最小内角最大化.
- DelaunayMesh 使用与 MeshRegion 相同的选项.
范例
打开所有单元 关闭所有单元基本范例 (4)
pts = RandomReal[{-1, 1}, {5, 1}];DelaunayMesh[pts];HighlightMesh[%, Style[0, Red]]pts = RandomReal[{-1, 1}, {50, 2}];ℛ = DelaunayMesh[pts];HighlightMesh[ℛ, Style[0, Red]]pts = RandomReal[{-1, 1}, {25, 3}];ℛ = DelaunayMesh[pts];HighlightMesh[ℛ, {Style[0, Directive[PointSize[Medium], Red]], Style[2, Opacity[0.1]]}]对应于六边形密排点阵的最小向量的点的 Delaunay 网格:
LatticeData["HexagonalClosePacking", "MinimalVectors"]DelaunayMesh[%]范围 (3)
pts = RandomReal[{-1, 1}, {20, 1}];ℛ = DelaunayMesh[pts]{RegionQ[ℛ], MeshRegionQ[ℛ]}{RegionDimension[ℛ], RegionEmbeddingDimension[ℛ]}{BoundedRegionQ[ℛ], RegionBounds[ℛ]}{RegionMeasure[ℛ], RegionCentroid[ℛ]}{RegionDistance[ℛ, {2}], RegionNearest[ℛ, {2}]}RegionMember[ℛ, {0.5}]pts = RandomReal[{-1, 1}, {50, 2}];ℛ = DelaunayMesh[pts]{RegionQ[ℛ], MeshRegionQ[ℛ]}{RegionDimension[ℛ], RegionEmbeddingDimension[ℛ]}{BoundedRegionQ[ℛ], RegionBounds[ℛ]}{RegionMeasure[ℛ], RegionCentroid[ℛ]}RegionMember[ℛ, {0.5, 0.5}]{RegionDistance[ℛ, {2, 2}], RegionNearest[ℛ, {2, 2}]}pts = RandomReal[{-1, 1}, {50, 3}];ℛ = DelaunayMesh[pts]{RegionQ[ℛ], MeshRegionQ[ℛ]}{RegionDimension[ℛ], RegionEmbeddingDimension[ℛ]}{BoundedRegionQ[ℛ], RegionBounds[ℛ]}{RegionMeasure[ℛ], RegionCentroid[ℛ]}RegionMember[ℛ, {0.5, 0.5, 0.5}]{RegionDistance[ℛ, {2, 2, 2}], RegionNearest[ℛ, {2, 2, 2}]}选项 (11)
MeshCellHighlight (2)
MeshCellHighlight 使得您可以指定 DelaunayMesh 的部分的突出显示:
DelaunayMesh[{{0, 0}, {1, 0}, {0, 1}, {1, 1}}, MeshCellHighlight -> {{1, All} -> Red, {0, All} -> Green}]DelaunayMesh[{{0, 0}, {1, 0}, {0, 1}, {1, 1}}, MeshCellHighlight -> {{1, 1} -> {Thick, Red}, {1, 2} -> {Dashed, Black}}]DelaunayMesh[{{0, 0}, {1, 0}, {0, 1}, {1, 1}}, MeshCellHighlight -> {Line[{1, 2}] -> {Thick, Red}, Line[{2, 3}] -> {Dashed, Black}}]MeshCellLabel (2)
MeshCellLabel 可以用于对 DelaunayMesh 的部分添加标签:
DelaunayMesh[{{0, 0}, {1, 0}, {0, 1}, {1, 1}}, MeshCellLabel -> {0 -> "Index"}]DelaunayMesh[{{0, 0}, {1, 0}, {0, 1}, {1, 1}}, MeshCellLabel -> {{1, 1} -> "x", {1, 2} -> "y"}]DelaunayMesh[{{0, 0}, {1, 0}, {0, 1}, {1, 1}}, MeshCellLabel -> {Line[{1, 3}] -> "x", Line[{1, 2}] -> "y"}]MeshCellMarker (1)
MeshCellMarker 可用于对 DelaunayMesh 的部分赋值:
DelaunayMesh[{{0, 0}, {1, 0}, {0, 1}, {1, 1}}, MeshCellMarker -> {{0, 1} -> 1, {0, 2} -> 2, {0, 3} -> 3, {0, 4} -> 4}]使用 MeshCellLabel 显示记号:
DelaunayMesh[{{0, 0}, {1, 0}, {0, 1}, {1, 1}}, MeshCellMarker -> {{0, 1} -> 1, {0, 2} -> 2, {0, 3} -> 3, {0, 4} -> 4}, MeshCellLabel -> {0 -> "Marker"}]MeshCellShapeFunction (2)
MeshCellShapeFunction 允许您指定 DelaunayMesh 的部分·的函数:
DelaunayMesh[{{0, 0}, {1, 0}, {0, 1}}, MeshCellShapeFunction -> {0 -> (Disk[#, .1]&)}]DelaunayMesh[{{0, 0}, {1, 0}, {0, 1}}, MeshCellShapeFunction -> {{0, 1} -> (Disk[#, .1]&), {0, 2} -> (Disk[#, {.1, .2}]&)}]DelaunayMesh[{{0, 0}, {1, 0}, {0, 1}}, MeshCellShapeFunction -> {Point[1] -> (Disk[#, .1]&), Point[2] -> (Disk[#, {.1, .2}]&)}]MeshCellStyle (2)
MeshCellStyle 允许您指定 DelaunayMesh 的部分的样式:
DelaunayMesh[{{0, 0}, {1, 0}, {0, 1}, {1, 1}}, MeshCellStyle -> {{1, All} -> Red, {0, All} -> Green}]DelaunayMesh[{{0, 0}, {1, 0}, {0, 1}, {1, 1}}, MeshCellStyle -> {{1, 1} -> {Thick, Red}, {1, 2} -> {Dashed, Black}}]DelaunayMesh[{{0, 0}, {1, 0}, {0, 1}, {1, 1}}, MeshCellStyle -> {Line[{1, 3}] -> {Thick, Red}, Line[{1, 2}] -> {Dashed, Green}}]应用 (5)
b = LatticeData["FaceCenteredCubic", "Basis"]p = Tuples[Range[0, 3], 3].b;m = DelaunayMesh[p]pts = ExampleData[{"Geometry3D", "UtahTeapot"}, "VertexData"];dm = DelaunayMesh[pts];teapot = ExampleData[{"Geometry3D", "UtahTeapot"}, "Graphics3D"];{teapot, dm}data = Table[QuantityMagnitude@CityData[c, p], {c, CityData[{Large, "Germany"}]}, {p, {"Longitude", "Latitude", "Elevation"}}]//Select[FreeQ[#, _Missing]&];dm = DelaunayMesh[QuantityMagnitude[data[[All, {1, 2}]]]];nearest = Nearest[Function[{x, y, z}, {x, y} -> z]@@@data];rescale = With[{min = Min[data[[All, 3]]], max = Max[data[[All, 3]]]}, Function[v, Rescale[v, {min, max}]]];Graphics[Table[{ColorData["M10DefaultDensityGradient"]@@Composition[rescale, nearest, Mean]@@p, EdgeForm[Gray], p}, {p, MeshPrimitives[dm, 2]}], Frame -> True, AspectRatio -> 1]使用 ListContourPlot 也可以得到相似的图形:
ListContourPlot[data, Mesh -> All, MeshStyle -> Gray, ColorFunction -> ColorData["M10DefaultDensityGradient"]]pts = RandomReal[1, {100, 2}];ℛ = DelaunayMesh[pts];Show[ℛ, Graphics[Point[pts]]]uifWave = NDSolveValue[{D[u[t, x, y], {t, 2}] - D[u[t, x, y], {x, 2}] - D[u[t, x, y], {y, 2}] == 0, u[0, x, y] == Exp[-5((x - 1.5) ^ 2 + (y - 1.5) ^ 2)], u^(1, 0, 0)[0, x, y] == 0, DirichletCondition[u[t, x, y] == 0, True]}, u, {t, 0, 2π}, {x, y}∈ℛ, Method -> {"EquationSimplification" -> "MassMatrix"}]Plot3D[uifWave[5, x, y], {x, y}∈ℛ, PlotRange -> RegionBounds[ℛ], Boxed -> False, Axes -> False]img = ImageResize[ExampleData[{"TestImage", "Mandrill"}], 216]pts = {{108, 174}, {136, 61}, {49, 142}, {71, 61}, {83, 124}, {165, 145}, {127, 124}, {0, 216}, {0, 4}, {64, 38}, {216, 0}, {216, 216}, {59, 204}, {160, 204}, {59, 182}, {159, 180}, {138, 39}, {100, 23}, {66, 163}, {151, 169}};toPolygons = Function[{img, reg}, Graphics[Table[{RGBColor@ImageValue[img, Mean@@p], p}, {p, MeshPrimitives[reg, "Polygons"]}], ImageSize -> 260]];overlay = Function[reg, Graphics[{Thickness@0.015, MeshPrimitives[reg, "Lines"]}, Background -> White]];DynamicModule[{p = pts}, {LocatorPane[Dynamic@p, Pane[Dynamic@ImageCompose[img, {overlay[DelaunayMesh[p]], 0.25}]], LocatorAutoCreate -> True], Pane[Dynamic@toPolygons[img, DelaunayMesh[p]], ImageSize -> 232, ImageSizeAction -> "ShrinkToFit"]}, SaveDefinitions -> True]属性和关系 (7)
DelaunayMesh 的输出总是全维的 MeshRegion:
DelaunayMesh[RandomReal[1, {10, 2}]]{MeshRegionQ[%], RegionDimension[%]}DelaunayMesh 由一维区间组成:
DelaunayMesh[{{1}, {2}, {3}}]MeshCells[%, RegionDimension[%]]DelaunayMesh[{{0, 0}, {1, 0}, {0, 1}, {1, 1}}]MeshCells[%, RegionDimension[%]]DelaunayMesh[{{0, 0, 0}, {1, 0, 0}, {0, 1, 0}, {0, 0, 1}, {1, 1, 0}}]MeshCells[%, RegionDimension[%]]DelaunayMesh 中每个三角形的外接圆都不含其他点:
ℛ = DelaunayMesh[RandomReal[1, {5, 2}]]circles = Circumsphere@@@Normal@GraphicsComplex[MeshCoordinates[ℛ], MeshCells[ℛ, 2]];Show[HighlightMesh[ℛ, Style[0, PointSize[Large]]], Graphics[{Orange, circles}], PlotRange -> {{0, 1}, {0, 1}}]DelaunayMesh 中每个四面体的外接圆都不含其他点:
ℛ = DelaunayMesh[{{0, 0, 0}, {1, 0, 0}, {0, 1, 0}, {0, 0, 1}, {0, 0, -1}}]spheres = Circumsphere@@@Normal@GraphicsComplex[MeshCoordinates[ℛ], MeshCells[ℛ, 3]];Show[HighlightMesh[ℛ, {Style[0, PointSize[Medium]], Style[2, Opacity[0.5]]}], Graphics3D[{Opacity[0.2], Orange, spheres}], PlotRange -> RegionBounds[ℛ], PlotRangePadding -> 0.5]ConvexHullMesh 实际上是 DelaunayMesh 的 BoundaryMesh:
pts = RandomReal[1, {5, 2}];{BoundaryMesh[DelaunayMesh[pts]], ConvexHullMesh[pts]}使用 TriangulateMesh 对一个区域重新三角化:
pts = RandomReal[1, {5, 2}];DelaunayMesh[pts]TriangulateMesh[%]VoronoiMesh 是 DelaunayMesh 的对偶:
pts = RandomReal[1, {10, 2}];delaunay = HighlightMesh[DelaunayMesh[pts], {Style[0, Black], Style[1, Orange], Style[2, Opacity[0.5]]}];voronoi = HighlightMesh[VoronoiMesh[pts], {Style[1, Green], Style[2, Opacity[0.2]]}];Show[delaunay, voronoi]文本
Wolfram Research (2014),DelaunayMesh,Wolfram 语言函数,https://reference.wolfram.com/language/ref/DelaunayMesh.html (更新于 2015 年).
CMS
Wolfram 语言. 2014. "DelaunayMesh." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2015. https://reference.wolfram.com/language/ref/DelaunayMesh.html.
APA
Wolfram 语言. (2014). DelaunayMesh. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/DelaunayMesh.html 年
BibTeX
@misc{reference.wolfram_2026_delaunaymesh, author="Wolfram Research", title="{DelaunayMesh}", year="2015", howpublished="\url{https://reference.wolfram.com/language/ref/DelaunayMesh.html}", note=[Accessed: 16-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_delaunaymesh, organization={Wolfram Research}, title={DelaunayMesh}, year={2015}, url={https://reference.wolfram.com/language/ref/DelaunayMesh.html}, note=[Accessed: 16-September-2026]}