This preview shows pages 1–2. Sign up to view the full content.
function [x0,y0,iout,jout] = intersections(x1,y1,x2,y2,robust)
%INTERSECTIONS Intersections of curves.
%
Computes the (x,y) locations where two curves intersect.
The curves
%
can be broken with NaNs or have vertical segments.
%
% Example:
%
[X0,Y0] = intersections(X1,Y1,X2,Y2,ROBUST);
%
% where X1 and Y1 are equallength vectors of at least two points and
% represent curve 1.
Similarly, X2 and Y2 represent curve 2.
% X0 and Y0 are column vectors containing the points at which the two
% curves intersect.
%
% ROBUST (optional) set to 1 or true means to use a slight variation of the
% algorithm that might return duplicates of some intersection points, and
% then remove those duplicates.
The default is true, but since the
% algorithm is slightly slower you can set it to false if you know that
% your curves don't intersect at any segment boundaries.
Also, the robust
% version properly handles parallel and overlapping segments.
%
% The algorithm can return two additional vectors that indicate which
% segment pairs contain intersections and where they are:
%
%
[X0,Y0,I,J] = intersections(X1,Y1,X2,Y2,ROBUST);
%
% For each element of the vector I, I(k) = (segment number of (X1,Y1)) +
% (how far along this segment the intersection is).
For example, if I(k) =
% 45.25 then the intersection lies a quarter of the way between the line
% segment connecting (X1(45),Y1(45)) and (X1(46),Y1(46)).
Similarly for
% the vector J and the segments in (X2,Y2).
%
% You can also get intersections of a curve with itself.
Simply pass in
% only one curve, i.e.,
%
%
[X0,Y0] = intersections(X1,Y1,ROBUST);
%
% where, as before, ROBUST is optional.
%
% Version: 1.10, 25 February 2008
% Author:
Douglas M. Schwarz
% Email:
dmschwarz=ieee*org, dmschwarz=urgrad*rochester*edu
% Real_email = regexprep(Email,{'=','*'},{'@','.'})
%
% Theory of operation:
%
% Given two line segments, L1 and L2,
%
%
L1 endpoints:
(x1(1),y1(1)) and (x1(2),y1(2))
%
L2 endpoints:
(x2(1),y2(1)) and (x2(2),y2(2))
%
% we can write four equations with four unknowns and then solve them.
The
% four unknowns are t1, t2, x0 and y0, where (x0,y0) is the intersection of
% L1 and L2, t1 is the distance from the starting point of L1 to the
% intersection relative to the length of L1 and t2 is the distance from the
This preview has intentionally blurred sections. Sign up to view the full version.
View Full Document
This is the end of the preview. Sign up
to
access the rest of the document.
 Spring '08
 HOROWITZ

Click to edit the document details