Polygon's share of its rectangle inconsistent?

Dar Scott dsc at swcp.com
Thu Jun 6 21:06:28 EDT 2013


I'm doing something wrong.

I tried your function and I get almost 100%.  The function within seems to work on the bounding rectangle not the shape.

With this mod, I do get 100 percent:

function coverage obLID
  set the filled of obLID to true
  put the rect of obLID into r
  repeat with x = (item 1 of r) to (item 3 of r)-1
     repeat with y = (item 2 of r) to (item 4 of r)-1
        put x,y into pt
        if within(obLID,pt) then add 1 to isIn
        add 1 to all
     end repeat
  end repeat
  return isIn/all
end coverage

I subtracted 1 from the right and bottom.

Dar


On Jun 6, 2013, at 5:39 PM, David Epstein wrote:

> In order to properly adjust the relative area of two dissimilar polygons, I thought I would use a function to determine the fraction of each polygon's rectangle that is covered by the polygon.
> 
> function coverage obLID
>   set the filled of obLID to true
>   put the rect of obLID into r
>   repeat with x = (item 1 of r) to (item 3 of r)
>      repeat with y = (item 2 of r) to (item 4 of r)
>         put x,y into pt
>         if within(obLID,pt) then add 1 to isIn
>         add 1 to all
>      end repeat
>   end repeat
>   return isIn/all
> end coverage
> 
> This seems to work as expected, but I am perplexed by the fact that when I resize an object keeping its proportions constant (drag a corner with the shift key down; or script this) I get a surprising variation in the result.  E.g., a fairly simple shape I tried went from 0.48 coverage up to 0.59 coverage when I shrank its dimensions by about two-thirds.  With tens or hundreds of thousands of pixels being sampled in the calculation, I would not expect this variation.
> 
> Many thanks for any insights or suggestions.
> 
> David Epstein
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode





More information about the use-livecode mailing list