-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathtrajs_intersect.m
executable file
·33 lines (28 loc) · 961 Bytes
/
trajs_intersect.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
function [lambdas, poses, bIntersect, trajsNodeIndices, trajsLambdas] = trajs_intersect(p1, p2, trajs)
nTraj = size(trajs, 1);
eps = 1e-1;
lambdas = zeros(nTraj, 1);
poses = zeros(nTraj, 2);
trajsNodeIndices = zeros(nTraj, 1);
trajsLambdas = zeros(nTraj, 1);
bIntersect = false(nTraj, 1);
for j = 1:nTraj
nNode = size(trajs{j}, 1);
if nNode < 2
continue;
end;
ps = zeros(nNode-1, 2);
lambda1s = zeros(nNode-1, 1);
lambda2s = zeros(nNode-1, 1);
for i = 1:nNode-1
%fprintf(1, 'traj node = %d/%d\n', i, nNode-1);
% two line intersection...
[ps(i, :), lambda1s(i), lambda2s(i)] = line_intersect(p1, p2, trajs{j}(i, :), trajs{j}(i+1, :));
end;
[minDist, minIndex] = min(dist_to_01(lambda2s));
poses(j, :) = ps(minIndex, :);
trajsNodeIndices(j) = minIndex;
trajsLambdas(j) = lambda2s(minIndex);
lambdas(j) = lambda1s(minIndex);
bIntersect(j) = (minDist < eps);
end;