'http://alienryderflex.com/polygon/
'QB64 version by Andy Amaya
_TITLE "Point in Polygon Function (screen 12)"
LINE (0, 0)-(639, 479), 1, BF
pip& = 0
minX% = 9999
maxX% = 0
minY% = 9999
maxY% = 0
numVerts% = rand(3, 4)
FOR i%
= 0 TO numVerts%
- 1 xp(i%) = rand(100, 540)
yp(i%) = rand(80, 440)
minX% = min(minX%, xp(i%))
maxX% = max(maxX%, xp(i%))
minY% = min(minY%, yp(i%))
maxY% = max(maxY%, yp(i%))
PRINT "Number of vertices: "; numVerts%
test% = pointInPoly(xx#, yy#, numVerts%)
pip& = pip& + 1
'drawPoly numVerts%, 5
PRINT "Number of points in polygon: "; pip&
total& = maxX% * maxY%
PRINT "Total number of points tested: "; total&
again% = 0
'a$ = ""
again% = 1
c = 0
v1 = (yp(i) <= y)
v2 = (y < yp(j))
v3 = (yp(j) <= y)
v4 = (y < yp(i))
v5 = (xp(j) - xp(i)) * (y - yp(i))
v6 = (yp(j) - yp(i))
IF v6
= 0.0 THEN v6
= 0.000001 v7 = xp(i%)
pointInPoly = c
j% = verts - 1
LINE (xp
(j%
), yp
(j%
))-(xp
(i%
), yp
(i%
)), colr%
j% = i%
rand
= INT(RND * (high%
- low%
+ 1)) + low%