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:
Quick Intro to Spring Cloud Configuration
Java Program to Implement RoleUnresolvedList API
Serialization và Deserialization trong java
Java Program to Check Whether a Weak Link i.e. Articulation Vertex Exists in a Graph
Java program to Implement Tree Set
Spring AMQP in Reactive Applications
Java Program to Implement Uniform-Cost Search
A Guide to the ViewResolver in Spring MVC
Java – Create a File
Java Program to Implement Warshall Algorithm
A Guide to Queries in Spring Data MongoDB
XML Serialization and Deserialization with Jackson
Java Program to Implement Ternary Search Algorithm
Java Program to Perform Inorder Recursive Traversal of a Given Binary Tree
Using JWT with Spring Security OAuth (legacy stack)
Check If Two Lists are Equal in Java
Converting Between Byte Arrays and Hexadecimal Strings in Java
Giới thiệu luồng vào ra (I/O) trong Java
Hướng dẫn Java Design Pattern – Intercepting Filter
Java Program to Implement Queue using Two Stacks
JUnit5 @RunWith
Guide to DelayQueue
Intro to the Jackson ObjectMapper
OAuth2 for a Spring REST API – Handle the Refresh Token in Angular
Java Program to Implement Slicker Algorithm that avoids Triangulation to Find Area of a Polygon
Spring Boot: Customize Whitelabel Error Page
Java Convenience Factory Methods for Collections
Serverless Functions with Spring Cloud Function
Jackson – Marshall String to JsonNode
New Stream Collectors in Java 9
Java Program to Implement Hash Trie
Java Program to Perform Insertion in a BST