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:
Convert Hex to ASCII in Java
Concurrent Test Execution in Spring 5
The Spring @Controller and @RestController Annotations
Immutable Map Implementations in Java
@Before vs @BeforeClass vs @BeforeEach vs @BeforeAll
Spring Boot - Tomcat Deployment
Quick Guide to Spring MVC with Velocity
Java Program to Perform Preorder Recursive Traversal of a Given Binary Tree
Extra Login Fields with Spring Security
Configure a Spring Boot Web Application
Logout in an OAuth Secured Application
Xử lý ngoại lệ đối với trường hợp ghi đè phương thức trong java
Spring 5 WebClient
Spring Boot - Unit Test Cases
Registration – Activate a New Account by Email
Functional Interfaces in Java 8
Java Program to Print the Kind of Rotation the AVL Tree is Undergoing
Introduction to Spring Data JDBC
Java Program to Implement LinkedBlockingQueue API
Concatenating Strings In Java
Java Program to Implement HashTable API
Java Program to Implement Knight’s Tour Problem
Spring Security Remember Me
Một số từ khóa trong Java
A Comparison Between Spring and Spring Boot
Java Program to Implement PriorityQueue API
Java Program to Implement Traveling Salesman Problem using Nearest neighbour Algorithm
Using a Custom Spring MVC’s Handler Interceptor to Manage Sessions
Java Program to Implement Splay Tree
Tìm hiểu về Web Service
Java Program to Generate a Sequence of N Characters for a Given Specific Case
Java Program to implement Dynamic Array