2

让我用一个问题来澄清我的问题:

假设我有一个大立方体= 100 * 100 * 100,大立方体内部有一些小立方体构成大立方体,它们的大小为= 10 * 10 * 10。(我在大立方体中有 1000 个小立方体)现在,我需要检查我的点 (2,2,2) 存在于哪个立方体中。答案肯定是这个问题的第一个立方体。然后在找到立方体后,我将保存每个立方体所包含的点数。

我的尝试:起初我认为如果我将我的观点与 8 个角进行比较就足够了。我认为我的点的坐标必须大于立方体的 4 个角,小于立方体的剩余 4 个角,然后我将迭代地增加角点的坐标以检查其他立方体。然而,现在我发现我错了。

什么是最适合这个问题的算法?

问候,艾玛迪斯

注意:我使用的是 MATLAB,因此如果有任何用于此目的的内置函数,我也可以使用它们。

4

1 回答 1

0

假设你有一个立方体 N*N*N。然后创建维度为 n*n*n 的小立方体。然后,所有立方体都可以用一个 3D 数组表示,这样在 (a*n, b*n, c*n) 处离原点最近的边的立方体由这个 3d 数组中的索引 (a, b, c) 表示。存储在该索引处的值是该立方体内的点数。这是伪代码

//Pseudo code
int [N/n][N/n][N/n] arrayWithCountOfPointsInsideCubes;

void function countPointsForCubes(double point_x, point_y, point_z)
{ 
  arrayWithCountOfPointsInsideCubes[pint_x/n][point_y/n][point_z/n]++;
}
于 2012-11-30T09:25:44.870 回答