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,"*")
¿Alguien puede decir en qué error estoy cometiendo en mi código?
Respuestas
3 para la respuesta № 1Só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.
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");