matlab 任意曲面三维图像绘制

为查看a,b,c中,已知a,b求满足的c的关系图像,需要用到此类问题。函数在前面提到过 isosurface

具体过程

1先建立函数

新建func1.m函数文件

function v = func1(a_a,b_b,c_c)

M_q=6487155;
M_h=5972864;
e_e=1.6;
d_d=0.7;
c_t=atan((c_c+d_d)./(a_a-0.5*e_e));
a_f=atan(c_c./(0.5*e_e+b_b));
b_t=atan(c_c./(0.5*e_e-b_b));
F_q=M_q./((a_a+b_b).*tan(c_t));
F_h=M_h./((a_a+b_b).*tan(c_t));
N_q=1112122+M_q./(a_a+b_b);
N_h=932122-M_h./(a_a+b_b);
f_e=(345-0.01436*(c_c./(68.21*sin(a_f))).*(c_c./(68.21*sin(a_f))))./345;
f_s=(345-0.01436*(c_c./(68.21*sin(b_t))).*(c_c./(68.21*sin(b_t))))./345;
testf1 = (F_q.*sin(a_f)+N_q.*cos(a_f))./f_s;
testf2 = (F_h.*sin(b_t)+N_h.*cos(b_t))./f_e;
v = testf1 - testf2;

end

2.建立主程序 test2.m

[x,y,z]=meshgrid(linspace(1,8,100),linspace(0,8,100),linspace(0.5,2,100));
v=func1(x,y,z);
% isosurface(x,y,z,v,0)
p = patch(isosurface(x,y,z,v,0));
% isonormals(x,y,z,v,p)
% set(p,'EdgeColor','black');
% 
% [d,m]=isosurface(x,y,z,v,0);
% patch('faces',d,'vertices',m,'facevertexcData',spring(length(m)),'facecolor','b','edgecolor','flat');
set(p,'FaceVertexCData',jet(size(get(p,'faces'),1)) ,'FaceColor', 'flat', 'EdgeColor', 'black');
view(3);
% axis equal;
% axis tight
% camlight
% lighting gouraud
grid on;


%% syms a_a b_b c_c
% M_q=6487155;
% M_h=5972864;
% e_e=1.6;
% d_d=0.7;
% c_t=atan((c_c+d_d)/(a_a-0.5*e_e));
% a_f=atan(c_c/(0.5*e_e+b_b));
% b_t=atan(c_c/(0.5*e_e-b_b));
% F_q=M_q/((a_a+b_b)*tan(c_t));
% F_h=M_h/((a_a+b_b)*tan(c_t));
% N_q=1112122+M_q/(a_a+b_b);
% N_h=932122-M_h/(a_a+b_b);
% f_e=(345-0.01436*(c_c/(68.21*sin(a_f)))*(c_c/(68.21*sin(a_f))))/345;
% f_s=(345-0.01436*(c_c/(68.21*sin(b_t)))*(c_c/(68.21*sin(b_t))))/345;
% testf1 = (F_q*sin(a_f)+N_q*cos(a_f))/f_s;
% testf2 = (F_h*sin(b_t)+N_q*cos(b_t))/f_e;
% v = testf1 - testf2;
% c = solve(v,'c_c');
% for p = 1:length(c)
%     ezmesh(c(p));
%     hold on
% end

3.画出图形

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/CoomCon/article/details/96434130