Если я вас правильно понял, вы вычислили функцию f(theta,phi)
, и теперь вы хотите построить поверхность, содержащую все точки с полярной координатой (r,theta,phi)
, где r=f(theta,phi)
.
Если это то, что вы хотите сделать, 2D-версия такого графика включается в MATLAB под именем polar
.К сожалению, как вы указали, polar3
на MatlabCentral - это не обобщение, которое вы ищете.
Мне удалось построить сферу с помощью следующего кода, используя константу r=1
.Вы можете попробовать это с вашей функцией:
phi1=0:1/(3*pi):pi; %# this would be your 180 points
theta1=-pi:1/(3*pi):pi; % your 360 points
r=ones(numel(theta1),numel(phi1));
[phi,theta]=meshgrid(phi1,theta1);
x=r.*sin(theta).*cos(phi);
y=r.*sin(theta).*sin(phi);
z=r.*cos(theta);
tri=delaunay(x(:),y(:),z(:));
trisurf(tri,x,y,z);
Из моих тестов кажется, что delaunay
также включает в себя много треугольников, которые проходят через объем моей сферы, так что кажется, что это не оптимально,Поэтому, возможно, вы можете взглянуть на fill3
и построить нарисованные им треугольники: в первом приближении вы можете объединить точки [x(n,m) x(n+1,m) x(n,m+1)]
в один треугольник и [x(n+1,m) x(n+1,m+1) x(n+1,m+1)]
в другой...