Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re^2: Polygon interact other polygon

by tilly (Archbishop)
on Oct 25, 2004 at 17:37 UTC ( [id://402270]=note: print w/replies, xml ) Need Help??


in reply to Re: Polygon interact other polygon
in thread Polygon interact other polygon

That won't catch the case where one polygon is entirely inside the other.

Replies are listed 'Best First'.
Re^3: Polygon interact other polygon
by zentara (Archbishop) on Oct 26, 2004 at 12:52 UTC
    Good point. That is a case where the line segments need to be extended to infinity, before checking for intersection. Then using that in conjunction with the known x and y maximum and minimums, one should be able to figure out if one is inside another. It's an interesting problem. I can see a set of nested loops. You can probably do some "pre-filtering" of the line segment extreme endpoints, to determine which type of tests to perform. If all extreme endpoints of one polygon fall between the extreme endpoints of the other, and there is no intersection detected between segments.....??? Sounds like homework now.

    I'm not really a human, but I play one on earth. flash japh
      Not so easy. Imagine a polygon that tracks out a big "C, then turns around and makes that into a strip. The other is a small circle in the middle of the C. Looking at extreme endpoints it would look like the first contains the other but it doesn't. I'd suspect that nailing down all possible cases could be very hard.

      Without knowing the standard algorithm, my natural approach would be to try to find intersections. If there are none then take the polygon with the point with the largest x-value, take any point of the other polygon, pull out my complex analysis and calculate a winding number by numerical integration. (In that calculation you're viewing the point (x,y) is treated as the complex number x + yi.) If that comes out non-zero (within the tolerance of rounding errors), then the one is inside the other. Otherwise not.

        Complex numbers?....don't know if it would work but it sounds impressive. Sort of like jumping into hyper-space to do some calculation.

        My first thought would be to calculate the "area-points" of each polygon, and see if any points intersect, but your integration above probably does this in a clean manner.


        I'm not really a human, but I play one on earth. flash japh

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://402270]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others imbibing at the Monastery: (3)
As of 2024-03-29 01:22 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found