В этом примере показано, как создать случайные точки в объеме сферы, аналогичной описанному Knuth [1]. Сфера в этом примере строится в начале координат и имеет радиус 3.
Один путь к точкам формирования данных в сфере состоит в том, чтобы задать их в сферических координатах. Затем можно преобразовать их в Декартовы координаты, чтобы построить их.
Во-первых, инициализируйте генератор случайных чисел, чтобы сделать результаты в этом примере повторяемыми.
rng(0,'twister')
Вычислите угол возвышения для каждой точки в сфере. Эти значения находятся в открытом интервале, , но не равномерно распределены.
rvals = 2*rand(1000,1)-1; elevation = asin(rvals);
Создайте угол азимута для каждой точки в сфере. Эти значения равномерно распределены в открытом интервале, .
azimuth = 2*pi*rand(1000,1);
Создайте значение радиуса для каждой точки в сфере. Эти значения находятся в открытом интервале, , но не равномерно распределены.
radii = 3*(rand(1000,1).^(1/3));
Преобразуйте в Декартовы координаты и постройте результат.
[x,y,z] = sph2cart(azimuth,elevation,radii); figure plot3(x,y,z,'.') axis equal
Если вы хотите поместить случайные числа в поверхность сферы, то задайте постоянное значение радиуса, чтобы быть последним входным параметром к sph2cart
. В этом случае значением является 3
.
[x,y,z] = sph2cart(azimuth,elevation,3);
[1] Knuth, D. Искусство Программирования. Издание 2, 3-й редактор, читающий, MA: Аддисон-Уэсли Лонгмен, 1998, стр 134–136.