Области очень плотных точек для генерации сферы, несмотря на использование равномерных распределений для тэты и фи

Я устанавливаю набор данных, и цель состоит в том, чтобы создать сферу с нормальным распределением вдоль радиального направления и равномерным распределением тэта и фи. Несмотря на использование равномерных распределений для тэты и фи, я продолжаю получать области очень плотных точек на полюсах (симметрично вблизи +/- радиуса на оси z), которые имеют небольшой, но заметный размер. Я также пишу в файл и использую ROOT для отображения своих результатов.

Я попытался уменьшить диапазон тэты и фи до графика половины сферы, но проблема все еще сохраняется в обоих случаях. Я также установил постоянный радиус, чтобы убедиться, что он не мешает формированию полюсов. Полюса еще сформировались.

    #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 ответов

Другие вопросы по тегам