请问如何用matlab画出一个三维的正方体?最好能有解释我在后面加了这样一段:boxplot3(1,2,3,5,5,5)hold onboxplot3(2.5,3.5,8,2,2,2)hold onboxplot3(3,4,10,1,1,1)得到一个复杂一点的图形,不知怎么样才能给三
请问如何用matlab画出一个三维的正方体?最好能有解释我在后面加了这样一段:boxplot3(1,2,3,5,5,5)hold onboxplot3(2.5,3.5,8,2,2,2)hold onboxplot3(3,4,10,1,1,1)得到一个复杂一点的图形,不知怎么样才能给三
请问如何用matlab画出一个三维的正方体?
最好能有解释
我在后面加了这样一段:
boxplot3(1,2,3,5,5,5)
hold on
boxplot3(2.5,3.5,8,2,2,2)
hold on
boxplot3(3,4,10,1,1,1)
得到一个复杂一点的图形,不知怎么样才能给三个正方体染上不同的颜色呢?
如果更复杂一点,在他们的上表面加上一些大小不等的矩形、圆形、三角形等图形,请问该怎样写程序呢?
请问如何用matlab画出一个三维的正方体?最好能有解释我在后面加了这样一段:boxplot3(1,2,3,5,5,5)hold onboxplot3(2.5,3.5,8,2,2,2)hold onboxplot3(3,4,10,1,1,1)得到一个复杂一点的图形,不知怎么样才能给三
可以先编写个M文件,保存;
function boxplot3(x0,y0,z0,Lx,Ly,Lz)
%(x0,y0,z0)是第一个顶点的位置; (Lx,Ly,Lz)是长方体的长宽高.
x=[x0 x0 x0 x0 x0+Lx x0+Lx x0+Lx x0+Lx];
y=[y0 y0 y0+Ly y0+Ly y0 y0 y0+Ly y0+Ly];
z=[z0 z0+Lz z0+Lz z0 z0 z0+Lz z0+Lz z0];
index=zeros(6,5);
index(1,:)=[1 2 3 4 1];
index(2,:)=[5 6 7 8 5];
index(3,:)=[1 2 6 5 1];
index(4,:)=[4 3 7 8 4];
index(5,:)=[2 6 7 3 2];
index(6,:)=[1 5 8 4 1];
for k=1:6
plot3(x(index(k,:)),y(index(k,:)),z(index(k,:)))
hold on
end
保存为 boxplot3.m 文件后
在窗口中,调用
boxplot3(1,2,3,5,5,5)
就可得到边长为5的正方体..(1,2,3)为第一个顶点的位置
补充程序:
编写两个M文件,并保存
(1)
function [xx,yy,zz,l]=planarsurface(p0,p1,p2)
v=p1-p0;
w=p2-p0;
s=0:0.2:1;
l=length(s);
[s,t]=meshgrid(s,s);
xx=p0(1)+s*v(1)+t*w(1);
yy=p0(2)+s*v(2)+t*w(2);
zz=p0(3)+s*v(3)+t*w(3);
(2)function boxsurface(p0,l)
[x,y,z]=planarsurface(p0,p0+[0 0 l(3)],p0+[0 l(2) 0]);
surf(x,y,z)
hold on
[x,y,z]=planarsurface(p0+[l(1) 0 0],p0+[l(1) 0 l(3)],p0+[l(1) l(2) 0]);
surf(x,y,z)
[x,y,z]=planarsurface(p0,p0+[0 0 l(3)],p0+[l(1) 0 0]);
surf(x,y,z)
[x,y,z]=planarsurface(p0+[0 l(2) 0],p0+[0 l(2) l(3)],p0+[l(1) l(2) 0]);
surf(x,y,z)
[x,y,z]=planarsurface(p0,p0+[l(1) 0 0],p0+[0 l(2) 0]);
surf(x,y,z)
[x,y,z]=planarsurface(p0+[0 0 l(3)],p0+[l(1) 0 l(3)],p0+[0 l(2) l(3)]);
surf(x,y,z)
axis equal
axis off
运行:boxsurface([1 1 1],[2 2 2])
%[1 1 1]表示初始位置.[2 2 2]:边长