Вы можете проверить пересечение с помощью vtkInterface
:
import numpy as np
import vtkInterface as vtki
# create a test sphere
sphere = vtki.Sphere(radius=1.0)
# generate a cylinder inside the sphere and change its height
# and test for an intersection
for height in np.linspace(1, 3, 50):
cylinder = vtki.Cylinder([0, 0, 0], [1, 0, 0],
0.2, height).TriFilter()
# test intersection
cut_mesh = cylinder.BooleanCut(sphere)
# cut_mesh will be empty when there's no intersection
if cut_mesh.GetNumberOfPoints():
break
plotter = vtki.PlotClass()
plotter.AddMesh(sphere, style='wireframe')
plotter.AddMesh(cylinder, 'b', opacity=0.2, showedges=False)
plotter.AddMesh(cut_mesh, 'r', showedges=False)
plotter.Plot()
Это пересекается, когда цилиндр имеет высоту 2,11, и создает следующий график:
Я видел, что у вас возникли проблемы с установкой vtkInterface для Mac OS.С тех пор я обновил источник и загрузил 0.11.3 в PyPi.Пожалуйста, переустановите с:
pip install vtkInterface --upgrade