这是我要解决的问题:
我的形状不规则。如何在这个形状上均匀分布5个点,使每个点之间的距离相等?
答案 0 :(得分:8)
事实上,无论输入形状如何,这是唯一具有解决方案的算法(即所有成对距离都相同)。
我知道这个问题要求“均匀”地提出要点,但由于这没有正式定义,我希望这只是试图解释“所有成对距离是相同的”,在这种情况下我的回答是“均匀”
答案 1 :(得分:6)
这在数学上是不可能的。它只适用于一小部分基本形状。
但是您可以尝试一些解决方案:
分析方法。从点P0开始,在P0周围创建一个球体并将其与基本形状相交,为您提供一组曲线C0。然后在C0的某处创建另一个点P1。再次,在P1周围创建一个球体并与C0相交,给你一组点C1,你的第三个点P2将是C1中的一个点。等等等等。这种方法可以保证距离约束,但也很大程度上取决于初始条件。
迭代方法。基本上是形式发现。您可以在对象上创建一些点,并在共享距离约束的点之间创建弹簧。然后你解决弹簧力并相应地移动你的点。这很可能会使它们远离基座形状,因此您需要将它们拉回基座形状。重复直到您的点不再移动或直到满足距离约束的范围内。
采样方法。将基础几何体转换为体素空间,并开始挖出所有太靠近新插入点的体素。这可以确保你永远不会得到两个点太近,但它也会受到容忍(可能是性能)问题的困扰。
如果您可以提供有关几何体性质和约束条件的更多信息,则可以得到更具体的答案。
答案 2 :(得分:1)
对于将来在这里绊倒的人们,请查看Lloyd's algorithm。
答案 3 :(得分:0)
将5个点彼此等距放置的唯一方法(除了使它们穿过原点的简单解决方案之外)是在4维以上的空间中。在数学上,不可能在3D中拥有5个等距的对象。 在3D模式中,最多可以有四个,而且形状是四面体。