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:
Guava – Join and Split Collections
Hướng dẫn Java Design Pattern – Null Object
Java Program to Implement LinkedList API
Java Program to Implement Bloom Filter
Sử dụng CountDownLatch trong Java
Java Concurrency Interview Questions and Answers
Java Program to Compute Cross Product of Two Vectors
Java Program to Implement LinkedHashMap API
Uploading MultipartFile with Spring RestTemplate
Java Program to Find All Pairs Shortest Path
Stack Memory and Heap Space in Java
Java Program to Implement Quick Sort Using Randomization
Getting Started with GraphQL and Spring Boot
Java Program to Implement Hamiltonian Cycle Algorithm
Retrieve User Information in Spring Security
The Difference Between map() and flatMap()
So sánh HashMap và Hashtable trong Java
Introduction to Spring Cloud Rest Client with Netflix Ribbon
Java Program to Perform Insertion in a BST
Converting a Stack Trace to a String in Java
Java Program to Implement Levenshtein Distance Computing Algorithm
Java Program to Implement ConcurrentHashMap API
Spring Security 5 for Reactive Applications
Xử lý ngoại lệ trong Java (Exception Handling)
Check if a String is a Palindrome in Java
Spring Boot Configuration with Jasypt
Java Program to Find MST (Minimum Spanning Tree) using Prim’s Algorithm
Java Program to Implement the RSA Algorithm
Feign – Tạo ứng dụng Java RESTful Client
Sorting in Java
Multipart Upload with HttpClient 4
Java – Combine Multiple Collections