is within ... polygon shape?

Alex Tweedly alex at tweedly.net
Fri Jun 24 19:10:18 EDT 2005


Jim Hurley wrote:

>
> Take a look at:
>
> go stack url "http://home.infostations.net/jhurley/CollidingPolygons.rev"
>
Sorry, Jim, but that doesn't work for all polygons. For example (excuse 
the ascii drawing ....)


        111111111
        1       1
        1       1
   22222222222222222222222
   2                     2
   22222222222222222222222
        1       1
        111111111

Even for 2  rectangles, it doesn't always work.  If I remember 
correctly, the most effective algorithm for overlap depends on edge 
intersections (with a special case test for one polygon entirely within 
the other). Any two polygons that overlap will have at least one case 
where their edges intersect - though you need to deal with the special 
cases where the edges touch; you can then test the mid-point of the 
edges adjacent to the point of touch to determine if they are within or 
outwith the other polygon (or alternatively, test the points 1 delta 
away from the point of touch - but then you need to be very careful 
about precision and rounding errors).

 And even then, you have some weird corner cases involved in 
self-reflexive polygons - far less Rev's "invisible edge" polygons which 
can produce disjoint areas.

(Is self-reflexive the right term ?  polygons that overlap themselves, like

     11111
     1   1
  111111111111111
  1             1
  111111111111  1
      1  1   1  1
      1  1   1  1
      1  11111  1
      1         1
      11111111111


You need to determine whether the points in the self-overlap area are 
within the polygon or not ...  and I can't remember which is the "right" 
decision, i.e. the one that makes the problem easier.

-- 
Alex Tweedly       http://www.tweedly.net



-- 
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.323 / Virus Database: 267.8.0/27 - Release Date: 23/06/2005



More information about the use-livecode mailing list