Java 使用更高效的算法找到多边形的面积

Java 使用更高效的算法找到多边形的面积

术语“多边形”源自希腊词“Poly”,意思是“许多”,和“gon”,意思是“角”。多边形是由连接三条或三条以上直线形成的二维闭合平面图形。例如,三角形、四边形、六边形等等。

虽然有很多方法可以找到多边形的面积,在本文中,我们将使用更高效的算法来实现这一目的。

使用更高效的算法来找到多边形的面积

更高效的算法

你必须知道两个事实,首先,根据数学约定,向上的y方向始终是正数。其次,根据计算机系统,向下的y方向始终是正数。这个算法通过使用正数的向下y坐标,按逆时针的顺序列出顶点,提供了一个高效的解决方案。这将抵消这两个事实,从而得到一个正面积。

现在让我们讨论一个实现更高效算法的Java程序。

步骤

  • 步骤1 - 创建一个类’Slicker’和它的两个内部类’Coordinates’和’Poly’。

  • 步骤2 - 声明并初始化一个常量’MAXIMUM’,以限制多边形的边数。

  • 步骤3 - 在内部类’Poly’中创建一个’Coordinates’类的对象数组。然后,创建一个’Poly’类的构造函数,将坐标存储在该对象数组中。

  • 步骤4 - 进一步定义一个名为’calcAr’的方法,带有参数’cr’。在这个方法内部,我们将创建一个for循环,它将运行直到多边形的边数,并计算面积。

  • 步骤5 - 现在在主方法内,创建一个’Poly’类的对象’cr’。然后,我们将由用户输入多边形的边数和坐标。

  • 步骤6 - 最后,我们将调用方法’calcAr’,并使用if-else语句块检查面积是正数还是负数。如果是正数,则执行’if’块中的语句,否则执行’else’块中的语句。

示例

import java.util.*;
public class Slicker {
   // to signify maximum number of sides of polygon
   static final int MAXIMUM = 50; 
   static class Coordinates {
      double c1, c2; 
      // declaring coordinates
   }
   static class Poly {
      // Array object of class Coordinates
      Coordinates cr[] = new Coordinates[MAXIMUM];
      int sides;
      Poly() 
      // constructor
      {
         // to accept input of coordinates
         for (int i = 0; i < MAXIMUM; i++)
         cr[i] = new Coordinates();
      }
   }
   // method to calculate area
   static double caclAr(Poly cr) {
      double res = 0;
      for (int i = 0; i < cr.sides; i++) {
         int j = (i + 1) % cr.sides;
         res += (cr.cr[i].c1 * cr.cr[j].c2)
          - (cr.cr[j].c1 * cr.cr[i].c2);
      }
      return res / 2;
   }
   static public void main(String[] args)
   {
      Poly cr = new Poly(); 
      // object of class 'Poly'
      // Object of scanner class for User inputs
      Scanner in = new Scanner(System.in);
      System.out.print("Enter total number of sides: ");
      cr.sides = in.nextInt();
      // to take coordinates from user
      System.out.println("Enter c1 and c2 coordinates: ");
      for (int i = 0; i < cr.sides; i++) {
         cr.cr[i].c1 = in.nextDouble();
         cr.cr[i].c2 = in.nextDouble();
      }
      // calling user defined method
      double caclAr = caclAr(cr);
      if (caclAr > 0) {
         System.out.print("The area of given Polygon: " + caclAr);
      } else {
         System.out.print("The area of given Polygon: " + (caclAr * -1));
      }
   }
}

输出

Enter total number of sides: 4
Enter c1 and c2 coordinates: 
2 3
3 5
5 8
8 2
The area of given Polygon: 17.0

结论

任何平面形状都不能被视为多边形,例如取一个圆,虽然它是一个闭合的平面形状,但它没有任何边。所以我们不能称它为多边形。在本文中,我们使用更流畅的算法创建了一个用于计算多边形面积的Java程序。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程