Contents

Function sameSide

Description: sameSide Technique for working out if points a and b are on the same side of the line p1->p2 fast matlab implementation of code initially from http://www.blackpawn.com/texts/pointinpoly/default.html

function Pin=sameSide(p1,p2,a,b)

Do this code instead

BminusA=[b-a]';
P1minusA=[p1-a]';
%this is the formula for cross product
cp1 =[BminusA(2,:).*P1minusA(3,:)-BminusA(3,:).*P1minusA(2,:),...
      BminusA(3,:).*P1minusA(1,:)-BminusA(1,:).*P1minusA(3,:),...
      BminusA(1,:).*P1minusA(2,:)-BminusA(2,:).*P1minusA(1,:)];


P2minusA=[p2-a]';
cp2 =[BminusA(2,:).*P2minusA(3,:)-BminusA(3,:).*P2minusA(2,:),
      BminusA(3,:).*P2minusA(1,:)-BminusA(1,:).*P2minusA(3,:),
      BminusA(1,:).*P2minusA(2,:)-BminusA(2,:).*P2minusA(1,:)];
%this is quicker than dot product
if sum(cp1'.*cp2)>=0
    Pin=1;
else
    Pin=0;
end