ConcaveHullMesh[{p1,p2,…}]
gives the concave hull mesh from the points p1,p2,….
ConcaveHullMesh[{p1,p2,…},α]
gives the concave hull mesh of the specified parameter α.
ConcaveHullMesh[{p1,p2,…},α,d]
gives the concave hull mesh of cells of dimension d.
ConcaveHullMesh
ConcaveHullMesh[{p1,p2,…}]
gives the concave hull mesh from the points p1,p2,….
ConcaveHullMesh[{p1,p2,…},α]
gives the concave hull mesh of the specified parameter α.
ConcaveHullMesh[{p1,p2,…},α,d]
gives the concave hull mesh of cells of dimension d.
Details and Options
- ConcaveHullMesh is also known as α‐shapes.
- A concave hull mesh is typically used to construct regions from points as well as a method of point clustering.
- ConcaveHullMesh[{p1,p2,…},α,d] is generated from DelaunayMesh[{p1,p2,…}] by selecting cells of dimension d that are contained in a ball of radius at most α without including other points pi.
- ConcaveHullMesh[{p1,p2,…},α] selects cells of dimension d where d is the embedding dimension of the points pi.
- ConcaveHullMesh takes the same options as MeshRegion.
Examples
open all close allBasic Examples (2)
A concave hull mesh of points randomly sampled from an Annulus:
ConcaveHullMesh[RandomPoint[Annulus[], 2000]]Area[%]Reconstruct a 3D model from its vertices:
ConcaveHullMesh[MeshCoordinates[ResourceData["Horse"]], Automatic, 2]Scope (6)
Basic Uses (3)
ConcaveHullMesh[{{0}, {1}, {3}, {4}}]ConcaveHullMesh[{{0, 0}, {0, 1}, {-1, (1/3)}, {-1, (2/3)}, {-2, 0}, {-2, 1}}]ConcaveHullMesh[{{0, 0, 0}, {0, 1, 0}, {0, 0, 1}, {0, 1, 1}, {1, 1 / 3, 1 / 3}, {1, 2 / 3, 1 / 3}, {1, 1 / 3, 2 / 3}, {1, 2 / 3, 2 / 3}, {2, 0, 0}, {2, 1, 0}, {2, 0, 1}, {2, 1, 1}}]Specifications (3)
ConcaveHullMesh takes a set of points:
pts = {{-1, -1, -1}, {-1, -1, 1}, {-1, 1, -1}, {-1, 1, 1}, {1, -1, -1}, {1, -1, 1}, {1, 1, -1}, {1, 1, 1}};ConcaveHullMesh[pts]Use a Point list:
ConcaveHullMesh[Point[pts]]Specify the maximum radius of simplices:
ConcaveHullMesh[pts, #]& /@ {0.05, 0.4, 1.0}Specify the dimension of simplices:
pts = RandomPoint[Ball[], 300];ConcaveHullMesh[pts, 0.2, #] & /@ {1, 2, 3}RegionDimension /@ %Use All to get the full
-complex for the point set:
ConcaveHullMesh[pts, 0.2, All]Applications (7)
Curve Reconstruction (1)
ConcaveHullMesh can reconstruct 1D curves in 1D:
pts = List /@ Range[10];
ConcaveHullMesh[pts]pts = Table[{t, Cos[t]}, {t, 0, 4Pi, Pi / 20}];
ConcaveHullMesh[pts, Automatic, 1]pts = Table[{t, Cos[t], Sin[t]}, {t, 0, 8Pi, Pi / 20}];
ConcaveHullMesh[pts, Automatic, 1]Surface Reconstruction (4)
ConcaveHullMesh can reconstruct surfaces in 1D:
pts = RandomPoint[RegionUnion[Ball[{-2}], Ball[{2}]], 30];
ConcaveHullMesh[pts, 1, 0]RegionMeasure[%]pts = RandomPoint[RegionBoundary[Annulus[]], 500];
ConcaveHullMesh[pts, 0.1, 1]ArcLength[%]pts = RandomPoint[RegionBoundary[DiscretizeRegion[Torus[]]], 1000];
ConcaveHullMesh[pts, Automatic, 2]Area[%]ConcaveHullMesh can reconstruct 3D models:
ConcaveHullMesh[MeshCoordinates[ResourceData[#]], Automatic, 2]& /@ {"Stanford Bunny", "Horse", "Cow"}ConcaveHullMesh can approximate parametric surfaces:
pts = Flatten[#, 1]&@Table[{...}, {θ, 0.001, π, 0.05}, {ϕ, 0.001, 2 π, 0.05}];ConcaveHullMesh[pts, Automatic, 2]ConcaveHullMesh can reconstruct non-orientable surfaces:
pts = Flatten[#, 1]&@Table[{Cos[t] (3 + r Cos[t / 2]), Sin[t] (3 + r Cos[t / 2]), r Sin[t / 2]}, {r, -1, 1, 0.4}, {t, 0, 2 Pi, 0.1}];ConcaveHullMesh[pts]Solid Reconstruction (1)
ConcaveHullMesh can reconstruct solids in 1D:
pts = RandomPoint[Ball[{0}], 10];
ConcaveHullMesh[pts, 1]ArcLength[%]pts = RandomPoint[Annulus[], 500];
ConcaveHullMesh[pts, 0.3]Area[%]pts = RandomPoint[DiscretizeRegion[Torus[]], 1000];
ConcaveHullMesh[pts, 0.3]Volume[%]Point Clustering (1)
Generate normally distributed data and visualize it:
SeedRandom[123];
Dis = MixtureDistribution[...];
data = RandomVariate[Dis, 500];
ListPlot[data]Find the concave hull of the data:
ConcaveHullMesh[data, Automatic, All]Use ConnectedMeshComponents to separate points into clusters:
ConnectedMeshComponents[%]Visualize the separate clusters:
ListPlot[MeshCoordinates[#]& /@ %]Properties & Relations (4)
ConcaveHullMesh gives a MeshRegion of the same dimension as the embedding dimension of the point set:
pts = RandomPoint[Ball[], 100];RegionDimension[ConcaveHullMesh[pts]]ConvexHullMesh is equivalent to ConcaveHullMesh with a sufficiently large α:
pts = ExampleData[{"Geometry3D", "Beethoven"}, "VertexData"];ConcaveHullMesh[pts, Infinity]The convex hull is a full-dimensional region:
ConvexHullMesh[pts]RegionDimension[{%%, %}]Concave hull meshes may have multiple connected components:
ℛ = RandomPoint[RegionUnion[Ball[{0, 0, 0}, .2], FilledTorus[]], 1000];ConcaveHullMesh[ℛ]ConvexHullMesh[ℛ]ConcaveHullMesh gives a subset of cells from the DelaunayMesh:
pts = RandomPoint[Annulus[], 100];{ConcaveHullMesh[pts], DelaunayMesh[pts]}Interactive Examples (1)
Create an interactive example with draggable points to view the concave hull in real time:
DynamicModule[{pts = Join[CirclePoints[4], CirclePoints[{0.5, Pi / 2}, 4]]},
LocatorPane[Dynamic[pts], Dynamic[Graphics[{Locator[Dynamic[#]]& /@ pts, LightGray, EdgeForm[Gray], ConcaveHullMesh[pts]}, PlotRange -> 1]], LocatorAutoCreate -> True]]Related Guides
Text
Wolfram Research (2021), ConcaveHullMesh, Wolfram Language function, https://reference.wolfram.com/language/ref/ConcaveHullMesh.html (updated 2022).
CMS
Wolfram Language. 2021. "ConcaveHullMesh." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2022. https://reference.wolfram.com/language/ref/ConcaveHullMesh.html.
APA
Wolfram Language. (2021). ConcaveHullMesh. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/ConcaveHullMesh.html
BibTeX
@misc{reference.wolfram_2026_concavehullmesh, author="Wolfram Research", title="{ConcaveHullMesh}", year="2022", howpublished="\url{https://reference.wolfram.com/language/ref/ConcaveHullMesh.html}", note=[Accessed: 13-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_concavehullmesh, organization={Wolfram Research}, title={ConcaveHullMesh}, year={2022}, url={https://reference.wolfram.com/language/ref/ConcaveHullMesh.html}, note=[Accessed: 13-June-2026]}