代表球体的三维网格

时间:2012-04-26 20:12:24

标签: java data-structures

总体目标:给定三维空间中的点列表,我需要在给定点的半径的情况下围绕该点生成球体,然后以编程方式检查在给定某个点的两个或更多个球体之间是否存在空间。 / p>

问题:我在思考一个数据结构来表示一个点网格(代表球体的中心)和周围的球体时遇到了麻烦,这些可能并不总是孔数。

示例数据:
A点:( - 3,.25,4)半径:1.35
B点:(5,6.35,1)半径:2
C点:(1,0,-1)半径:.5

我最初的想法是拥有一个三维整数数组,其大小是加在一起的轴的最大值和最小值的绝对值除以您想要的最小精度。然后,您将使用转换因子将数组位置(整数)转换为您要查找的点的小数位。然后我会用数据填充数组,以表示球体中心周围存在一个球体。

我正在寻找的是我应该使用的数据结构来表示这个非整数的3d网格。我觉得我的技术不正确。

这是Java。

非常感谢任何和所有帮助,谢谢!

2 个答案:

答案 0 :(得分:0)

为什么不用3坐标x,y,z(3d-point)和半径来表示它们,就像你列出它们一样,并使用(3dimensional)距离来评估点是否在球体内? 或者我在这里错过了用例?这听起来像是:“检查两个或多个球体之间是否存在空间给定某一点”

答案 1 :(得分:0)

本周早些时候,我确实做了类似的事情。 我所做的是决定两个点允许的最小距离(如果我理解正确的话,你可以通过添加两个球体的半径来找到)。使用这个我创建了一个随机的球体场,使用一个起始球体在(0,0,0),然后逐渐增加额外的球体,与之相距一个随机距离。 因为在我的情况下(不确定你是否也需要这个)我也有一个最大距离我只是移动了一个已经接受的球体的坐标并检查距离是否匹配。

所以,总结一下:

  1. 有一个起点
  2. 随机将一个点(在特定范围内)放置到您现有的一个点
  3. 检查是否符合间距限制
  4. 重复2-3,直到你有足够的球体。
  5. 希望对任何人都有帮助。