math - 如何在大致等距的 D 维球面上绘制 N 个点?

标签 math graphics 3d trigonometry vector-graphics

假设我有一个 D 维球体,其中心为 [C1, C2, C3, C4, ... CD],半径为 R。现在我想绘制 N 个均匀分布的点(彼此等距)在球体表面。这些点的确切位置并不重要,只要它们彼此大致等距即可。我想要一个返回这些点的数组 P 的函数。

function plotter(D, C[1...D], R, N)
{
   //code to generate the equidistant points on the sphere

   return P[1...N][1...D];
}

3-dimensional sphere with many points

3-dimensional sphere with a few points

最佳答案

几个选项:

  • 在球体上随机抛出点并使用劳埃德松弛使它们均匀分布:您迭代计算它们的 Voronoi 图并将它们移向其 Voronoi 单元的中心(而不是在球体上工作,您可能想要使用欧几里得 voronoi 图仅限于球体:例如,CGAL 可以这样做,或者引用 my article )。
  • 如果粗略近似很好(即,如果均匀随机分布足够好),您可以使用 Wiki 上解释的公式:N-Sphere .如果没有,你仍然可以使用这个随机抽样作为上述方法的初始化
  • 对于仍然随机但更好的等距样本概念,您可以生成泊松盘分布。高维快速代码可在 Robert Bridson's homepage 获得.不过,您可能需要将其调整为球形域。
  • 关于math - 如何在大致等距的 D 维球面上绘制 N 个点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12700879/

    相关文章:

    c++ - 从正交投影平滑过渡到透视投影?

    c++ - 使用自定义着色器的 OpenGL/ES 渲染 = 网格上的伪影

    c# - 敌人出现在玩家身后的机会 1 对 5

    c# - 计算对数百分比

    c - 模拟绘画应用的笔触

    javascript - 试图了解此网页如何使用 javascript 产生增长率

    java - 访问 BufferedImage 线程是否安全

    python - 如何在 Python 中创建 3d 对象/类?

    math - float 学有问题吗?

    mysql - MySQL中StackOverflow的流行度算法