perp

Contents

intersect two lines

p1 = [5 2];
p2 = [2 4];
k1 = [0.4 0.8];
k2 = [0.9 0.1];

p= [p1; p1+10*k1];
plot(p(:,1),p(:,2),'k','LineWidth',2);
hold on
plot(p1(1),p1(2),'ko','MarkerSize',7);
p= [p2; p2+10*k2];
plot(p(:,1),p(:,2),'b','LineWidth',2);
plot(p2(1),p2(2),'bo','MarkerSize',7);
hold off
grid
axis equal

A = [k1' -k2'];
b = [p2-p1]';
q = A\b;
pt = p1+q(1)*k1;
fprintf('intersection %g %g\n',pt);

hold on
plot(pt(1),pt(2),'rs','MarkerSize',11);
hold off
disp('q');
disp(q)
intersection 6.23529 4.47059
q
    3.0882
    4.7059

equation: exact solution

D =det(A);
Ai = [A(2,2) -A(1,2); -A(2,1) A(1,1)];
qt = Ai/D*b;
disp('qt');
disp(qt);
qt
    3.0882
    4.7059

alt equation

pt2 = intersect_lines([p1; p2],[k1;k2]);
fprintf('difference between solutions: %g\n', norm(pt2-pt));
difference between solutions: 1.98603e-15