Как построить кривую поверхность в Matlab? - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь сделать вырез из трубы, и я хочу сделать изогнутую поверхность, чтобы представить снаружи трубы.Однако, когда я строю поверхность, я получаю только диагональ поверхности вместо самой поверхности.Как я могу это исправить?

MWE:

r = 0:0.1:3;
z = 0:0.1:10;  
[rr, zz] = meshgrid(r,z); 

% set cut planes angles
theta1 = 0;
theta2 = pi*135/180;
nt = 101;  % angle resolution

figure(1);
clf; 

t3 = linspace(theta1, (theta2 - 2*pi), nt);
[rr3, tt3] = meshgrid(r,t3);

% Create curved surface
xx5 = r(end) * cos(tt3);
yy5 = r(end) * sin(tt3);
h5 = surface(xx5, yy5,zz)

Ответы [ 2 ]

0 голосов
/ 26 мая 2018

Сетка-сетка, которую вы создали, основана на тэте и радиусе.Однако радиус является постоянным для внешней части трубы, поэтому вместо этого он должен основываться на тэте и z, поскольку это две независимые переменные, определяющие сетку.Исходя из этих рассуждений, я считаю, что вам нужно следующее:

r = 0:0.1:3;
z = 0:0.1:10;  

% set cut planes angles
theta1 = 0;
theta2 = pi*135/180;
nt = 101;  % angle resolution

figure(1);
clf; 

% create a grid over theta and z
t3 = linspace(theta1, (theta2 - 2*pi), nt);
[tt3, zz3] = meshgrid(t3, z);
% convert from cylindical to Cartesian coordinates
xx5 = r(end) * cos(tt3);
yy5 = r(end) * sin(tt3);
% plot surface
h5 = surface(xx5, yy5, zz3, 'EdgeColor', 'none');

% extra stuff to make plot prettier
axis vis3d
axis equal
view(3)
camzoom(0.7);

enter image description here

0 голосов
/ 25 мая 2018

Попробуйте с surf с surf(xx5, yy5, zz).Это то, что вы ищете?

surf plot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...