You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

34 lines
1.1 KiB

%--------------------------
% @Author: Jingqiao Hu
% @Date: 2022-01-06 15:33:25
% @LastEditTime: 2022-01-27 11:29:02
% specifically for those repeated edges with opposite directions
%--------------------------
function [edges1] = unique_edges(edges0)
% remove repeated edges with opposite direction
dir1 = edges0(:, 4:6) - edges0(:, 1:3);
IDX = 1:size(dir1, 1);
negIDX = IDX(abs(dir1(:, 1)) > 1e-5 & dir1(:,1) < 0);
borderIDX1 = find(abs(dir1(:, 1)) < 1e-5 & abs(dir1(:, 2)) > 1e-5 & dir1(:, 2) < 0);
borderIDX2 = find(abs(dir1(:, 1)) < 1e-5 & abs(dir1(:, 2)) < 1e-5 &...
dir1(:, 3) < 0);
negIDX = [negIDX(:); borderIDX1(:); borderIDX2(:)];
posIDX = setdiff(IDX, negIDX);
edges2(negIDX, :) = [edges0(negIDX, 4:6), edges0(negIDX, 1:3)];
edges2(posIDX, :) = edges0(posIDX, :);
% e0(:,1) = mean(edges0(:,[1,4]), 2);
% e0(:,2) = mean(edges0(:,[2,5]), 2);
% e0(:,3) = mean(edges0(:,[3,6]), 2);
[~, ia, ~] = uniquetol(edges2, 'ByRows', true );
% [~, ia, ~] = unique(edges2, 'rows');
%
edges1 = edges0(ia,:);
end