kurtyang2009 发表于 2011-5-16 21:08:17

请教高手:如何用matlab生成3D的voronoi图?

最近在做多晶建模分析,需要建立3D的voronoi图。请教高手:如何用matlab生成3D的voronoi图?先谢谢了!

nwcwww 发表于 2012-2-29 22:30:09

本帖最后由 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和我还是一个学院的。

nwcwww 发表于 2011-5-17 01:10:59

help voronoin

scott198510 发表于 2011-5-17 14:24:16

本帖最后由 scott198510 于 2011-5-17 14:25 编辑

2# nwcwww

直接 用 voronoin这个函数生成不了三维韦恩图的,只能做二维,三维必须在韦恩图的算法基础上,自己编程序。。

这是我编程序做的三维韦恩图

nwcwww 发表于 2011-5-17 19:17:30

2# nwcwww

直接 用 voronoin这个函数生成不了三维韦恩图的,只能做二维,三维必须在韦恩图的算法基础上,自己编程序。。

这是我编程序做的三维韦恩图
scott198510 发表于 2011-5-17 14:24 http://forum.simwe.com/images/common/back.gif

help 里面讲了怎么生成三维图形的。
从voronoin得到后,
先convhulln然后patch下就可以了,
很简单。

kurtyang2009 发表于 2011-6-19 11:04:01

好的,非常感谢楼上的兄台!

scott198510 发表于 2012-2-28 23:20:59

本帖最后由 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:31:11

本帖最后由 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图的好,容易误解。
兄台果然出手不凡,我相信斑竹会有所表示,这个确实是打开眼界。

ziri000 发表于 2015-3-20 15:52:10

高手的帖子啊,顶一个

necis 发表于 2015-4-24 10:53:58

scott198510 发表于 2011-5-17 14:24
2# nwcwww

直接 用 voronoin这个函数生成不了三维韦恩图的,只能做二维,三维必须在韦恩图的算法基础上, ...

您好,最近对这个很感兴趣,不知道您可以分享一下你的程序吗?照顾一下我们这些后进

棉花糖fy 发表于 2016-7-27 18:47:55

scott198510 发表于 2011-5-17 14:24
2# nwcwww

直接 用 voronoin这个函数生成不了三维韦恩图的,只能做二维,三维必须在韦恩图的算法基础上, ...

前辈能不能指导下如何编程实现三维voronoi,晚辈感激不尽

好好先生year 发表于 2016-8-20 16:50:51

scott198510 发表于 2011-5-17 14:24
2# nwcwww

直接 用 voronoin这个函数生成不了三维韦恩图的,只能做二维,三维必须在韦恩图的算法基础上, ...

您好,我通过mpt-voronoi 在matlab中建立了三维图,怎么实现在abaqus中建模呢?求指点!小硕一枚!

tianli11115 发表于 2017-6-25 16:40:14

scott198510 发表于 2011-5-17 14:24
2# nwcwww

直接 用 voronoin这个函数生成不了三维韦恩图的,只能做二维,三维必须在韦恩图的算法基础上, ...

可以分享一下这个程序吗,很想学习一下,谢谢~ 方便加qq吗2210225308

tianli11115 发表于 2017-6-25 16:41:02

scott198510 发表于 2011-5-17 14:24
2# nwcwww

直接 用 voronoin这个函数生成不了三维韦恩图的,只能做二维,三维必须在韦恩图的算法基础上, ...

可以分享一下这个程序吗,很想学习一下,谢谢~ 方便加qq吗         2210225308

tianli11115 发表于 2017-6-25 16:42:58

scott198510 发表于 2011-5-17 14:24
2# nwcwww

直接 用 voronoin这个函数生成不了三维韦恩图的,只能做二维,三维必须在韦恩图的算法基础上, ...

方便加个qq吗 方便分享一下你生成3维voronoi图的程序吗万分感谢~

划船不用桨 发表于 2018-1-18 13:11:10

有没有二维的
页: [1]
查看完整版本: 请教高手:如何用matlab生成3D的voronoi图?