So I’ve implemented an even-odd algorithm to detect if a point is within a simple polygon which works. The problem I’m facing now is checking if its on the edge of the polygon, which I want to return true but an even-odd check returns as false.
So the possibilities I’ve considered to do this is to do either one of the following tests:
1.
Let the line of the polygon I’m testing be defined as the vector B-A, and the point I’m checking C. I would just simply do
Thats rather simple, but this equation would be used on every frame so I’d probably use the more complex…
2.
Convert the vector to a y=mx+c line, and go from there
But I’m interested if there is an algorithm which will do it without a lot of different tests? Because my two solutions require me to first run the regular even-odd check, and then follow up with some more (potentially expensive) maths.
You can use my GJK distance and intersection algorithm here:
This algorithm can find the distance and intersection of any convex shape in up to 3 dimensions. It currently returns intersections including touching, although this could be easily changed by changing the inequality on line 86 to be <=.