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 Sparse Array
Java Program to Perform Inorder Recursive Traversal of a Given Binary Tree
Java Program to Generate All Subsets of a Given Set in the Gray Code Order
Function trong Java 8
Reactive Flow with MongoDB, Kotlin, and Spring WebFlux
Introduction to Spring MVC HandlerInterceptor
Handling URL Encoded Form Data in Spring REST
Introduction to Spring Boot CLI
Hướng dẫn tạo và sử dụng ThreadPool trong Java
Java Program to Implement Interpolation Search Algorithm
Tìm hiểu về xác thực và phân quyền trong ứng dụng
Guide to the Java ArrayList
Tạo ứng dụng Java RESTful Client với thư viện Retrofit
Spring MVC + Thymeleaf 3.0: New Features
Java Program to Find Whether a Path Exists Between 2 Given Nodes
Java Program to Implement Sorted Singly Linked List
Java Program to Generate Date Between Given Range
Java Program to implement Array Deque
Spring Boot - Cloud Configuration Server
Send email with authentication
Java Program to Implement the Vigenere Cypher
Java Program to Check whether Graph is Biconnected
Hướng dẫn Java Design Pattern – Null Object
Spring Boot - Introduction
Spring Boot - Rest Template
Java Program to Implement Segment Tree
Java Program to Implement Hash Tables Chaining with Binary Trees
Java Program to Perform the Sorting Using Counting Sort
Guide to Selenium with JUnit / TestNG
Java Program to Implement Doubly Linked List
The Modulo Operator in Java
Custom HTTP Header with the HttpClient