是否有更快的方法来检查轴对齐的立方体是否在球体内部而不是单独测试8个角是否在球体内?
我正在穿过八叉树,检查它的立方体叶子是否在球体内相交或封闭。我在这里找到了一种交叉方法:Cube sphere intersection test?
我希望找到一种更有效的方法来测试封闭性。我最终需要的是一个返回三种状态之一的测试:
立方体由两个点定义,即球体的中心点和半径。
答案 0 :(得分:3)
要查找立方体是否完全位于球体内,您可以只测试一个顶点 - 距离球体中心最远的顶点。您可以通过比较立方体和球体的中心点来确定要测试的顶点。
例如,给定一个以(cx,cy,cz)
为中心,边长半长为l
的立方体,以及(sx,sy,sz)
半径为r
的球体,测试点将为
tx = cx + ( cx > sx ? l : -l );
ty = cy + ( cy > sy ? l : -l );
tz = cz + ( cz > sz ? l : -l );
然而,测试立方体对角球的角落将无法捕捉到所有交叉的情况 - 考虑从(-5,-5,-5)到(5,5,5)的立方体和(0)处的球体半径为2的两个体积相交,但球体内没有顶点。
我会采用多遍方法:
为了走八角树的目的,我会被诱惑只是将球体视为轴对齐的边界框并以小的假阳性率生活。我不会惊讶地发现这比获得绝对正确的交叉结果更快。
答案 1 :(得分:0)
您可以测量从立方体中心到球体中心的距离。连同立方体对角线的长度和球体的半径,您可以确定立方体在球体内部是否存在。