我在Windows上使用Anaconda 64位,VTK版本5.10.1和MayaVi版本4.3.1。vtkSphere::ComputeBoundingSphere
可从VTK的Python绑定?我有一组三维点我想要最小的边界球。据我所知,vtkSphere::ComputeBoundingSphere
在c++中做到了这一点,但我在VTK的Python绑定中找不到这个函数。
我发现vtk.vtkSphere
类和help(vtk.vtkSphere)
的输出提到"其他方法可用于球体相关的计算,例如计算一组点或一组球体的边界球体"。那么,这个函数在哪里呢?
我仍然没有发现VTK的Python绑定暴露vtkSphere::ComputeBoundingSphere
的证据,但我已经找到了CGAL库,它的Python绑定确实暴露了n维边界球计算。c++函数文档在http://doc.cgal.org/latest/Bounding_volumes/classCGAL_1_1Min__sphere__d.html.
我在http://cgal-python.gforge.inria.fr/上使用了过时的绑定(因为在http://www.lfd.uci.edu/~gohlke/pythonlibs/#cgal-python上有一个Windows安装程序),但是如果有人想尝试一下,在https://code.google.com/p/cgal-bindings/上可以使用较新的绑定。
假设您有一个名为verts
的顶点列表,下面的代码构造一个Min_sphere_3对象,从中可以获得边界球的中心和半径。
import CGAL
min_sphere = CGAL.Geometric_Optimisation.Min_sphere_3()
for pt in verts:
min_sphere.insert(CGAL.Point_3(pt[0], pt[1], pt[2]))
# Sphere properties: min_sphere.center(), min_sphere.squared_radius().