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
905 B
34 lines
905 B
%--------------------------
|
|
% @Author: Jingqiao Hu
|
|
% @Date: 2021-12-13 20:05:32
|
|
% @LastEditTime: 2021-12-22 14:24:48
|
|
|
|
% rangesearch, for filter
|
|
%--------------------------
|
|
function [neighbors, center_nodes] = neighbor_faces(nodes_cell, faces_cell, r)
|
|
|
|
ncvt = size(nodes_cell, 1);
|
|
neighbors = cell(ncvt, 1);
|
|
center_nodes = cell(ncvt, 1);
|
|
|
|
for ele = 1:ncvt
|
|
nodes = nodes_cell{ele};
|
|
faces = faces_cell{ele};
|
|
|
|
x = nodes(:, 1);
|
|
y = nodes(:, 2);
|
|
x = x(faces); % [m,3]
|
|
y = y(faces);
|
|
cx = mean(x, 2);
|
|
cy = mean(y, 2);
|
|
|
|
Mdl = KDTreeSearcher([cx, cy]);
|
|
neighbors{ele} = rangesearch(Mdl, [cx, cy], r);
|
|
|
|
% tmp = neighbors{ele}{1};
|
|
% r1 = [cx(tmp), cy(tmp)] - repmat([cx(1), cy(1)], length(tmp), 1);
|
|
% vecnorm(r1)
|
|
|
|
center_nodes{ele} = [cx, cy];
|
|
end
|
|
end
|