2014-10-10 96 views
4

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

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维。任何关于此事的帮助将不胜感激。

回答

1

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

请注意,虽然以上可能用于随机选择点,它不会统一选择它们。这可能是一个更难的问题,并且你肯定应该询问关于Math SE或者Cross Validated (Statistics SE)的数学,以便在你担心实现之前获得数学。

0

一个n环(n是环的表面的维数;百吉饼或环面是一个2环,而不是3环)是一个n长方形的光滑映射。解决此问题的一种方法是在矩形上生成点,然后将它们映射到圆环上。除了解决如何将一个矩形映射到一个圆环上(我不知道它是手边的)的问题之外,还有一个问题是圆环上的点的分布结果不均匀,即使点的分布是统一在矩形上。但是必须有一种方法来调整矩形上的分布,使其在圆环上均匀分布。