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

В этом примере показано, как создать случайные точки в объеме сферы, аналогичной описанному Knuth [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 object. The axes object contains an object of type line.

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

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

Ссылки

[1] Knuth, D. Искусство Программирования. Издание 2, 3-й редактор, читающий, MA: Аддисон-Уэсли Лонгмен, 1998, стр 134–136.

Смотрите также

| |

Похожие темы