exponenta event banner

Случайные числа в сфере

В этом примере показано, как создавать случайные точки в объеме сферы, как описано Кнутом [1]. Сфера в этом примере центрирована в начале координат и имеет радиус 3.

Одним из способов создания точек внутри сферы является задание их в сферических координатах. Затем их можно преобразовать в декартовы координаты для построения графика.

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

rng(0,'twister')

Рассчитайте угол отметки для каждой точки сферы. Эти значения находятся в разомкнутом интервале, (-λ/2, λ/2), но распределены неравномерно.

rvals = 2*rand(1000,1)-1;
elevation = asin(rvals);

Создайте азимутальный угол для каждой точки сферы. Эти значения равномерно распределены в открытом интервале, (0,2δ).

azimuth = 2*pi*rand(1000,1);

Создайте значение радиуса для каждой точки сферы. Эти значения находятся в открытом интервале (0,3), но распределяются неравномерно.

radii = 3*(rand(1000,1).^(1/3));

Преобразование в декартовы координаты и печать результата.

[x,y,z] = sph2cart(azimuth,elevation,radii);
figure
plot3(x,y,z,'.')
axis equal

Figure contains an axes. The axes contains an object of type line.

Если нужно разместить случайные числа на поверхности сферы, укажите значение постоянного радиуса, которое будет последним входным аргументом для sph2cart. В этом случае значение равно 3.

[x,y,z] = sph2cart(azimuth,elevation,3);

Ссылки

[1] Кнут, Д. Искусство компьютерного программирования. Том 2, 3-й ред., Массачусетс: Эддисон-Уэсли Лонгман, 1998, стр. 134-136.

См. также

| |

Связанные темы