Re: mathmatical question..
- Posted by Michael Bolin <michaeltom at GEOCITIES.COM> May 30, 1997
- 887 views
> Hi everyone! > > Can anyone give me nice answer over the problem below; > > --- here goes problem, > > Assumes the polygon with arbitrary numbers of points is drawn on the > pixel-graphics screen, for example; > > polygon(RED,1,{{100,200},{200,200},......,} > > Problem is: > How can I know whether the mouse pointer is INSIDE the polygon or not, > at the time the mouse button is pressed? Here's a function that will do this. It computes the number of line intersections mathematically, and will work for any polygon. Regards, Michael Bolin --------------------------------------------------- function inside(sequence point,sequence points) atom x1,y1,x2,y2,x,y,min,max integer intersections intersections=0 x=point[1] y=point[2] x2=points[length(points)][1] y2=points[length(points)][2] for t=1 to length(points) do point=points[t] x1=point[1] y1=point[2] if y1!=y2 then min=y1 max=y2 if y2<y1 then min=y2 max=y1 else min=y1 max=y2 end if if y>min and y<=max then if x<=x1+(x2-x1)/(y2-y1)*(y-y1) then intersections=intersections+1 end if end if end if x2=x1 y2=y1 end for return remainder(intersections,2) end function ------------------------------------