This is a Java Program to Implement Jarvis Algorithm. Jarvis algorithm or the gift wrapping algorithm is an algorithm for computing the convex hull of a given set of points.
Here is the source code of the Java Program to Implement Jarvis Algorithm. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
/** ** Java Program to Implement Jarvis Algorithm **/ import java.util.Scanner; import java.util.Arrays; /** Class point **/ class Point { int x, y; } /** Class Jarvis **/ public class Jarvis { private boolean CCW(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 false; return true; } public void convexHull(Point[] points) { int n = points.length; /** if less than 3 points return **/ if (n < 3) return; int[] next = new int[n]; Arrays.fill(next, -1); /** find the leftmost point **/ int leftMost = 0; for (int i = 1; i < n; i++) if (points[i].x < points[leftMost].x) leftMost = i; int p = leftMost, q; /** iterate till p becomes leftMost **/ do { /** wrapping **/ q = (p + 1) % n; for (int i = 0; i < n; i++) if (CCW(points[p], points[i], points[q])) q = i; next[p] = q; p = q; } while (p != leftMost); /** Display result **/ display(points, next); } public void display(Point[] points, int[] next) { System.out.println("\nConvex Hull points : "); for (int i = 0; i < next.length; i++) if (next[i] != -1) System.out.println("("+ points[i].x +", "+ points[i].y +")"); } /** Main function **/ public static void main (String[] args) { Scanner scan = new Scanner(System.in); System.out.println("Jarvis Algorithm Test\n"); /** Make an object of Jarvis class **/ Jarvis j = new Jarvis(); System.out.println("Enter number of points n :"); int n = scan.nextInt(); Point[] points = new Point[n]; System.out.println("Enter "+ n +" x, y cordinates"); for (int i = 0; i < n; i++) { points[i] = new Point(); points[i].x = scan.nextInt(); points[i].y = scan.nextInt(); } j.convexHull(points); } }
Jarvis Algorithm Test Enter number of points n : 8 Enter 8 x, y cordinates 0 3 4 2 3 5 5 3 3 0 1 1 1 2 2 2 Convex Hull points : (0, 3) (3, 5) (5, 3) (3, 0) (1, 1)
Related posts:
Cơ chế Upcasting và Downcasting trong java
Receive email using IMAP
Java Program to Implement Counting Sort
Java Program to Implement Hash Tables with Linear Probing
Tìm hiểu về Web Service
Join and Split Arrays and Collections in Java
Java Program to Find Second Smallest of n Elements with Given Complexity Constraint
Loại bỏ các phần tử trùng trong một ArrayList như thế nào trong Java 8?
Các chương trình minh họa sử dụng Cấu trúc điều khiển trong Java
Java Program to Find Maximum Element in an Array using Binary Search
Java Program to Implement Quick Sort with Given Complexity Constraint
Request a Delivery / Read Receipt in Javamail
Java Program to Implement Sorted Array
How to Count Duplicate Elements in Arraylist
Java Program to Implement Stack API
Java Program to Implement Trie
JUnit 5 @Test Annotation
Java Timer
Sort a HashMap in Java
Java – Delete a File
Spring REST API + OAuth2 + Angular (using the Spring Security OAuth legacy stack)
Spring – Injecting Collections
Java 8 Stream API Analogies in Kotlin
Adding Parameters to HttpClient Requests
Receive email using POP3
Java Program to do a Breadth First Search/Traversal on a graph non-recursively
Vòng lặp for, while, do-while trong Java
Introduction to Apache Commons Text
Spring Security OAuth2 – Simple Token Revocation
Một số ký tự đặc biệt trong Java
Java Program to Find Transitive Closure of a Graph
Jackson – Unmarshall to Collection/Array