The function below determines for any point (x,y) whether it is within an oval 
graphic or not. You may add your own criteria like colour or fill/transparency 
or visibility ...

There is one "uncertainty by default", the border, that is drawn with half of 
the lineSize outside the object. LC is also sloppy with the rect of objects 
with large lineSizes.

For a function that covers all seven types of LC graphics objects see the 
function "hhPointWithinGrc" of my stack #47 ("pointInShape") in
forums.livecode.com/viewtopic.php?f=76&t=19248

function pointWithinOval G, p
  -- G is the short name or the number of an *oval* graphic
  -- p is a point in local coords, for example the clickloc
  if p is not within the rect of grc G then return false
  put the loc of grc G into lc
  put the width of grc G into w
  put the height of grc G into h
  put h*(item 1 of p - item 1 of lc) into d1
  put w*(item 2 of p - item 2 of lc) into d2
  put the arcAngle of grc G into c2
  if c2 < 360 then
    put the startAngle of grc G into c1
    put (c1 + c2) into c3
    if d2 < 0 then put 0 - atan2(d2,d1)*180/pi into c
    else put 360 - atan2(d2,d1)*180/pi into c
    if c3 <= 360 then put ( (c1 <= c) and (c <= c3) ) into cc
    else put ( (c1 <= c) or (c <= c3 - 360) ) into cc
    return ( ( 4*d1^2 + 4*d2^2 <= w^2*h^2 ) and cc )
  else return  ( 4*d1^2 + 4*d2^2 <= w^2*h^2 )
end pointWithinOval

Hermann
_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to