Метод случайного генерирования точек на поверхности сферы не выглядит случайным - PullRequest
2 голосов
/ 17 марта 2020

Я пытаюсь нанести точки, случайно распределенные на поверхности сферы.

Согласно многочисленным источникам (метод 10), следующее должно генерировать равномерно случайно распределенные точки:

import numpy as np
from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt
N = 2000
r = 3
u = np.random.rand(N)
v = np.random.rand(N)
theta = 2*np.pi*u
phi = np.arccos(2*v-1)
x = r*np.cos(phi)*np.sin(theta)
y = r*np.sin(phi)*np.sin(theta)
z = r*np.cos(theta)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(x, y, z)

Когда я рисую это, оно не выглядит равномерным. Некоторые углы выглядят так:

this

, тогда как другие выглядят так:

this

Даже когда я запускаю код из сайт, зарисовка выглядит неправильно и неравномерно.

1 Ответ

3 голосов
/ 17 марта 2020

Источник, на который вы смотрите, переключил phi и theta. Переключите их обратно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...