/ / Generar puntos equidistantes en una esfera [MATLAB] - matlab

Genera puntos equidistantes en una esfera [MATLAB] - matlab

Quiero generar puntos equidistantes en una esfera (superficie de la esfera). Se me ha ocurrido este código.

n = 30; % number of points
r = 10; % radius of the sphere

thetha = 0:pi/(n/2):2*pi;
phi    = -pi:2*pi/n:pi;
xp     = r.*sin(phi).*cos(thetha);
yp     = r.*sin(thetha).*sin(phi);
zp     = r.*cos(phi);
figure;plot3(xp,yp,zp,"*")

Pero esto es lo que obtengo enter image description here

¿Alguien puede decir en qué error estoy cometiendo en mi código?

Respuestas

3 para la respuesta № 1

Sólo está generando un camino: una combinación de una figura ocho de un solo círculo cerrado en el X-y avión con coseno único a lo largo del z.

Tres vistas de la curva única, cerrada.

Para obtener una forma de esfera completa, se deben tomar permutaciones de los dos caminos. Esto se puede lograr con meshgrid:

[t,p] = meshgrid(thetha,phi);
xp    = r.*sin(p).*cos(t);
yp    = r.*sin(t).*sin(p);
zp    = r.*cos(p);
plot3(xp,yp,zp,"-*");
grid("on");
box("on");
axis("square");

Diagrama de forma esférica