65 lines
2.0 KiB
Java
65 lines
2.0 KiB
Java
|
/*
|
||
|
This is a Java Program to Implement Shoelace Algorithm. The shoelace formula, or shoelace algorithm, is a mathematical algorithm to determine the area of a simple polygon whose vertices are described by ordered pairs in the plane
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
** Java Program to Implement Shoelace Algorithm
|
||
|
**/
|
||
|
|
||
|
import java.util.Scanner;
|
||
|
|
||
|
/** Class Shoelace **/
|
||
|
public class Shoelace
|
||
|
{
|
||
|
/** Function to calculate area **/
|
||
|
public double area(int[][] arr)
|
||
|
{
|
||
|
int n = arr.length;
|
||
|
/** copy initial point to last row **/
|
||
|
arr[n - 1][0] = arr[0][0];
|
||
|
arr[n - 1][1] = arr[0][1];
|
||
|
double det = 0.0;
|
||
|
/** add product of x coordinate of ith point with y coordinate of (i + 1)th point **/
|
||
|
for (int i = 0; i < n - 1; i++)
|
||
|
det += (double)(arr[i][0] * arr[i + 1][1]);
|
||
|
/** subtract product of y coordinate of ith point with x coordinate of (i + 1)th point **/
|
||
|
for (int i = 0; i < n - 1; i++)
|
||
|
det -= (double)(arr[i][1] * arr[i + 1][0]);
|
||
|
/** find absolute value and divide by 2 **/
|
||
|
det = Math.abs(det);
|
||
|
det /= 2;
|
||
|
return det;
|
||
|
}
|
||
|
/** Main function **/
|
||
|
public static void main (String[] args)
|
||
|
{
|
||
|
Scanner scan = new Scanner(System.in);
|
||
|
System.out.println("Shoelace Algorithm Test\n");
|
||
|
/** Make an object of Shoelace class **/
|
||
|
Shoelace s = new Shoelace();
|
||
|
/** Accept number of points **/
|
||
|
System.out.println("\nEnter number of points");
|
||
|
int n = scan.nextInt();
|
||
|
int[][] arr = new int[n + 1][2];
|
||
|
System.out.println("Enter "+ n +" x, y coordinates");
|
||
|
for (int i = 0; i < n; i++)
|
||
|
{
|
||
|
arr[i][0] = scan.nextInt();
|
||
|
arr[i][1] = scan.nextInt();
|
||
|
}
|
||
|
double area = s.area(arr);
|
||
|
System.out.println("\nArea = "+ area);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
Enter number of points
|
||
|
5
|
||
|
Enter 5 x, y coordinates
|
||
|
3 4
|
||
|
5 11
|
||
|
12 8
|
||
|
9 5
|
||
|
5 6
|
||
|
|
||
|
Area = 30.0
|