caoziwawa 发表于 2010-3-4 11:05

如何用matlab画正二十面体

各位前辈好:
       本人想用matlab画一个正二十面体,但是总是找不到matlab中能够画多面体的函数,不知道编程时该从哪个角度考虑。各位前辈可否帮忙解答一下。谢谢!

xiezhh 发表于 2010-3-4 22:30

运行下面的代码可画正12面体,正20面体与之类似,自己试试吧
phi = (1+sqrt(5))/2;
vert = ;
vert = ;
vert = ;
vert = ;
fac = [3 4 17 10 14
       6 8 19 4 17
       9 16 6 17 10
       5 13 9 10 14
       14 3 20 7 5
       3 4 19 12 20
       8 18 11 12 19
       16 2 18 8 6
       7 20 12 11 15
       2 1 15 11 18
       13 5 7 15 1
       9 13 1 2 16];
h = patch('faces',fac,'vertices',vert,'FaceColor','r');
view(3);    %设置视角
%set(h,'FaceAlpha',0.5);    %设置正12面体透明度
light('Posi',);
lightangle(-45,60);   %建立光源并设置光源视角
lighting flat;    %设置光照模式
material metal;    %设置面的反射属性
axis equal;    %设置坐标轴显示方式
%xlabel('X'); ylabel('Y'); zlabel('Z');    %为坐标轴加标签
axis off
效果如图:

[ 本帖最后由 xiezhh 于 2010-3-4 22:40 编辑 ]

ChaChing 发表于 2010-3-4 23:14

个人以为画正多面体的重点, 应该是那些顶点的座标如何求得, 怎奈我忘了干净了! 汗颜:@L
本想上网查查, 又有点懒!:loveliness:

caoziwawa 发表于 2010-3-5 14:55

回复 沙发 xiezhh 的帖子

非常感谢前辈指点,在simulink论坛也是前辈回答的,非常感谢!:@)

xiezhh 发表于 2010-3-6 21:43

画正二十面体的程序如下:t = 0:2*pi/5:(2*pi-2*pi/5);
vert = ;
t = t'+pi/5;
a = 2*sin(pi/5);
vert=;
h = sqrt(0.75*a^2-cos(pi/5)^2);
vert = ;
fac = [1 2 3
       1 3 4
       1 4 5
       1 5 6
       1 6 2
       2 3 7
       2 6 11
       2 7 11
       3 7 8
       3 4 8
       4 8 9
       4 5 9
       5 9 10
       5 6 10
       6 10 11
       7 8 12
       8 9 12
       9 10 12
       10 11 12
       7 11 12];
h = patch('faces',fac,'vertices',vert,'FaceColor','r');
view(3);    %设置视角
%set(h,'FaceAlpha',0.5);    %设置正12面体透明度
light('Posi',);
lightangle(30,30);   %建立光源并设置光源视角
lighting flat;    %设置光照模式
material metal;    %设置面的反射属性
axis equal;    %设置坐标轴显示方式
%xlabel('X'); ylabel('Y'); zlabel('Z');    %为坐标轴加标签
axis off效果如图:

[ 本帖最后由 xiezhh 于 2010-3-6 22:59 编辑 ]

caoziwawa 发表于 2010-3-7 15:37

回复 5楼 xiezhh 的帖子

谢前辈指点,非常感谢,我会好好看你写的程序的。谢谢!

前辈,我还想再问一个问题。我现在有很多个点坐标了,162个,这些点都均匀分布在单位1的球壳上,这些点连起来就是一个300面体。我只会用plot3画,因为这样划线线太多了,结果整个图形就成了一个黑黑的球面。看不出来了,我想请问前辈,用什么函数可以画出,您例子里面的效果来。而不是线框图。

[ 本帖最后由 ChaChing 于 2010-3-7 19:55 编辑 ]
页: [1]
查看完整版本: 如何用matlab画正二十面体