TriRep班上找到连接的三角形列表

7视图(30天)
我有一个三角形网格TriRep类型。我选择了一些面孔(或三角形)根据一些标准。这几个三角形连接组。我想知道有多少组这些三角形。
selectedFaces邻居(三)只给我连接一个三角形。如。
3南2
南南1
1 11 4
南12 3
%,三是TriRep三角形表示
selectedFaces是几个选择在TriRep面临的列表
上面的输出意味着一脸(输出)的第一行selectedFaces 3日和2日面对邻居和没有连接在一个边缘。
我们还可以看到,面对3输出的(第三行)连接到11和4和4的输出(第4行)连接到12除了3。
这意味着面临着1、2、3、4、11、12形成一个组或一连串的三角形。我想知道如果有任何方式找到这个连接不使用任何邻接矩阵或沃肖尔的算法。
任何帮助都是感激。
致以最亲切的问候
Wajahat
1评论
Wajahat
Wajahat 2012年5月1日
我找到了一个方法。
我首先计算一个稀疏的邻接矩阵(NxN)其中N是三角脸的总数。的一种方式得到邻接矩阵中提到:
//www.tianjin-qmedu.com/matlabcentral/newsreader/view_thread/46618
假设稀疏邻接矩阵的名称是:adjSpr
然后我用Matlab的柔术理论工具箱计算三角形连接:
(Sg, Cg) = graphconncomp (adjSpr);
在Sg给组的总数由连接三角形,和Cg细胞包含三角形在Sg面临数量的组。这个方法很有效。
可以可视化图形:
bg =生物运动描记器(adjSpr);
视图(bg);
稍微在邻接矩阵的计算是有效的方式:
numFaces = tris.size (1);
nbList = tris.neighbors;
adjMat = 0 (numFaces);
数= 1:numFaces
如果~ isnan (nbList(计数,1))
adjMat(计数,nbList(计数,1))= 1;
结束
如果~ isnan (nbList(统计,2))
adjMat(计数,nbList(统计,2))= 1;
结束
如果~ isnan (nbList(统计,3))
adjMat(计数,nbList(统计,3))= 1;
结束
结束
adjMat = adjMat-diag(诊断接头(adjMat));%去除对角自脸上总是连接到本身
致以最亲切的问候
Wajahat

登录置评。

接受的答案

理查德·布朗
理查德·布朗 2012年5月1日
为什么不你想定义一个邻接矩阵吗?如果你做,那么你可以使用 组件 在常规MATLAB-BGL
1评论
Wajahat
Wajahat 2012年5月2日
是的,这就是我发现,添加到上面的评论。
事实上这个函数,graphconncomp()做了同样的事情,是包含在Matlab生物工具箱(上图,我叫它图论工具箱,我的错)。
唯一的区别是,它使用一个稀疏矩阵。
所以要么创建一个邻接矩阵为稀疏矩阵或稠密矩阵可以转化为稀疏矩阵:
稀疏(densematrix)

登录置评。

更多的答案(0)

类别

找到更多的在指示图帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!