had a bug in my MslInPoly, when I checked for a valid crossing, it should've been <= instead of <.
so this line:
;=== Test for valid crossing
if (%x < $calc(%ax + %vt * (%bx - %ax))) { inc %cn }
should be:
;=== Test for valid crossing
if (%x <= $calc(%ax + %vt * (%bx - %ax))) { inc %cn }
and now:
unless inpoly literally is supposed to be points inside the surface of the polygon, and not points that are right on the very edge of the polygon (which is still on the defined surface).
In evaluating this image, you should come to the conclusion that mIRC got 4 out of 6 right, only missing one $inpoly and one $onpoly
Why?
1. mIRC found that the mouse poly was on the other poly
2. mIRC found 2 out of 3 line segments that were on the mouse poly
3. mIRC found 1 out of 2 line segment endpoints that were on the mouse poly.