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 Regular Falsi Algorithm
Java Program to Implement Self organizing List
Hướng dẫn sử dụng Java Generics
Guide to Dynamic Tests in Junit 5
Spring Cloud Series – The Gateway Pattern
Java Program to Implement Solovay Strassen Primality Test Algorithm
Java Program to Perform Stooge Sort
A Guide to the Java ExecutorService
Java Program to Find the GCD and LCM of two Numbers
Introduction to Spring Cloud Rest Client with Netflix Ribbon
Java Program to Implement HashTable API
New Features in Java 15
Tránh lỗi NullPointerException trong Java như thế nào?
Java Program to Sort an Array of 10 Elements Using Heap Sort Algorithm
Compare Two JSON Objects with Jackson
Java Program to Implement Ternary Heap
Hướng dẫn Java Design Pattern – Intercepting Filter
Remove HTML tags from a file to extract only the TEXT
Java Program to Implement First Fit Decreasing for 1-D Objects and M Bins
Câu lệnh điều khiển vòng lặp trong Java (break, continue)
Spring Boot - Exception Handling
Dockerizing a Spring Boot Application
Giới thiệu Java 8
Extract network card address
Receive email by java client
Java Switch Statement
Java Program to Use Above Below Primitive to Test Whether Two Lines Intersect
Wrapper Classes in Java
Abstract class và Interface trong Java
Java Program to Find Number of Articulation points in a Graph
Java Program to Find Hamiltonian Cycle in an UnWeighted Graph
A Quick Guide to Spring Cloud Consul