📄 findtri.m
字号:
function triangle = findtri(pt,wvis,C)
%
% triangle = findtri(pt,w,C)
%
% Find triangle enclosing pt
% v1,v2,v3 = nodes forming the triangle
% pt = point of interest
% w = matrix of node locations
% C = matrix of links
%
NoTries = 3;
multitry = 0;
triangle = [];
dis=[];
large = 9999999999999;
% Compute distances to nodes from pt
dis=zeros(size(wvis,1),1);
for i=1:size(wvis,1)
dis(i) = norm(pt-wvis(i,:));
end
if multitry == 1
% examine nodes int turn starting with closest
tries = 0;
else
tries = size(dis,1)-NoTries; % only try two triangles. Need 2 since closest node is sometimes in adjacent traingle
end
while isempty(triangle)&(tries<size(dis,1))
[minval,s] = min(dis);
for k=1:size(C,1)-1 % -1 since we must find 2 links to form a triangle!
if (C(k,s)==1) % found a link
for l = k+1:size(C,1) % look for third node frominf triangle
if (C(k,l)==1 & C(s,l)==1) % have found third node
if intriang(pt,wvis(s,:),wvis(k,:),wvis(l,:))
triangle = [s,k,l];
%disp('Found triangle');
break;
end
end
end
if ~isempty(triangle)
break;
end
end
end
tries = tries+1; % increment no of nodes triedd counter
dis(s) = large; % exclude current winner from next iteration
end
if isempty(triangle)
% disp('Did not find a triangle!');
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -