请教高手:如何用matlab生成3D的voronoi图?
最近在做多晶建模分析,需要建立3D的voronoi图。请教高手:如何用matlab生成3D的voronoi图?先谢谢了! 本帖最后由 nwcwww 于 2012-2-29 22:34 编辑scott198510 发表于 2012-2-28 23:20 static/image/common/back.gif
兄台 既然这样说了,可否施展一下高招?这个三维韦恩图的生成,
在matlab里面直接实现,按照aba论坛里面 ...
voronoi图我平时没咋用过,光是以前出于兴趣大概看了看。mathworks上有demo的:http://www.mathworks.co.uk/produ ... tlab/qhulldemo.html。不过那个例子里只在3D空间里画了一个最简单的区域,没有涉及到那些含有Inf坐标从而体积无限的多面体。如果是为了有限元的前处理而生成三维voronoi的话这样确实没法用,因为我们的目标是对有限实体进行剖分。
可能的解决方法也不唯一,我记得mathworks FEX上有人分享过程序,他是先找那些Inf点,然后计算出合适的替代点并排序。除此之外也可以在实体外面添加限制点(比如一个多面体的端点和面心),或者是添加镜像点。
我觉得类似于三楼的效果可以这么做:
%Outer boundary
%Draw the cube
cb = zeros(8,3);
cb() = 2;
cb(9,:) = ones(1,3);
cb = cb-ones(9,3);
d = ;
plot3(cb(d,1),cb(d,2),cb(d,3),'k-'); axis equal
%Seeding
s = 1e3;
x = 2*rand(s,1)-1;
y = 2*rand(s,1)-1;
z = 2*rand(s,1)-1;
%Add mirror pts
xx = ;
yy = ;
zz = ;
%Voronoi
= voronoin();
%Visualisation
for k = 1:length(C)
if all(C{k} ~= 1) %not infinity
Verts = V(C{k},:);
CoordAbs = abs(Verts(:));
if all(CoordAbs <= 1+eps(single(1)))%within boundary
VertHull = convhulln(Verts);
patch('Vertices',Verts,'Faces',VertHull,'FaceColor',rand(3,1),'EdgeColor','None');
end
end
end
view(3)
还有就是韦恩图一般是指Venn而不是voronoi吧。Venn和我还是一个学院的。
help voronoin 本帖最后由 scott198510 于 2011-5-17 14:25 编辑
2# nwcwww
直接 用 voronoin这个函数生成不了三维韦恩图的,只能做二维,三维必须在韦恩图的算法基础上,自己编程序。。
这是我编程序做的三维韦恩图 2# nwcwww
直接 用 voronoin这个函数生成不了三维韦恩图的,只能做二维,三维必须在韦恩图的算法基础上,自己编程序。。
这是我编程序做的三维韦恩图
scott198510 发表于 2011-5-17 14:24 http://forum.simwe.com/images/common/back.gif
help 里面讲了怎么生成三维图形的。
从voronoin得到后,
先convhulln然后patch下就可以了,
很简单。 好的,非常感谢楼上的兄台! 本帖最后由 scott198510 于 2012-2-29 15:49 编辑
nwcwww 发表于 2011-5-17 19:17 http://forum.simwe.com/static/image/common/back.gif
help 里面讲了怎么生成三维图形的。
从voronoin得到后,
先convhulln然后patch下就可以了,
兄台 既然这样说了,可否施展一下高招?这个三维韦恩图的生成,
在matlab里面直接实现,按照aba论坛里面的说法,基本上是做不到,兄台你若支招,我相信斑竹会给你加技术分
本帖最后由 scott198510 于 2012-2-29 23:36 编辑
nwcwww 发表于 2012-2-29 22:30 http://forum.simwe.com/static/image/common/back.gif
voronoi图我平时没咋用过,光是以前出于兴趣大概看了看。mathworks上有demo的:http://www.mathworks.co.u ...
voronoi图一般在音译的时候就是叫做韦恩图,当然 严格来说的话,还是直接用voronoi图的好,容易误解。
兄台果然出手不凡,我相信斑竹会有所表示,这个确实是打开眼界。
高手的帖子啊,顶一个 scott198510 发表于 2011-5-17 14:24
2# nwcwww
直接 用 voronoin这个函数生成不了三维韦恩图的,只能做二维,三维必须在韦恩图的算法基础上, ...
您好,最近对这个很感兴趣,不知道您可以分享一下你的程序吗?照顾一下我们这些后进 scott198510 发表于 2011-5-17 14:24
2# nwcwww
直接 用 voronoin这个函数生成不了三维韦恩图的,只能做二维,三维必须在韦恩图的算法基础上, ...
前辈能不能指导下如何编程实现三维voronoi,晚辈感激不尽 scott198510 发表于 2011-5-17 14:24
2# nwcwww
直接 用 voronoin这个函数生成不了三维韦恩图的,只能做二维,三维必须在韦恩图的算法基础上, ...
您好,我通过mpt-voronoi 在matlab中建立了三维图,怎么实现在abaqus中建模呢?求指点!小硕一枚! scott198510 发表于 2011-5-17 14:24
2# nwcwww
直接 用 voronoin这个函数生成不了三维韦恩图的,只能做二维,三维必须在韦恩图的算法基础上, ...
可以分享一下这个程序吗,很想学习一下,谢谢~ 方便加qq吗2210225308 scott198510 发表于 2011-5-17 14:24
2# nwcwww
直接 用 voronoin这个函数生成不了三维韦恩图的,只能做二维,三维必须在韦恩图的算法基础上, ...
可以分享一下这个程序吗,很想学习一下,谢谢~ 方便加qq吗 2210225308 scott198510 发表于 2011-5-17 14:24
2# nwcwww
直接 用 voronoin这个函数生成不了三维韦恩图的,只能做二维,三维必须在韦恩图的算法基础上, ...
方便加个qq吗 方便分享一下你生成3维voronoi图的程序吗万分感谢~
有没有二维的
页:
[1]