The winding number program is written and tested, and does not assume the polygon to be convex.
rd=.(**|)&.+. NB. round complex number W=.rd@(%&0j2p1)@(+/)@:^.@(% _1&|.)NB. winding number p=.0j1^i.4 NB. test polygon rd p NB. display test polygon vertices 1 0j1 _1 0j_1 load'plot' plot (,{.)p NB. show polygon W p-2 NB. 2 is outside polygon 0 W p-0 NB. 0 is inside polygon 1 >________________________________ > Fra: Ian Clark <earthspo...@gmail.com> >Til: Programming forum <programming@jsoftware.com> >Sendt: 17:38 lørdag den 12. maj 2012 >Emne: Re: [Jprogramming] Irregularly shaped buttons > >Thanks, everyone. Plenty of ideas here. > >Lazy me: I was angling for some written & tested code. But at least I >know I won't be wasting my time reinventing the wheel. > >The "polygon" can't be assumed convex. In fact, since I'd like to >accommodate the most general shape, I'm going with either a binary >pixel mask (the crudest, easiest solution) or detecting the underlying >pixel color upon mouseclick. > > >On Fri, May 11, 2012 at 5:41 PM, Ian Clark <earthspo...@gmail.com> wrote: >> To save me reinventing the wheel, has anybody written routines to act >> on mouseclicks inside irregularly-shaped "buttons"? >> >> Techniques I'm considering: >> >> ++ Detecting if a point is inside an arbitrary polygon >> >> ++ Unions and differences of rectangles, triangles and sectors >> >> ++ Color of the pixel under the cursor >> >> If it works on a simple map of the USA, it'll probably work for my purpose. >---------------------------------------------------------------------- >For information about J forums see http://www.jsoftware.com/forums.htm > > > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm