private static boolean intersectsLine(final Point2D point, Point2D lineP1,
Point2D lineP2) {
- // Sort line points by y coordinate.
+ // Sort line points by y coordinate.
if (lineP1.y > lineP2.y) {
final Point2D tmp = lineP1;
lineP1 = lineP2;
}
// Check if point is within line y range.
- if (point.y < lineP1.y)
- return false;
- if (point.y > lineP2.y)
+ if (point.y < lineP1.y || point.y > lineP2.y)
return false;
// Check if point is on the line.
final double xp = lineP2.x - lineP1.x;
final double yp = lineP2.y - lineP1.y;
- final double yp2 = point.y - lineP1.y;
-
- final double crossX = lineP1.x + ((xp * yp2) / yp);
+ final double crossX = lineP1.x + ((xp * (point.y - lineP1.y)) / yp);
return point.x >= crossX;
-
}
public static boolean pointWithinPolygon(final Point2D point,