It is all about intervals.. if you define a rectangle using pair of intervals (2-dimensional):
[ a .. b ) then it contains all points between a and b, including a, but not including b and therefore rectangles [ a.. b ) and [b .. c ) (where c >b) do not intersect. if rectangle defined as pair of intervals: [ a .. b ] then it contains all points between a and b, including a AND b and of course [ a .. b ] and [b .. c ] (where c >b) will overlap. the problem is if you using [ ) intervals, then how you represent degenerate (zero-width or zero-height) rectangles.. because interval [a .. a) holds a contradiction: it includes 'a', but not includes 'a', which makes no sense. and then you have interesting questions, like do intervals [a..a) and [a..b) overlap? While if using [a..a] there's no problem.. [a..a] certainly overlaps with [a..b] But from other side, if we will use [...] intervals, then there is no way to split interval to get two non-overlapping ones: [a..b] => [a..c] + [c..b] (a<=c<=b) But i am not sure whether it will have significant impact or not. So, here my question: what interval type is better [) or [] ? Existed implementation uses [) -- Best regards, Igor Stasenko.
