Python convex hull with scipy.spatial.Delaunay, how to eleminate points inside the hull?
12,859
The convex hull is a subgraph of the Delaunay triangulation.
So you might just use scipy.spatial.ConvexHull()
, e. g.
from scipy.spatial import ConvexHull
cv = ConvexHull(pointList)
hull_points = cv.vertices
# the vertices of the convex hull
set(range(len(pointList))).difference(ch.vertices)
# the vertices inside the convex hull
Comparison scipy.spatial.Delaunay
and scipy.spatial.ConvexHull
(2D)
Comments
-
adrienlucca.net almost 2 years
I have a list of 3D points in a np.array called
pointsList
, values arefloat
:[[1., 2., 10.], [2., 0., 1.], [3., 6., 9.], [1., 1., 1.], [2., 2., 2.], [10., 0., 10.], [0., 10., 5.], ... etc.
This code makes a Delaunay triangulation of the cloud of points:
import numpy as np import scipy.spatial tri = scipy.spatial.Delaunay(pointsList) # Delaunay triangulation indices = tri.simplices # indices of vertices vertices = points[indices] # the vertices for each tetrahedron
However, before that triangulation step, I'd like to remove from my list all the points that are inside of the convex hull
A solution would be to create a new
np.array
namedshortlist
, and store them there.But what function in
scipy
(or any other solution), will do that?How can I program this operation?
Thank you