Искам да генерирам еквидистантни точки върху сфера (повърхност на сферата). Аз измислих този код.
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,"*")
Може ли някой да каже къде каква грешка правя в моя код?
Отговори:
3 за отговор № 1Вие генерирате само един път: комбинация от фигура 8 от един затворен кръг в х-ш равнина с единична косинус по протежение на Z.
За да се получи пълна форма на сферата, трябва да се вземат пермутациите на двата пътя. Това може да се постигне с 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");