簡體   English   中英

如何在多個多數據中獲取點

[英]How to get points inside multiple polydata

我使用vtkAppendPolyData將多個多數據合並為一個多數據,並使用vtkSelectEnclosedPoints獲取多數據內部的點。

這是使用tvtk.api的python代碼:

from tvtk.api import tvtk

# create some random points

points = np.random.randn(9999, 3)
pd_points = tvtk.PolyData()
pd_points.points = points
pd_points.verts = np.arange(len(points)).reshape(-1, 1)

# create two polydata

cube1 = tvtk.CubeSource()
cube1.update()
cube2 = tvtk.CubeSource()
cube2.center = (0.5, 0, 0)
cube2.update()

# merge the two polydata into one:

append = tvtk.AppendPolyData()
append.add_input_data(cube1.output)
append.add_input_data(cube2.output)
append.update()

# select points inside polydata

sep = tvtk.SelectEnclosedPoints()
sep.set_input_data(pd_points)
sep.set_surface_data(append.output)
sep.update()


# remove outside points

tp = tvtk.ThresholdPoints()
tp.threshold_by_upper(0.5)
tp.set_input_data(sep.output)
tp.update()
res = tp.output
res.point_data.remove_array(0)

結果如下:

在此處輸入圖片說明

如您所見,兩個多邊形中的點都不包括在內。

我不想使用for循環,因為我有很多多邊形數據來裁剪數據。

您創建的曲面不是流形,並且vtkSelectEnclosedPoints僅適用於流形。 嘗試使用vtkBooleanOperationPolyDataFilterSetOperationToUnion()而不是vtkAppendPolyData

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM