Floating point 体素三角形相交的保守AABB

Floating point 体素三角形相交的保守AABB,floating-point,geometry,rounding-error,interval-arithmetic,Floating Point,Geometry,Rounding Error,Interval Arithmetic,我试图解决的问题是为三角形和立方体的交点生成AABB。在2D中,所需的体积为绿色正方形,如下所示: 输入点和输出边界为IEEE浮点 我目前使用浮点运算的方法是将三角形剪裁到体素的每个面上,并绑定生成的多边形。但是,使用浮点表示交点不精确,因此可能会出现结果AABB未完全绑定交点区域的情况。我需要一个保守的界限 我研究了使用区间算法进行剪辑,但存在两个潜在问题: 对于运营链而言,间隔时间可能会变大 如果条件依赖于区间的分支是一团乱,结果可能是不确定的,这意味着两种可能性都需要计算。例如,如果(

我试图解决的问题是为三角形和立方体的交点生成AABB。在2D中,所需的体积为绿色正方形,如下所示:

输入点和输出边界为IEEE浮点

我目前使用浮点运算的方法是将三角形剪裁到体素的每个面上,并绑定生成的多边形。但是,使用浮点表示交点不精确,因此可能会出现结果AABB未完全绑定交点区域的情况。我需要一个保守的界限

我研究了使用区间算法进行剪辑,但存在两个潜在问题:

  • 对于运营链而言,间隔时间可能会变大
  • 如果条件依赖于区间的分支是一团乱,结果可能是不确定的,这意味着两种可能性都需要计算。例如,如果(线穿过平面)
有没有更整洁的方法? 也许可以用某种方法来计算所需的ε来抵消最终结果?临时计算只是为了计算double并将最终浮点结果偏移1ULP,希望double数学不会累积超过28位的错误。如果我能证明这一点就好了

有理算术可能是另一种选择,但我看不出当输入可以跨越整个浮点范围时,如何保证有足够的位

有什么建议吗?
提前感谢。

体素大小应该是所需精度的重要参考。为什么不在所有的边上加一个恒定的分数(比如千分之一)?在使用AABB时,这不会导致性能显著下降。不过,体素的大小不会影响相交结果的准确性,我认为这取决于操作数的指数。我明白你的意思,但是对于一个小的体素,误差可能超过1/1000,我需要保证误差的界限。例如,一个体素可能只有10个浮点值宽,人们可以很容易地想象一系列操作累积1ULP的误差,这是体素大小的1/10