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 Radix Sort
Java Program to Represent Graph Using Adjacency List
Add Multiple Items to an Java ArrayList
Java Program to Implement Segment Tree
Tránh lỗi ConcurrentModificationException trong Java như thế nào?
Java Program to Find Nearest Neighbor for Dynamic Data Set
Java Program to Compute Cross Product of Two Vectors
Stack Memory and Heap Space in Java
TreeSet và sử dụng Comparable, Comparator trong java
ClassNotFoundException vs NoClassDefFoundError
An Intro to Spring Cloud Task
Exploring the Spring Boot TestRestTemplate
Java Program to Implement Sorted Singly Linked List
Java Program to Implement Interpolation Search Algorithm
Java Program to Implement Hash Tables with Quadratic Probing
Java Copy Constructor
Spring Boot - Flyway Database
Mảng (Array) trong Java
Generating Random Numbers in a Range in Java
Java Program to Implement LinkedHashSet API
Java Program to Implement Graph Coloring Algorithm
Spring Boot - Securing Web Applications
Spring NoSuchBeanDefinitionException
Anonymous Classes in Java
Java Program to Implement HashSet API
Java Program to Implement Hopcroft Algorithm
Supplier trong Java 8
Prevent Cross-Site Scripting (XSS) in a Spring Application
How to Get All Dates Between Two Dates?
Request Method Not Supported (405) in Spring
Java Program to Implement Suffix Tree
Mix plain text and HTML content in a mail