Hi Ian
The following solution was issued to the programming forum on may 14, 2012. I 
believe it will solve your problem.
- Bo


The condition that the zero point is inside the polygon is that the winding 
angle is nonzero.
   zero_inside_polygon =. [: nonzero winding
The nonzero condition must be tolerant because rounding errors may make a 
theoretical zero look like nonzero. But nonzero winding angles are 
integer multiples of 0j2p1, so a robust condition is

   nonzero=.[:>&1|
A simple winding angle algorithm is
   winding=.[:+/[:^.(%1&|.)

   plot(,{.)p2=.0.1++:p,+:+p=.0j1^i.4NB. p2 =. nonconvex test polygon
   zero_inside_polygon p2+3
1
   zero_inside_polygon
 p2
0   zero_inside_polygon f. NB. final program (25 chars)

[:([:>&1|)[:+/[:^.(%1&|.)







>________________________________
> Fra: Ian Clark <[email protected]>
>Til: Programming forum <[email protected]> 
>Sendt: 10:10 torsdag den 30. maj 2013
>Emne: [Jprogramming] Verifying a mouseclick is inside a rectangle
> 
>
>Reinventing The (Square) Wheel Department.
>
>Problem: given a rectangle ABCD defined by four points on the xy-plane,
>detect whether a given point (a mouseclick) falls inside ABCD. Note that
>side AB isn't necessarily parallel to the x or y axes.
>
>Currently I'm using a cumbersome algorithm based on deciding which side of
>a straight line the given point lies. The only thing in its favor is that
>it generalizes to handle an irregular convex polygon. But that's not needed
>here.
>
>It would be nice to transform the rectangle to situate A at the origin,
>then apply a simple range check on x and y. In practice it would only be
>the mouseclick that got transformed (by the inverse matrix). I can't
>believe someone hasn't already got a slick verb to do it. Games programmers
>must do it all the time!
>
>It would be nice too to see a solution using complex numbers instead of
>2-by-2 matrices. I read somewhere that complex numbers were actually
>developed before matrix theory, allegedly to handle coordinate geometry on
>the 2-plane. Can anyone verify or refute this?
>
>Displacement in the xy-plane can't normally be represented by a linear
>transformation, but long ago I read of a way of introducing a third virtual
>z-axis, which did allow both rotation and displacement to be handled in one
>shot by a 3-by-3 matrix. Does anybody know of this technique?
>----------------------------------------------------------------------
>For information about J forums see http://www.jsoftware.com/forums.htm
>
>
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to