4 ms·
I'm guessing that the cross product magic was a hit test for a triangle. Here's an explanation: http://www.blackpawn.com/texts/pointinpoly/default.html http://
by bazzargh 14y ago
I'm guessing that the cross product magic was a hit test for a triangle. Here's an explanation:
http://www.blackpawn.com/texts/pointinpoly/default.html http://www.blackpawn.com/texts/pointinpoly/default.html
- slig 14y agoGot it, thanks! Should've thought about googling "hit test triangle".
- jamesmiller5 14y agoHere are a few different solutions to determine if a point is in a polygon with code examples. I think solution 3 might be applicable and faster. Section: Determining if a point lies on the interior of a polygon http://paulbourke.net/geometry/polygonmesh/ http://paulbourke.net/geometry/polygonmesh/
- bazzargh 14y agoYup, that looks right, but it can be made even simpler in this case because one of the segments is always vertical. var prevOffset = prev.x-lowerRight.x; loc.x < lowerRight.x && (loc.y-prev.y)*-prevOffset-(loc.x-prev.x)*(upperRight.y-prev.y) <0 && (loc.y-lowerRight.y)*prevOffset-(loc.x-lowerRight.x)*(prev.y-lowerRight.y) < 0 This is in fact equivalent to what's in jQuery.menu-aim.js, eg upperSlope < prevUpperSlope => upperSlope - prevUpperSlope < 0, then inline slope() and multiply through by the denominators. I'd prefer the code above though, as there's no icky division by zero.