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:
Check If Two Lists are Equal in Java
Java Program to Implement LinkedBlockingQueue API
Java – Reader to InputStream
Java – Convert File to InputStream
Java Program to Implement Red Black Tree
Reversing a Linked List in Java
Giới thiệu HATEOAS
Spring MVC Async vs Spring WebFlux
More Jackson Annotations
Spring Boot Configuration with Jasypt
How to Read a File in Java
Java Multi-line String
Using a Custom Spring MVC’s Handler Interceptor to Manage Sessions
Java String to InputStream
Sử dụng JDBC API thực thi câu lệnh truy vấn dữ liệu
Reactive Flow with MongoDB, Kotlin, and Spring WebFlux
Java Program to Represent Graph Using 2D Arrays
Java Program to Implement Heap’s Algorithm for Permutation of N Numbers
Hướng dẫn Java Design Pattern – Dependency Injection
Java Program to Implement Graham Scan Algorithm to Find the Convex Hull
Introduction to PCollections
LinkedList trong java
LinkedHashSet trong Java hoạt động như thế nào?
REST Web service: Basic Authentication trong Jersey 2.x
Ignore Null Fields with Jackson
Java Byte Array to InputStream
Java – Reader to String
Java Program to Implement Pollard Rho Algorithm
Java 8 – Powerful Comparison with Lambdas
Java Program to Check whether Undirected Graph is Connected using BFS
Adding Parameters to HttpClient Requests
Java Program to Print only Odd Numbered Levels of a Tree