-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathns_edgeMidVrtxAverage.m
More file actions
34 lines (27 loc) · 888 Bytes
/
ns_edgeMidVrtxAverage.m
File metadata and controls
34 lines (27 loc) · 888 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
%% Averaging intermediate vertices
% If intermediate vertices are very close, redistribute them to make almost
% uniform edge length
function [emdn,rfn]=ns_edgeMidVrtxAverage(emd,edpc)
% compute piecewise length
eln=sqrt(sum((emd(2:end,:)-emd(1:end-1,:)).^2,2));
% compute number of intermediate vertices
rfn=floor(sum(eln)/edpc);
eln=eln/sum(eln);
% specify line parameter for piecewise linear function
erg=zeros(size(eln,1)+1,1);
for ii=2:size(erg)
erg(ii)=sum(eln(1:ii-1));
end
% redistribute intermediate vertices
cnp=(1/(rfn+1))*(1:rfn);
nmd=zeros(size(cnp,2),2);
for ii=1:size(emd,1)-1
for jj=1:size(nmd,1)
nmd(jj,:)=nmd(jj,:)+...
(emd(ii,:)+(cnp(jj)-erg(ii))/(erg(ii+1)-erg(ii))*...
(emd(ii+1,:)-emd(ii,:)))*(heaviside(erg(ii+1)-cnp(jj))-...
heaviside(erg(ii)-cnp(jj)));
end
end
emdn=[emd(1,:);nmd;emd(end,:)];
end