Updated readability of the code.
[sixth-3d.git] / src / main / java / eu / svjatoslav / sixth / e3d / geometry / Polygon.java
index b630ca3..5475bad 100644 (file)
@@ -9,26 +9,37 @@ package eu.svjatoslav.sixth.e3d.geometry;
  */
 public class Polygon {
 
-    private static boolean intersectsLine(final Point2D point, Point2D p1,
-                                          Point2D p2) {
 
-        if (p1.y > p2.y) {
-            final Point2D tmp = p1;
-            p1 = p2;
-            p2 = tmp;
+    /**
+     * Checks if point is on the right side of the line.
+     * @param point point to check
+     * @param lineP1 line start point
+     * @param lineP2 line end point
+     * @return true if point is on the right side of the line
+     */
+    private static boolean intersectsLine(final Point2D point, Point2D lineP1,
+                                          Point2D lineP2) {
+
+        // Sort line points by y coordinate. 
+        if (lineP1.y > lineP2.y) {
+            final Point2D tmp = lineP1;
+            lineP1 = lineP2;
+            lineP2 = tmp;
         }
 
-        if (point.y < p1.y)
+        // Check if point is within line y range.
+        if (point.y < lineP1.y)
             return false;
-        if (point.y > p2.y)
+        if (point.y > lineP2.y)
             return false;
 
-        final double xp = p2.x - p1.x;
-        final double yp = p2.y - p1.y;
+        // 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 - p1.y;
+        final double yp2 = point.y - lineP1.y;
 
-        final double crossX = p1.x + ((xp * yp2) / yp);
+        final double crossX = lineP1.x + ((xp * yp2) / yp);
 
         return point.x >= crossX;