1.matlab怎样将一个jpg画成三维立体?
matlab怎样将一个jpg画成三维立体?
法一:直接曲线拟合
f=imread('C:\Users\win8\Desktop\t1.bmp');
XY=size(f);
xy=[];
for i=1:XY(1,花瓶画图1)
for j=1:XY(1,2)
if f(i,j)==0&f(i,j+1)~=0
xy=[xy;j,i];
end
end
end
x=xy(:,1)-;
y=-xy(:,2);
xy2=[x,y];
xy3=sortrows(xy2,2);
x=xy3(:,2);
y=xy3(:,1);
p=polyfit(x,y,);
x1=min(x):0.1:max(x);y1=polyval(p,x1);
[x,y,z]=cylinder(y1,);
mesh(x,y,z)
法二:分段拟合
f=imread('C:\Users\win8\Desktop\t1.bmp');
XY=size(f);
xy=[];
for i=1:XY(1,1)
for j=1:XY(1,2)
if f(i,j)==0&f(i,j+1)~=0
xy=[xy;j,i];
end
end
end
x=xy(:,1)-;
y=-xy(:,2);
xy2=[x,y];
xy3=sortrows(xy2,2);
a1=xy3(1:,1:2);
a1x=a1(:,1);a1y=a1(:,2);
a1p=polyfit(a1y,a1x,1);
yy=xy3(:,2);
m1=a1p(1,1);n1=a1p(1,2);
a2=xy3(:,1:2);
a2x=a2(:,1);a2y=a2(:,2);
a2p=polyfit(a2y,a2x,3);
m2=a2p(1,1);n2=a2p(1,2);k2=a2p(1,3);l2=a2p(1,4);
a3=xy3(:,1:2);
a3x=a3(:,1);a3y=a3(:,2);
a4=xy3(:,1:2);
a4x=a4(:,1);a4y=a4(:,2);
a4p=polyfit(a4y,a4x,4);
m4=a4p(1,1);n4=a4p(1,2);k4=a4p(1,3);l4=a4p(1,4);h4=a4p(1,5);
g=(min(a1y)<=yy&yy<=max(a1y)).*(m1*yy+n1)+(min(a2y)<=yy&yy<=max(a2y)).*(m2*yy.^3+n2*yy.^2+k2*yy+l2)+(min(a3y)<=yy&yy<=max(a3y))*max(a3(:,1))+(min(a4y)<=yy&yy<=max(a4y)).*(m4*yy.^4+n4*yy.^3+k4*yy.^2+l4*yy+h4);
[x,y,z]=cylinder(g,);
mesh(x,y,z)
图中的花瓶平面图是对称结构,可以想象花瓶的源码立体图是由花瓶平面的对称线旋转而得的旋转体。先以花瓶底部中心为坐标原点,维花薇薇指标源码坐标原点正右为轴,瓶代坐标原点正上为轴建立直角坐标系,花瓶画图黑马跨栏指标源码继而求出花瓶一侧(右侧)全部边缘点的源码c语言选课源码坐标。因为边缘点足够密集且数量较多,维花更适宜采用曲线拟合而不是瓶代插值的方法作出曲线近似表达式。利用软件中函数根据近似表达式作出花瓶三维立体图。花瓶画图为使得立体图的源码直观效果更好,可进一步建立右边缘曲线的维花分段函数表达式进行拟合。
瓶代