function l=overlapLength(x1,y1,x2,y2) l=0; if length(x1) == 1 max1 = max(x1,y1); min1 = min(x1,y1); max2 = max(x2,y2); min2 = min(x2,y2); if (min1 >= max2) || (min2 >= max1) %case1 l=0; elseif (max2 > min1 && min1 > min2) %case2 l= max2-min1; elseif max2 > min1 && min2 >= min1 && max2 <= max1 %case4 l = max2 - min2; elseif max1 > min2 && min1 >= min2 && max1 <= max2 % case5 l= max1-min1; elseif max2 >= max1 && min1 < min2 %case3 l = max1 - min2; end return; else if x1(1) == x1(2) && x2(1) == x2(2) && x1(1) == x2(1) l=overlapLength(y1(1),y1(2),y2(1),y2(2)); return; elseif y1(1) == y1(2) && y2(1) == y2(2) && y1(1) == y2(1) l=overlapLength(x1(1),x1(2),x2(1),x2(2)); return; elseif x1(1) ~= x1(2) && x2(1) ~= x2(2) m(1) = (y1(2)-y1(1))/(x1(2)-x1(1)); b(1) = y1(1) - m(1)*x1(1); m(2) = (y1(2)-y1(1))/(x1(2)-x1(1)); b(2) = y2(1) - m(2)*x2(1); m= round(m.*10^7)./10^7; b= round(b.*10^7)./10^7; if (m(1) == m(2) && b(1) == b(2)) x0 = -b(1)/m(1); hyp1(1) = sqrt( y1(1)^2 + (x1(1)-x0)^2); hyp1(2) = sqrt( y1(2)^2 + (x1(2)-x0)^2); hyp2(1) = sqrt( y2(1)^2 + (x2(1)-x0)^2); hyp2(2) = sqrt( y2(2)^2 + (x2(2)-x0)^2); l = overlapLength(hyp1(1),hyp1(2),hyp2(1),hyp2(2)); return; end end end end