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:
Hướng dẫn Java Design Pattern – Bridge
Java Program to Construct an Expression Tree for an Infix Expression
Simple Single Sign-On with Spring Security OAuth2
Mệnh đề Switch-case trong java
Spring Boot - Eureka Server
Spring Boot Application as a Service
Java Optional as Return Type
Check If Two Lists are Equal in Java
Java Program to Create the Prufer Code for a Tree
Spring Boot: Customize the Jackson ObjectMapper
Java Switch Statement
Java Program to Perform Partition of an Integer in All Possible Ways
Java Program to Implement Threaded Binary Tree
A Quick Guide to Spring MVC Matrix Variables
Java Program to Find Whether a Path Exists Between 2 Given Nodes
Different Ways to Capture Java Heap Dumps
Java Stream Filter with Lambda Expression
Spring MVC + Thymeleaf 3.0: New Features
Java Program to Perform Finite State Automaton based Search
Introduction to Java Serialization
Spring Boot - Database Handling
Tránh lỗi NullPointerException trong Java như thế nào?
Java Program to Find the Peak Element of an Array O(n) time (Naive Method)
How to Replace Many if Statements in Java
Java Program to Check if any Graph is Possible to be Constructed for a Given Degree Sequence
Test a REST API with Java
Convert XML to JSON Using Jackson
Java Program to Implement ScapeGoat Tree
OAuth2.0 and Dynamic Client Registration
Java Program to Find All Pairs Shortest Path
Java Program to Find kth Largest Element in a Sequence
The HttpMediaTypeNotAcceptableException in Spring MVC