


edges=meshedge(elem,opt)
return all edges in a surface or volumetric mesh
author: Qianqian Fang, <q.fang at neu.edu>
date: 2011/02/26
input:
elem: element table of a mesh (support N-d space element)
opt: optional input, giving the additional options. If opt
is a struct, it can have the following field:
opt.nodeorder: if 1, assuming the elem node indices is in CCW
orientation; 0 use nchoosek() output to order edges
you can replace opt by a series of ('param', value) pairs.
output:
edge: edge list; each row is an edge, specified by the starting and
ending node indices, the total edge number is
size(elem,1) x nchoosek(size(elem,2),2). All edges are ordered
by looping through each element first.
-- this function is part of iso2mesh toolbox (http://iso2mesh.sf.net)

0001 function edges=meshedge(elem,varargin) 0002 % 0003 % edges=meshedge(elem,opt) 0004 % 0005 % return all edges in a surface or volumetric mesh 0006 % 0007 % author: Qianqian Fang, <q.fang at neu.edu> 0008 % date: 2011/02/26 0009 % 0010 % input: 0011 % elem: element table of a mesh (support N-d space element) 0012 % opt: optional input, giving the additional options. If opt 0013 % is a struct, it can have the following field: 0014 % opt.nodeorder: if 1, assuming the elem node indices is in CCW 0015 % orientation; 0 use nchoosek() output to order edges 0016 % you can replace opt by a series of ('param', value) pairs. 0017 % 0018 % output: 0019 % edge: edge list; each row is an edge, specified by the starting and 0020 % ending node indices, the total edge number is 0021 % size(elem,1) x nchoosek(size(elem,2),2). All edges are ordered 0022 % by looping through each element first. 0023 % 0024 % -- this function is part of iso2mesh toolbox (http://iso2mesh.sf.net) 0025 % 0026 0027 dim=size(elem); 0028 edgeid=nchoosek(1:dim(2),2); 0029 len=size(edgeid,1); 0030 edges=zeros(dim(1)*len,2); 0031 for i=0:len-1 0032 edges((i*dim(1)+1):((i+1)*dim(1)),:)=[elem(:,edgeid(i+1,1)) elem(:,edgeid(i+1,2))]; 0033 end