检查由三个3D点形成的平面是否与立方体相交

时间:2018-01-17 10:28:44

标签: c# c++ 3d geometry

我有一个a*x + b*y + c*z + d = 0形式的平面方程式。

我有一个立方体中心(x1,y1,z1)。

我想检查一下,如果我的飞机与我的立方体相交。

我试过的一个程序是找到立方体的所有顶点。 然后,替换平面方程中的所有顶点。 现在,让我们将所有值称为S11,... S88。

if((S11 > 0 && S22 > 0.........S88 > 0) || (S11 < 0 && S22 <0...S88<0)) then - &gt;我的平面不与立方体相交,因为所有顶点都有相同的符号。

但是,这并不是一个真正的优化解决方案。我想知道任何其他简单的方法,这在计算成本方面是可行的。

感谢。

1 个答案:

答案 0 :(得分:1)

假设单位立方体以原点为中心,ax + by + cz的符号与x, y, z的符号相匹配(形成三个正项)时最大化a, b, c,最大值为{{ 1}}。最低为S = |a| + |b| + |c|

因此,检查- S = - |a| - |b| - |c|是否属于d范围内是足够的。

如果立方体不在原点居中,而不是单位或不对齐轴,则可以应用仿射变换来实现,并在执行测试之前将相同的变换应用于平面。