【问题标题】:Generating random points on a surface of an n-dimensional torus在 n 维圆环面上生成随机点
【发布时间】:2014-12-05 16:30:09
【问题描述】:

我想生成位于 n 维圆环表面上的随机点。我找到了如何在3-dimensional torus 表面上生成点的公式:

x = (c + a * cos(v)) * cos(u)
y = (c + a * cos(v)) * sin(u)
z = a * sin(v)

u, v ∈ [0, 2 * pi); c, a > 0.

我现在的问题是:如何将这个公式扩展到 n 维。任何有关此事的帮助将不胜感激。

【问题讨论】:

    标签: math random geometry evolutionary-algorithm


    【解决方案1】:

    我猜你可以递归地做到这一点。从向量空间的完整正交基开始,并以当前位置为原点。在每一步,选择由前两个坐标向量跨越的平面中的一个点,即 w1 = cos(t)*v1 + sin(t)*v2。移动其他基向量,即 w2 = v3, w3 = v4, ...。还要从您当前的位置向 w1 方向迈出一步,并在前面选择半径 r1。如果只剩下一个基向量,那么当前点就是最外层递归调用的 n 维环面上的一个点。

    请注意,虽然上面可能用于随机选择点,但它不会统一选择它们。这可能是一个更难的问题,您绝对应该在 Math SECross Validated (Statistics SE) 上询问数学运算,以便在您担心实施之前得到正确的数学运算。

    【讨论】:

      【解决方案2】:

      n-环面(n 是环面的维数;因此百吉饼或甜甜圈是 2-环面,而不是 3-环面)是 n-矩形的平滑映射。解决此问题的一种方法是在矩形上生成点,然后将它们映射到圆环上。除了弄清楚如何将矩形映射到圆环上的问题(我不知道它的手),还有一个问题是即使点的分布在圆环上得到的点分布也不均匀在矩形上均匀。但是必须有一种方法可以调整矩形上的分布,使其在圆环上均匀。

      【讨论】:

        【解决方案3】:

        仅仅均匀地生成uv 不一定会从环面均匀地采样。需要一个额外的步骤。

        J.F. Williamson,“随机选择分布在曲面上的点”,Physics in Medicine & Biology 32(10),1987 年,描述了在参数表面上选择均匀随机点的一般方法。它是一种接受/拒绝方法,根据其拉伸因子(梯度规范)接受或拒绝每个候选点。要将这种方法用于参数曲面,必须了解有关曲面的几件事,即——

        • x(u, v)y(u, v)z(u, v),它们是从二维坐标uv生成3维坐标的函数,

        • uv的范围,

        • g(point),曲面上每个点的梯度范数(“拉伸因子”),以及

        • gmax,整个表面的最大值g

        对于您在问题中给出的参数化的 3 维环面,ggmax 如下:

        • g(u, v) = a * (c + cos(v) * a)
        • gmax = a * (a + c)

        然后,在具有圆环半径c 和管半径a 的 3 维圆环表面上生成均匀随机点的算法如下(其中RNDEXCRANGE(x,y)[x,y) 中均匀返回一个数字随机,RNDRANGE(x,y) 统一随机返回[x,y] 中的一个数字):

        // Maximum stretch factor for torus
        gmax = a * (a + c)
        while true
         u = RNDEXCRANGE(0, pi * 2)
         v = RNDEXCRANGE(0, pi * 2)
         x = cos(u)*(c+cos(v)*a)
         y = sin(u)*(c+cos(v)*a)
         z = sin(v)*a
         // Norm of gradient (stretch factor)
         g = a*abs(c+cos(v)*a)
         if g >= RNDRANGE(0, gmax)
            // Accept the point
            return [x, y, z]
         end
        end
        

        如果您有 n 维环面生成公式,可以使用类似的方法在该环面上生成均匀随机点(如果梯度范数等于或超过 [0, @987654344 中的随机数,则接受候选点@),其中gmax 是梯度的最大范数)。

        【讨论】:

          猜你喜欢
          • 2020-05-14
          • 2023-01-07
          • 1970-01-01
          • 2021-06-04
          • 1970-01-01
          • 1970-01-01
          • 2011-08-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多