in reply to Re: Subroutine Subtrefuge
in thread Subroutine Subtrefuge

pc88mxer,

You've got it. <tag> would normally contain many polygons. Every edge is compared to all others.

Cartographers and surveyors use this method of analysis. It's native to a methodology that is universally employed by a Geospatial Information System (GIS).

The file being sucked-in is a Google Earth KML (Keyhole Markup Language). GE is known in the GIS industry as a "geo-browser" because it does not offer the above proximity analysis, among other things.

Come to think of it...I should have asked if it were possible to have the sub return true on the first occurrence of intersection within each key's values.

Thanks for the reply,

This newbie appreciates it!

Replies are listed 'Best First'.
Re^3: Subroutine Subtrefuge
by jethro (Monsignor) on Jun 08, 2008 at 13:24 UTC
    I think it would be easier to have the sub return true on every occurrence of intersection and let the caller sort that out, because there the necessary information is at hand

    foreach my $key (keys %points_by_name) { my $intersectionfound=0; for (my $i=0; $i<=@{$points_by_name{$key}}-4; $i+=2) { if (sub(@{$points_by_name{$key}}[$i..$i+3],$x2, $y2, $x3, $y3) and not $intersectionfound) { # found the first intersection of $key } } }
    If you really need the info in the sub, just pass $intersectionfound to the sub, as long as it is 0 (false) an intersection is the first intersection of a key (provided that the sub really returns true on found intersections and false otherwise).

    PS: I dropped your "excessive" indentation, so that the code fits into the editor window of the website ;-).