计算polydata相交
使用vtk.vtkBooleanOperationPolyDataFilter() 可以进行求交,差,并操作
并且可以填充交面,不会形成一个缺口
- vtkBooleanOperationPolyDataFilter
计算由两个输入表面定义的体积计算出的并集、交集或差集的边界。
这两个表面不需要是流形的,但如果不是,可能会得到意想不到的结果。结果表面可在过滤器的第一个输出中使用。第二个输出包含一组折线,表示两个输入表面之间的交集。
# 求交
boolean_operation = vtk.vtkBooleanOperationPolyDataFilter()
boolean_operation.SetOperationToIntersection()
# 求并
boolean_operation = vtk.vtkBooleanOperationPolyDataFilter()
boolean_operation.SetOperationToUnion()
# 求差
boolean_operation = vtk.vtkBooleanOperationPolyDataFilter()
boolean_operation.SetOperationToDifference()
在使用vtkBooleanOperationPolyDataFilter 之前,最好将数据通过
vtkTriangleFilter (三角面片化)和 vtkCleanPolyData (清除重复点)处理
举例,求交面
intersec = vtk.vtkBooleanOperationPolyDataFilter()
intersec.SetOperationToIntersection()
intersec.SetInputData(0, polydata1)
intersec.SetInputData(1, polydata2)
intersec.Update()
intersec_surface = intersec.GetOutput()
相交面: