Python 如何确定和提取三维对象的曲面点?

Python 如何确定和提取三维对象的曲面点?,python,3d,Python,3d,我有一个三维物体,它不是空心的,所以有很多三维点。您如何确定这样一个对象(特别是具有非常曲线的曲面)的哪些点位于曲面上?我知道如何提取它们,但我需要一个类似于libraryUNK.surfacePoint的函数。。。我不知道 或者更好地理解什么是曲面点,我也不知道,也不能(为我自己)给出任何正确的定义 我知道我可以做三角测量得到曲面。但我不知道下一步该怎么做,因为我现在只剩下一组三角形,其中一些在表面上,一些没有。。。但是,我还没有定义如何考虑表面上的和什么不是…… ,在我看来,你想计算你的3D

我有一个三维物体,它不是空心的,所以有很多三维点。您如何确定这样一个对象(特别是具有非常曲线的曲面)的哪些点位于曲面上?我知道如何提取它们,但我需要一个类似于
libraryUNK.surfacePoint
的函数。。。我不知道

或者更好地理解什么是曲面点,我也不知道,也不能(为我自己)给出任何正确的定义


我知道我可以做三角测量得到曲面。但我不知道下一步该怎么做,因为我现在只剩下一组三角形,其中一些在表面上,一些没有。。。但是,我还没有定义如何考虑表面上的和什么不是……

,在我看来,你想计算你的3D点云的凸包。

这不是一个容易的问题,但有很多解决方案(和算法)可以做到这一点。其中一种效率称为“凸包”。在scipy.spatial中有一个凸函数

下面是一个示例的详细信息(2D,但它适用于任何维度)

此函数使用QHull库

QHull页面上有大量资源。还有一个Wikipedia页面(同样,这不是计算凸包的唯一方法,您可能想尝试其他方法):


编辑:重读问题后,你的音量似乎不是凸的。不幸的是,如果不是,如果没有关于体积或点云的附加信息,就无法判断点是在体积内还是在曲面中。

这似乎很接近。但我对提取你编辑的整个绿色曲面感兴趣。那么如何添加半径呢?凹面外壳的问题更难解决。有不同的算法可用,例如Alpha形状(参见示例)或C外壳。。。