尽管使用了theta和phi的均匀分布,但是用于生成球体的非常密集点的区域

时间:2019-01-27 19:33:40

标签: python numpy data-generation

我正在建立一个数据集,目标是制作一个球体,该球体在径向方向上具有正态分布,并且θ和phi分布均匀。尽管对theta和phi使用了均匀的分布,但我仍然得到极小点(在z轴上+/-半径附近对称)的非常密集点的区域,这些区域的大小很小但很明显。我也在写文件,并使用ROOT绘制结果。

我尝试缩小theta和phi的范围以绘制半球的图形,但是在两种情况下问题仍然存在。我还将半径设置为常数,以确保不干扰极点的形成。两极仍然形成。

    #Size is the number of points to generate, and n is the dimension of the problem (n=2 for circle, n=3 for sphere, etc.)
    hs_points = np.zeros((size, n)) 
    for i in range(size):

        hs_point = hs_points[i]
        for j in range(n):
            if j == 0:
                # normal distribution on radius
                coord = np.random.normal(mu, sigma)

            elif j < n-1:
                 coord=round(random.uniform(0,np.pi),15)


            else:
                coord = np.random.rand()*(2*np.pi)
                hs_point[j] = coord
        hs_points[i] = hs_point
    return hs_points


    c_points = np.zeros((size, n))
    # translate each hyperspherical point into a cartesian point
    for i in range(size):   
          hs_point = hs_points[i]
          xCoord=hs_point[0]*np.sin(hs_point[1])*np.cos(hs_point[2])      
          yCoord=hs_point[0]*np.sin(hs_point[1])*np.sin(hs_point[2])
          zCoord=hs_point[0]*np.cos(hs_point[1])

          c_points[i,0]=xCoord
          c_points[i,1]=yCoord
          c_points[i,2]=zCoord

我希望程序输出一个“模糊”球体,该球体在径向方向上具有正态分布,但在其他所有位置(即没有特别密集的区域)具有均匀的行为。实际行为是密集的极点的产生,其他地方的行为均一。

0 个答案:

没有答案