我有两个对象:球体和物体。它是我用表面重建创建的一个对象 - 所以我们不知道对象的方程。当对象和球体相交时,我想知道球体上的交叉点。如果我们有一个球体和一个圆柱体,我们可以求解方程并找出面积和所有这些,但这里的问题是物体不均匀。
有没有办法找出球体上的交叉点或区域?
答案 0 :(得分:0)
我首先找到三角形与球体的交点。首先找到每个三角形的平面和球体的交点,它给出一个圆。然后使用线/圆测试在2D中找到圆形的交叉点和三角形边。结果将是许多弧,我猜你可以用线近似。在不知道最终目标的情况下,我不确定从哪里开始。
如果是你所追求的表面区域,也许数值方法会更好。我用点覆盖球体并计算非均匀物体内的数字。要查找某个点是否在内部,可能会向外追踪并计算与曲面的交点(如果它是奇数,则该点在内部)。如果需要,可以使用模板缓冲区(类似于模板阴影)。
如果你想要交叉量的快速谷歌搜索给出“雕刻”,一个基于网格的CSG库。
答案 1 :(得分:0)
从三角形与球体开始将为您提供交点。
您可以获取每个曲面的交点弧,并将它们组合在一起围绕球体制作围栏。理想情况下,您重建的对象将位于winged-edge format中,因此您可以从一个栅栏段步进到下一个栅栏段,但是对于重建曲面,我猜您可能需要应用一些稍微模糊的逻辑。
您可以通过考虑围栏中的表面法线来确定每个围栏的哪一侧在重建对象内部以及哪一侧外出。
然后,您可以沿着栅栏切割球体,并将内部位添加到显示屏。
对于事物的另一面,你可以完全移除球体内的任何三角形并切割相交的三角形。