c++ - 从特定半径的 3D 网格中选择单元格

标签 c++

我今天遇到了一个小问题,我似乎无法有效地解决它。给定球心和半径,我想选择 3D 网格的所有单元格。

我有一个立方体单元格网格,它们都具有相同的尺寸,即立方体具有相同的宽度高度和深度,并被分成子立方体(“单元格”),每个子立方体也具有相同的宽度高度和深度。

给定此网格内的 3D 位置,我想在球体半径内绘制此位置周围的所有单元格。部分包含在球体中的所有单元格都应包含在绘图中。

最佳答案

计算盒子的角点到球体中心的距离:

sqrt(dx^2+dy^2+dz^2)

如果小于或等于你的半径绘制立方体...

(编辑:正如 Oli 评论的那样,您可以与半径的平方进行比较以加快应用程序中的此测试)

您只能考虑边界 r x r x r 立方体内的立方体...

另见: fast sphere-grid intersection

关于c++ - 从特定半径的 3D 网格中选择单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8206046/

相关文章:

c++ - 结合模板和继承

c++ - 可以强制 GCC 为内存对齐对象生成有效的构造函数吗?

c++ - 如何在 Vista 中使用 C++ 控制 PC 的风扇速度?

c++ - 尝试使用嵌套的 for 循环输出某些内容

c++ - 复制构造函数和动态分配的数组

c++ - Visual Studio 忽略包含目录

c++ - Windows 上文件路径中的特殊字符 (c++)

c++ - 将自己的类的实例传递给另一个

c++ - 错误 : no matching function for call to 'getline(FILE*&, std::string&)'

c++ - 静态 vector 成员变量