我有一个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;我的平面不与立方体相交,因为所有顶点都有相同的符号。
但是,这并不是一个真正的优化解决方案。我想知道任何其他简单的方法,这在计算成本方面是可行的。
感谢。
答案 0 :(得分:1)
假设单位立方体以原点为中心,ax + by + cz
的符号与x, y, z
的符号相匹配(形成三个正项)时最大化a, b, c
,最大值为{{ 1}}。最低为S = |a| + |b| + |c|
。
因此,检查- S = - |a| - |b| - |c|
是否属于d
范围内是足够的。
如果立方体不在原点居中,而不是单位或不对齐轴,则可以应用仿射变换来实现,并在执行测试之前将相同的变换应用于平面。