Monday, October 6, 2025
HomeLanguagesJavaSlicker Algorithm to Find the Area of a Polygon in Java

Slicker Algorithm to Find the Area of a Polygon in Java

Slicker Algorithm is a way to determine the area of the n-sided polygon. This algorithm takes the y-direction pointing upwards as positive according to the mathematical conventions but according to computer systems where the positive y-direction is downwards, the most efficient way is to list the vertices counter-clockwise using the positive y-down coordinates which cancels out the two effects and in turn returns the positive area. 

Example:

Input: Enter number of sides of the Polygon: 4
           Enter the coordinates as : <x> <y>
                                                      0     0
                                                      1     0
                                                      1     1
                                                      0     1

Output: The Area of Polygon with 4 points using Slicker Algorithm is: 1      

Approach

Take no of sides and coordinates of n-sided polygon as an input from the user

Define function Area() which calculates the area with p as an argument as follows:
  for i = 0 to (p.n-1)
      j = (i + 1) % p.n;
     calculate area += (p.p[i].x * p.p[j].y) - (p.p[j].x * p.p[i].y);
     print total area as area/2

Note: Input points must take in order, Program will not work properly with points taken in random order.

Below is the implementation of the above program

Java




// Implement Slicker Algorithm that avoids
// Triangulation to Find Area of a Polygon
import java.util.*;
class Main {
    // defining the maximum no of sides for the Polygon
    static final int MAXSIDES = 200;
 
    static class Corner {
        double x, y;
    }
 
    static class Polygon {
        Corner p[] = new Corner[MAXSIDES];
        int n;
 
        Polygon()
        {
            for (int i = 0; i < MAXSIDES; i++)
                p[i] = new Corner();
        }
    }
 
    // calculating area with Slicker Algorithm
    static double area(Polygon p)
    {
        double total = 0;
        for (int i = 0; i < p.n; i++) {
            int j = (i + 1) % p.n;
            total += (p.p[i].x * p.p[j].y)
                     - (p.p[j].x * p.p[i].y);
        }
        return total / 2;
    }
 
    static public void main(String[] args)
    {
        Polygon p = new Polygon();
 
        Scanner sc = new Scanner(System.in);
 
        // Taking inputs from the user
 
        System.out.print(
            "Enter number of sides of the Polygon: ");
 
        p.n = sc.nextInt();
 
        System.out.println(
            "Enter the coordinates as : <x> <y>");
 
        // Taking the coordinates of each Corner
        for (int i = 0; i < p.n; i++) {
            p.p[i].x = sc.nextDouble();
            p.p[i].y = sc.nextDouble();
        }
        double area = area(p);
        if (area > 0)
            System.out.print(
                "The Area of Polygon with " + p.n
                + " points using Slicker Algorithm is : "
                + area);
        else
            System.out.print(
                "The Area of Polygon with " + p.n
                + " points using Slicker Algorithm is : "
                + (area * -1));
        sc.close();
    }
}


Output:

Time Complexity: O(N), Where N is the number of sides of the polygon.
Auxiliary Space: O(1) because constant array p of constant size 200 has been used

RELATED ARTICLES

Most Popular

Dominic
32338 POSTS0 COMMENTS
Milvus
86 POSTS0 COMMENTS
Nango Kala
6707 POSTS0 COMMENTS
Nicole Veronica
11871 POSTS0 COMMENTS
Nokonwaba Nkukhwana
11936 POSTS0 COMMENTS
Shaida Kate Naidoo
6825 POSTS0 COMMENTS
Ted Musemwa
7089 POSTS0 COMMENTS
Thapelo Manthata
6779 POSTS0 COMMENTS
Umr Jansen
6779 POSTS0 COMMENTS