是否有比单独测试 8 个角是否在球体内更快的方法来检查轴对齐的立方体是否在球体内?
我正在穿过一个八叉树,检查它的立方体叶子是否相交或包含在一个球体中。我在这里找到了一种交叉点的方法:立方体球体交叉点测试?
我希望找到一种更有效的方法来测试封闭性。我最终需要的是一个返回三种状态之一的测试:
- 外球体
- 相交球体
- 球内
立方体由两个点定义,球体由其中心点和半径定义。
是否有比单独测试 8 个角是否在球体内更快的方法来检查轴对齐的立方体是否在球体内?
我正在穿过一个八叉树,检查它的立方体叶子是否相交或包含在一个球体中。我在这里找到了一种交叉点的方法:立方体球体交叉点测试?
我希望找到一种更有效的方法来测试封闭性。我最终需要的是一个返回三种状态之一的测试:
立方体由两个点定义,球体由其中心点和半径定义。
要确定立方体是否完全在球体内,您可以只测试一个顶点——离球体中心最远的一个顶点。您可以通过比较立方体和球体的中心点来确定要测试的顶点。例如,给定一个以 为中心(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,0, 6)半径为2。两个体积相交,但球体内没有顶点。
我会采用多通道方法:
不过,出于步行八叉树的目的,我很想将球体视为轴对齐的边界框,并接受较小的误报率。得知这比获得绝对正确的交集结果要快,我一点也不感到惊讶。
您可以测量从立方体中心到球体中心的距离。连同立方体对角线的长度和球体的半径,您可以确定立方体是否在球体内。