ConvexHullMesh[{p1,p2,…}]
点 p1, p2, …からの凸包を表すBoundaryMeshRegionを与える.
ConvexHullMesh[mreg]
メッシュ領域 mreg の凸包を与える.
ConvexHullMesh
ConvexHullMesh[{p1,p2,…}]
点 p1, p2, …からの凸包を表すBoundaryMeshRegionを与える.
ConvexHullMesh[mreg]
メッシュ領域 mreg の凸包を与える.
詳細とオプション
- ConvexHullMeshは,凸包絡あるいは凸包としても知られている.
- 凸包メッシュは,点を piを含む最小の凸集合である.
- 凸包の境界は,1Dの点,2Dの線分,3Dの凸多角形からなる.
- ConvexHullMeshはBoundaryMeshRegionと同じオプションを取る.
例題
すべて開く すべて閉じる例 (3)
pts = RandomReal[{-1, 1}, {5, 1}];ConvexHullMesh[pts]Show[%, Show[%, Graphics[Point[Append[#, 0]& /@ pts]]]]pts = RandomReal[{-1, 1}, {50, 2}];ConvexHullMesh[pts]Show[%, Graphics[Point[pts]]]pts = RandomReal[{-1, 1}, {50, 3}];ConvexHullMesh[pts]Show[HighlightMesh[%, Style[2, Opacity[0.5]]], Graphics3D[Point[pts]]]スコープ (3)
pts = RandomReal[{-1, 1}, {50, 1}];ℛ = ConvexHullMesh[pts]{RegionQ[ℛ], BoundaryMeshRegionQ[ℛ]}{BoundedRegionQ[ℛ], RegionBounds[ℛ]}{RegionDimension[ℛ], RegionEmbeddingDimension[ℛ]}{RegionMeasure[ℛ], RegionCentroid[ℛ]}RegionMember[ℛ, {0}]{RegionDistance[ℛ, {2}], RegionNearest[ℛ, {2}]}pts = RandomReal[{-1, 1}, {50, 2}];ℛ = ConvexHullMesh[pts]{RegionQ[ℛ], BoundaryMeshRegionQ[ℛ]}{BoundedRegionQ[ℛ], RegionBounds[ℛ]}{RegionDimension[ℛ], RegionEmbeddingDimension[ℛ]}{RegionMeasure[ℛ], RegionCentroid[ℛ]}RegionMember[ℛ, {0, 0}]{RegionDistance[ℛ, {2, 2}], RegionNearest[ℛ, {2, 2}]}pts = RandomReal[{-1, 1}, {50, 3}];ℛ = ConvexHullMesh[pts]{RegionQ[ℛ], BoundaryMeshRegionQ[ℛ]}{BoundedRegionQ[ℛ], RegionBounds[ℛ]}{RegionDimension[ℛ], RegionEmbeddingDimension[ℛ]}{RegionMeasure[ℛ], RegionCentroid[ℛ]}Area[RegionBoundary[ℛ]]RegionMember[ℛ, {0, 0, 0}]{RegionDistance[ℛ, {2, 2, 2}], RegionNearest[ℛ, {2, 2, 2}]}オプション (13)
MeshCellHighlight (3)
MeshCellHighlightを使ってConvexHullMeshの各部分をハイライトすることができる:
ConvexHullMesh[{{0, 0}, {1, 0}, {0, 1}, {1, 1}}, MeshCellHighlight -> {{1, All} -> Orange, {0, All} -> Green}]面を透過的にすることで,3DConvexHullMeshの内部構造を見ることができる:
ConvexHullMesh[{{0, 0, 0}, {1, 0, 0}, {0, 1, 0}, {0, 0, 1}, {1, 1, 0}}, MeshCellHighlight -> {{2, All} -> Opacity[0.5, Orange]}]ConvexHullMesh[{{0, 0}, {1, 0}, {0, 1}, {1, 1}}, MeshCellHighlight -> {{1, 1} -> {Thick, Orange}, {1, 2} -> {Dashed, Green}}]ConvexHullMesh[{{0, 0}, {1, 0}, {0, 1}, {1, 1}}, MeshCellHighlight -> {Line[{1, 2}] -> {Thick, Orange}, Line[{2, 4}] -> {Dashed, Green}}]MeshCellLabel (2)
MeshCellLabelを使ってConvexHullMeshの各部分にラベルを付けることができる:
ConvexHullMesh[{{0, 0}, {1, 0}, {0, 1}, {1, 1}}, MeshCellLabel -> {0 -> "Index"}]ConvexHullMesh[{{0, 0}, {1, 0}, {0, 1}, {1, 1}}, MeshCellLabel -> {{1, 1} -> "x", {1, 2} -> "y"}]ConvexHullMesh[{{0, 0}, {1, 0}, {0, 1}, {1, 1}}, MeshCellLabel -> {Line[{1, 2}] -> "x", Line[{2, 4}] -> "y"}]MeshCellMarker (1)
MeshCellMarkerを使ってConvexHullMeshの各部分に値を割り当てることができる:
ConvexHullMesh[{{0, 0}, {1, 0}, {0, 1}, {1, 1}}, MeshCellMarker -> {{0, 1} -> 1, {0, 2} -> 2, {0, 3} -> 3, {0, 4} -> 4}]MeshCellLabelを使ってマーカーを示す:
ConvexHullMesh[{{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を使ってConvexHullMeshの各部分についての関数を指定することができる:
ConvexHullMesh[{{0, 0}, {1, 0}, {0, 1}, {1, 1}}, MeshCellShapeFunction -> {0 -> (Disk[#, .1]&)}]ConvexHullMesh[{{0, 0}, {1, 0}, {0, 1}, {1, 1}}, MeshCellShapeFunction -> {{0, 1} -> (Disk[#, .1]&), {0, 2} -> (Disk[#, {.1, .2}]&)}]ConvexHullMesh[{{0, 0}, {1, 0}, {0, 1}, {1, 1}}, MeshCellShapeFunction -> {Point[1] -> (Disk[#, .1]&), Point[2] -> (Disk[#, {.1, .2}]&)}]MeshCellStyle (3)
MeshCellStyleを使ってConvexHullMeshの各部分のスタイルを指定することができる:
ConvexHullMesh[{{0, 0}, {1, 0}, {0, 1}, {1, 1}}, MeshCellStyle -> {{1, All} -> Orange, {0, All} -> Green}]面を透過的にすることで,3D ConvexHullMeshの内部構造を見ることができる:
ConvexHullMesh[{{0, 0, 0}, {1, 0, 0}, {0, 1, 0}, {0, 0, 1}, {1, 1, 0}}, MeshCellStyle -> {{2, All} -> Opacity[0.5, Orange]}]ConvexHullMesh[{{0, 0}, {1, 0}, {0, 1}, {1, 1}}, MeshCellStyle -> {{1, 1} -> {Thick, Orange}, {1, 2} -> {Dashed, Green}}]ConvexHullMesh[{{0, 0}, {1, 0}, {0, 1}, {1, 1}}, MeshCellStyle -> {Line[{1, 2}] -> {Thick, Orange}, Line[{2, 4}] -> {Dashed, Green}}]アプリケーション (2)
ℛ = DiscretizeGraphics[PolyhedronData["TetrahedronFiveCompound"]]ConvexHullMesh[MeshCoordinates[ℛ]]cowPoints = ExampleData[{"Geometry3D", "Cow"}, "VertexData"];cowvexHull = ConvexHullMesh[cowPoints];cow = ExampleData[{"Geometry3D", "Cow"}, "Graphics3D"];Show[HighlightMesh[cowvexHull, {Style[1, {Brown}], Style[2, Opacity[0.3, Brown]]}], cow]特性と関係 (3)
ConvexHullMeshは,事実上,DelaunayMeshのBoundaryMeshである:
pts = RandomReal[1, {5, 2}];{BoundaryMesh[DelaunayMesh[pts]], ConvexHullMesh[pts]}pts = RandomReal[{-1, 1}, {50, 3}];{BoundaryMesh[DelaunayMesh[pts]], ConvexHullMesh[pts]}DelaunayMeshを使って,凸包内部のドロネー(Delaunay) 三角形分割を得る:
DelaunayMesh[RandomReal[1, {25, 2}]]TriangulateMeshを使って内部の三角形分割を制御する:
ℛ = ConvexHullMesh[RandomReal[1, {25, 2}]];{TriangulateMesh[ℛ], TriangulateMesh[ℛ, MaxCellMeasure -> ∞]}考えられる問題 (1)
ConvexHullMeshは全次元のメッシュ領域しか返さない:
ConvexHullMesh[{{0., 0.}, {1., 0.}}]ConvexHullRegionを使って凸包を得る:
ConvexHullRegion[{{0., 0.}, {1., 0.}}]関連するガイド
-
▪
- メッシュベースの幾何学的領域 ▪
- 3Dプリント ▪
- 幾何学的計算
テキスト
Wolfram Research (2014), ConvexHullMesh, Wolfram言語関数, https://reference.wolfram.com/language/ref/ConvexHullMesh.html (2020年に更新).
CMS
Wolfram Language. 2014. "ConvexHullMesh." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2020. https://reference.wolfram.com/language/ref/ConvexHullMesh.html.
APA
Wolfram Language. (2014). ConvexHullMesh. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/ConvexHullMesh.html
BibTeX
@misc{reference.wolfram_2026_convexhullmesh, author="Wolfram Research", title="{ConvexHullMesh}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/ConvexHullMesh.html}", note=[Accessed: 15-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_convexhullmesh, organization={Wolfram Research}, title={ConvexHullMesh}, year={2020}, url={https://reference.wolfram.com/language/ref/ConvexHullMesh.html}, note=[Accessed: 15-September-2026]}