tags:

views:

126

answers:

2

I've worked out a method to test if two one-dimensional line-segments/ranges.

So defining a range as:

[min, max]

Given two instances of range:

a = [min, max] 
b = [min, max]

I use the following to test if they intersect:

(a.max - b.min) * (b.max - a.min) >= 0.

I think this is a one-dimensional cross-product, so my question is:

Is this solution classified as a one-dimensional cross-product or something else?

+1  A: 

A one-dimensional cross product is merely x*y for x and y both real numbers. So I guess you could call this a one-dimensional cross product, but that's just a fancy name for a multiplication.

It's a cute trick, but I don't think it has any special consequence mathematically. Cross-products are all about vectors, not line segments.

Peter
Thanks Peter, yea I was just looking for a fancy name :)
Brian Heylin
+2  A: 

How about:

intersects = !((a.max < b.min) || (b.max < a.min))

That's faster (no multiply involved and a decent compiler will optimize the NOT away) and just as readable.

Aaron Digulla
Nice solution Aaron, I agree it's clearer than my solution, I think I'll use this instead in my code :)
Brian Heylin