0

我有两个对象:一个球体和一个对象。它是我使用表面重建创建的对象 - 所以我们不知道对象的方程。我想知道物体和球体相交时球体上的交点。如果我们有一个球体和一个圆柱体,我们可以解方程并计算出面积等等,但这里的问题是物体不均匀。

有没有办法找出球体上的相交点或区域?

4

2 回答 2

0

从三角形与球体开始会给你交点。

您可以使用每个曲面的相交弧并将它们组合起来以在球体周围制作栅栏。理想情况下,您重建的对象将采用翼边格式,因此您可以从一个栅栏段跨到下一个栅栏段,但是对于重建的表面,我想您可能需要应用一些稍微模糊的逻辑。

您可以通过考虑沿栅栏的表面法线来确定每个栅栏的哪一侧在重建对象内以及哪一侧在外面。

然后,您可以沿着栅栏切割球体并将内部位添加到显示中。

另一方面,您可以完全移除球体内部的任何三角形并切割相交的三角形。

于 2013-08-23T20:57:14.453 回答
0

我首先要找到三角形与球体的交点。首先找到每个三角形的平面和球体的交点,得到一个圆。然后使用线/圆测试在 2D 中找到圆与三角形边缘的交点。结果将是许多弧线,我猜你可以用线来近似。在不知道最终目标的情况下,我不确定从这里去哪里。

如果它是你所追求的表面积,也许数值方法会更好。我会用点覆盖球体并计算非均匀对象内的数字。要确定一个点是否在内部,可能会向外追踪并计算与表面的交点(如果是奇数,则该点在内部)。如果需要,您可以为此使用模板缓冲区(类似于模板阴影)。

如果你想要交集的体积,谷歌快速搜索会给出“雕刻”,一个基于网格的 CSG 库。

于 2013-08-23T19:55:12.403 回答