Math question: How to compute the area of polygons
Geoff Canyon
gcanyon at inspiredlogic.com
Wed Mar 19 20:57:18 EST 2003
On Wednesday, March 19, 2003, at 09:40 AM, Dar Scott wrote:
> Ah, I just mailed off the same idea. There is a hole. That is the
> case of one being completely inside the other. I covered that in my
> mailing, but it may not be needed.
>
Good catch. I just though of an alternative:
There is a fairly simple and quick test to see if a point is inside a
polygon of any shape: from the point, draw an imaginary horizontal line
either to the right or left, to infinity. Get the formula for that
line, and figure out how many line segments of the polygon it
intersects. If it intersects an odd number, the point is inside the
polygon. If it intersects an even number, the point is outside the
polygon. It's a fairly fast check because the formula for a horizontal
line is easy to work with/find intersections with. You have to watch
out if the point has the same y component as any of the endpoints of
the polygon -- that reverses the answer, I believe.
So, using that test, you test points from each of the polygons to see
if they are inside of each other. You have to test points from both
polygons, since the pointy bit of either could be sticking into the
other, without any points of the other being inside the first.
The first point you find that is inside the other, you have a hit and
you exit. The tricky bit is figuring out which points to test -- don't
test them all, it's too much work. But that's optimization, left as an
exercise for the reader ;-)
regards,
Geoff Canyon
gcanyon at inspiredlogic.com
More information about the use-livecode
mailing list