【问题标题】:Representing a 3-dimensional Grid of Spheres表示球体的 3 维网格
【发布时间】:2012-05-07 14:50:18
【问题描述】:

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

问题:我无法考虑用数据结构来表示点网格(表示球体的中心)和周围的球体,这些可能并不总是孔数。

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

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

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

这是在 Java 中。

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

【问题讨论】:

    标签: java data-structures


    【解决方案1】:

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

    所以,总结一下:

    1. 有一个起点
    2. 在现有点之一上随机放置一个点(在特定范围内)
    3. 检查它是否符合您的间距限制
    4. 重复 2-3 直到有足够的球体。

    希望这对任何人都有帮助。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2017-12-27
        • 1970-01-01
        • 1970-01-01
        • 2016-02-06
        • 1970-01-01
        • 1970-01-01
        • 2020-05-18
        • 1970-01-01
        • 2019-03-02
        相关资源
        最近更新 更多