%-------------------------- % @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