Этот пример показывает, как создать случайные точки в объеме сферы, как описано 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. The Art of Computer Programming. Том 2, 3-й ред. Рединг, MA: Addison-Wesley Longman, 1998, pp. 134-136.