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