Бугристые и морщинистые сферы в Matlab

Я пытаюсь покрыть неровные сферы и морщинистые сферы в Matlab, используя p = 1 + 0,2 * sin (phi * m) * sin (teta * n)

    teta = 0:6.23;
    phi = 0:3.14;
    [teta,phi] = meshgrid(teta, phi);
    figure, hold on
    for m = 1:12
        for n = 1:12
            p = 1 + 0.2*sin(m*teta).*sin(n*phi);
            surf(teta,phi,p)
            pause(0.05)
            clf('reset')
        end
    end

Но это не рисование сфер, а просто поверхностей ... что я делаю не так и что мне нужно изменить :) Большое спасибо !!!


person Rusu Alex    schedule 23.01.2017    source источник
comment
Ну, вы передаете сферические координаты в surf, который обрабатывает только декартовы координаты. Преобразуйте их в первую очередь.   -  person Suever    schedule 23.01.2017
comment
как мне сделать это @Suever .... Я новичок в Matlab ... не могли бы вы мне помочь с этим, пожалуйста? :)   -  person Rusu Alex    schedule 23.01.2017
comment
возможно, этот пост сможет быть полезным   -  person gaetano    schedule 23.01.2017


Ответы (1)


Я не понимаю ваш пример, поэтому создал новый:

%We define the spherical coordinates.
theta   = linspace(0,2*pi,50);
phi     = linspace(0,pi,50);
[x1,x2] = meshgrid(linspace(0,12*pi,50),linspace(0,12*pi,50)); %the variation of rho will produce a bumpy sphere.
rho     = 0.1*(sin(x1)+cos(x2))+1;
[theta,phi] = meshgrid(theta,phi);

%we calculate the cartesian coordinates.
x   =   rho.*cos(theta).*sin(phi);
y   =   rho.*sin(theta).*sin(phi);
z   =   rho.*cos(phi);

%plot   
surf(x,y,z);

РЕЗУЛЬТАТ БЫСТРЫЙ

введите здесь описание изображения

РЕЗУЛЬТАТ МОРЩИНЫ

Просто измените параметр rho на:

rho     = 0.1*(sin(x1))+1;

введите здесь описание изображения

person obchardon    schedule 23.01.2017