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:
Spring Cloud – Bootstrapping
Java Program to Implement Hash Tables chaining with Singly Linked Lists
Adding Parameters to HttpClient Requests
Running Spring Boot Applications With Minikube
Spring Boot Actuator
Java Program to Perform Encoding of a Message Using Matrix Multiplication
An Intro to Spring Cloud Task
Supplier trong Java 8
Java Program to Implement Nth Root Algorithm
So sánh Array và ArrayList trong Java
Redirect to Different Pages after Login with Spring Security
Hướng dẫn Java Design Pattern – Observer
Java 8 and Infinite Streams
Fixing 401s with CORS Preflights and Spring Security
Java Program to Check Whether a Weak Link i.e. Articulation Vertex Exists in a Graph
Java Program to Implement Expression Tree
Exploring the New Spring Cloud Gateway
Java Program to Implement Disjoint Sets
Java Program to Implement Hamiltonian Cycle Algorithm
Java Program to Check if it is a Sparse Matrix
Java Program to Implement Binary Heap
Netflix Archaius with Various Database Configurations
REST Web service: HTTP Status Code và xử lý ngoại lệ RESTful web service với Jersey 2.x
Java Program to Check Whether Topological Sorting can be Performed in a Graph
Java – Reader to InputStream
Mảng (Array) trong Java
Java Program to Implement RoleList API
Hướng dẫn Java Design Pattern – Flyweight
Removing Elements from Java Collections
Disable Spring Data Auto Configuration
Luồng Daemon (Daemon Thread) trong Java
Java Program to Implement Depth-limited Search