This is a Java Program to check whether a polygon contains another polygon or not. The class returns true if one polygon contains another, false otherwise.
Here is the source code of the Java Program to Perform Polygon Containment Test. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
//This is a java program to test whether a polygon is inside another polygon class Point { int x, y; Point() { } Point(int p, int q) { x = p; y = q; } } public class Position_Point_WRT_Polygon { public static boolean onSegment(Point p, Point q, Point r) { if (q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y)) return true; return false; } public static int orientation(Point p, Point q, Point r) { int val = (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y); if (val == 0) return 0; return (val > 0) ? 1 : 2; } public static boolean doIntersect(Point p1, Point q1, Point p2, Point q2) { int o1 = orientation(p1, q1, p2); int o2 = orientation(p1, q1, q2); int o3 = orientation(p2, q2, p1); int o4 = orientation(p2, q2, q1); if (o1 != o2 && o3 != o4) return true; if (o1 == 0 && onSegment(p1, p2, q1)) return true; if (o2 == 0 && onSegment(p1, q2, q1)) return true; if (o3 == 0 && onSegment(p2, p1, q2)) return true; if (o4 == 0 && onSegment(p2, q1, q2)) return true; return false; } public static boolean isInside(Point polygon[], int n, Point p) { int INF = 10000; if (n < 3) return false; Point extreme = new Point(INF, p.y); int count = 0, i = 0; do { int next = (i + 1) % n; if (doIntersect(polygon[i], polygon[next], p, extreme)) { if (orientation(polygon[i], p, polygon[next]) == 0) return onSegment(polygon[i], p, polygon[next]); count++; } i = next; } while (i != 0); return (count & 1) == 1 ? true : false; } public static Boolean DoesPolygonContainPolygon(Point[] p1, Point[] p2) { Point p; for (int i = 0; i < p2.length; i++) { p = new Point(p2[i].x, p2[i].y); if (!isInside(p1, p1.length, p)) return false; } return true; } public static void main(String args[]) { Point polygon1[] = { new Point(0, 0), new Point(10, 0), new Point(10, 10), new Point(0, 10) }; Point polygon2[] = { new Point(0, 0), new Point(15, 5), new Point(5, 0) }; Point polygon3[] = { new Point(0, 0), new Point(10, 0), new Point(10, 10), new Point(0, 10), new Point(5, 5) }; System.out.println("Polygon 1 contains Polygon 2 :" + DoesPolygonContainPolygon(polygon1, polygon2)); System.out.println("Polygon 3 contains Polygon 1 :" + DoesPolygonContainPolygon(polygon3, polygon1)); } }
Output:
$ javac Polygon_Containment_Test.java $ java Polygon_Containment_Test Polygon 1 contains Polygon 2 :false Polygon 3 contains Polygon 1 :true
Related posts:
Overview of Spring Boot Dev Tools
Java Program to Implement Lloyd’s Algorithm
The Difference Between map() and flatMap()
Multipart Upload with HttpClient 4
Java Program to Implement String Matching Using Vectors
Java Program to Check Whether an Undirected Graph Contains a Eulerian Cycle
Java Program to Solve Knapsack Problem Using Dynamic Programming
Guide to CopyOnWriteArrayList
Upload and Display Excel Files with Spring MVC
Java Program to Implement the Monoalphabetic Cypher
Marker Interface trong Java
Guide to the Fork/Join Framework in Java
Model, ModelMap, and ModelAndView in Spring MVC
Java Program to Implement the Schonhage-Strassen Algorithm for Multiplication of Two Numbers
DynamoDB in a Spring Boot Application Using Spring Data
HashSet trong java
Iterating over Enum Values in Java
Custom Cascading in Spring Data MongoDB
Java Program to Check if a Directed Graph is a Tree or Not Using DFS
Spring Boot - Batch Service
Java Program to Check whether Undirected Graph is Connected using BFS
Java Program to Implement ArrayDeque API
Using the Not Operator in If Conditions in Java
Hướng dẫn Java Design Pattern – Prototype
Mảng (Array) trong Java
Predicate trong Java 8
Đồng bộ hóa các luồng trong Java
Java Program to Implement Bucket Sort
Java Program to Find Location of a Point Placed in Three Dimensions Using K-D Trees
Guide to java.util.Formatter
Jackson – Unmarshall to Collection/Array
Java Program to Implement Hopcroft Algorithm