2014-02-12 10 views
6

나는 값이 float 있으며, pointsList라는 np.array에 3D 점의 목록을 가지고 : 전에,scipy.spatial.Delaunay가있는 파이썬 볼록 선체, 선체 내부의 포인트를 어떻게 줄입니까?

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 

그러나 :

[[1., 2., 10.], 
[2., 0., 1.], 
[3., 6., 9.], 
[1., 1., 1.], 
[2., 2., 2.], 
[10., 0., 10.], 
[0., 10., 5.], 
... etc. 

이 코드는 포인트 클라우드의 들로네 삼각 분할한다 그 삼각 측량 단계, 나는 볼록 선체의 안에있는 모든 지점 내 목록에서 을 제거하고 싶습니다

,

해결책은 shortlist이라는 새로운 np.array을 만들고 거기에 저장하는 것입니다.

그러나 scipy (또는 다른 해결책)의 기능은 그렇게 할 것입니까?

이 작업을 어떻게 프로그래밍 할 수 있습니까?

는 볼록 선체는 델 로니 삼각 측량의 서브 그래프 당신

답변

14

감사드립니다.

scipy.spatial.ConvexHull(), e. 지. 어떻게 그 이미지를 플롯 않았다

enter image description here

+1

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 

비교 scipy.spatial.Delaunayscipy.spatial.ConvexHull (2D)? – TripShock

+0

@TripShock 두 이미지입니다. matplotlib에 산포 데이터 (scatter plot)와 연결된 꼭지점의 데이터 (선 그림)를 보냈습니다. 링크 된 정점은'simplices' 속성의 인덱스를 통해 얻을 수 있습니다. – embert

+0

@embert 해답을 주셔서 감사합니다. 그러나 어떻게 ConvexHull 연산을 수행 한 후에 Delaunay 삼각 측량을 계산할 수 있습니까? –