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
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode