Python 如何确定不完全三面网格的凸性?

Python 如何确定不完全三面网格的凸性?,python,trimesh,Python,Trimesh,如何确定不完整(即非水密)三角网格的凸度?即使对于不完全网格,凸性也有很好的定义:如果不完全trimesh T可以完成为凸trimesh,则T是凸的。(我使用术语“不完整”而不是“非水密”是因为a。在我的例子中,它是现有trimesh和b的子集。因为“非水密”包括小错误/浮点不准确的情况,而我谈论的是三角形的缺失面片,所以我认为“不完整”更具吸引力。) 我试着简单地使用Trimesh.is_凸,但对于不完整的Trimesh,它总是返回False。我考虑过确定点集的凸包,并检查它是否具有与不完全t

如何确定不完整(即非水密)三角网格的凸度?即使对于不完全网格,凸性也有很好的定义:如果不完全trimesh T可以完成为凸trimesh,则T是凸的。(我使用术语“不完整”而不是“非水密”是因为a。在我的例子中,它是现有trimesh和b的子集。因为“非水密”包括小错误/浮点不准确的情况,而我谈论的是三角形的缺失面片,所以我认为“不完整”更具吸引力。)

我试着简单地使用
Trimesh.is_凸
,但对于不完整的Trimesh,它总是返回
False
。我考虑过确定点集的凸包,并检查它是否具有与不完全trimesh相同数量的点,但这太松散了。(作为2D示例,请考虑字母Z:它是一个不完整的多边形,根据上述定义,它是非凸的。但凸壳的点与原始点相同。)


我正在考虑一种方法,计算不完全三角网格中所有三角形的散列,以及凸壳中所有三角形的散列,然后检查是否包含。但是在概念上有更简单/更有效的方法吗?

一种解决方案——不是特别快,也不是特别优雅——是确定不完整网格T的凸包,然后计算T的所有顶点和T的所有面质心到凸包的距离。如果所有距离(在浮点精度范围内)均为0,则T是凸的。

一种解决方案-不是特别快,也不是特别优雅-是确定不完整网格T的凸包,然后计算T的所有顶点和T的所有面质心到凸包的距离。如果所有距离(在浮点精度范围内)均为0,则T是凸的。

如果不完整的trimesh T可以完成为凸trimesh,则T是凸的。-这听起来不错,但从我的头脑中,它至少提出了两个问题:1)你能完成这样的任务吗?2) 有多种方法可以完成这样的网格,有凸的,也有凹的?@tevemadar Re 1)我不想构造它,这只是为了定义。即便如此,我还是很难找到一个例子,证明凸面外壳并不是完美的。2) 当然,只要洞足够大。我的定义只要求T是复数的一个复数完成。如果不完全三面网格T可以完成为凸三面网格,则T是凸的。-这听起来不错,但从我的头脑中,它至少提出了两个问题:1)你能完成这样的任务吗?2) 有多种方法可以完成这样的网格,有凸的,也有凹的?@tevemadar Re 1)我不想构造它,这只是为了定义。即便如此,我还是很难找到一个例子,证明凸面外壳并不是完美的。2) 当然,只要洞足够大。我的定义只要求一个复杂的完成,T才是复杂的。