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:
Java Program to implement Circular Buffer
Java Convenience Factory Methods for Collections
XML Serialization and Deserialization with Jackson
Mix plain text and HTML content in a mail
Java Program to Implement Wagner and Fisher Algorithm for online String Matching
Spring Cloud AWS – S3
Spring Security Login Page with React
Java Program to Check whether Graph is a Bipartite using DFS
Java Program to Find the Vertex Connectivity of a Graph
How to Get All Spring-Managed Beans?
Tạo số và chuỗi ngẫu nhiên trong Java
Spring Data Java 8 Support
Java Program to Find Transpose of a Graph Matrix
Java Program to Implement Efficient O(log n) Fibonacci generator
Java Program to Sort an Array of 10 Elements Using Heap Sort Algorithm
Java Program to Implement Repeated Squaring Algorithm
Introduction to Liquibase Rollback
Weak References in Java
Java Program to find the maximum subarray sum O(n^2) time(naive method)
Convert Time to Milliseconds in Java
Introduction to the Functional Web Framework in Spring 5
Java Program to Implement Hash Tables with Double Hashing
Iterating over Enum Values in Java
The SpringJUnitConfig and SpringJUnitWebConfig Annotations in Spring 5
Java Program to Generate a Random Subset by Coin Flipping
HttpClient Basic Authentication
Concurrent Test Execution in Spring 5
Java Program to Implement EnumMap API
Java Program to Compute DFT Coefficients Directly
Guide to DelayQueue
Java Program to Describe the Representation of Graph using Incidence List
Java Program to implement Priority Queue