gpt4 book ai didi

geometry - 测试 Cube 是否在 Sphere 内 - 最快方法

转载 作者:行者123 更新时间:2023-12-04 04:45:29 25 4
gpt4 key购买 nike

是否有比单独测试 8 个角是否在球体内更快的方法来检查轴对齐的立方体是否在球体内?

我正在穿过八叉树检查它的立方体叶子是否相交或封闭在球体内。我在这里找到了一个交叉点的方法:Cube sphere intersection test?

我希望找到一种更有效的方法来测试封装。我最终需要的是一个返回以下三种状态之一的测试:

  • 外球
  • 相交球体
  • 内球

  • 立方体由两个点定义,球体由其中心点和半径定义。

    最佳答案

    要确定立方体是否完全在球体内,您可以只测试一个顶点——距离球体中心最远的一个顶点。您可以通过比较立方体和球体的中心点来确定要测试的顶点。
    例如,给定一个以 (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。两个体积确实相交,但球体内没有顶点。

    我会采用多遍方法:
  • 检查球体与立方体的轴对齐边界框 -
    非常简单的检查,快速拒绝
    明显不相交的情况。
  • 检查球心是否在立方体内
  • 您的系统中可能排除了这种可能性,但您应该
    还对球体是的情况进行边界框检查
    完全在立方体内。
  • 此时,别无选择,只能继续检查 intersections between the sphere and the cube faces .

  • 不过,为了走八叉树的目的,我很想将球体视为轴对齐的边界框,并以较小的误报率生活。得知这比获得绝对正确的交集结果更快,我一点也不会感到惊讶。

    关于geometry - 测试 Cube 是否在 Sphere 内 - 最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18250992/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com