matlab 任意曲面三维图像绘制

it2022-05-05  181

为查看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.画出图形


最新回复(0)