Java中计算多边形面积的更巧妙算法
“多边形”一词源于希腊语,其中“Poly”意为“多”,而“gon”意为“角”。多边形是由连接三个或三个以上直线形成的二维封闭平面图形。例如,三角形、四边形、六边形等等。
虽然有很多方法可以找到多边形的面积,但这篇文章将使用一种更巧妙的算法。
计算多边形面积的巧妙算法
巧妙算法
你需要知道两点:第一,根据数学约定,向上方向的y值始终为正;第二,根据计算机系统,向下方向的y值始终为正。该算法通过使用正向下y坐标逆时针列出顶点,提供了一种有效的解决方案。它将抵消这两个事实,从而得到正面积。
现在让我们讨论一个实现巧妙算法的Java程序。
算法
步骤 1 − 创建一个名为“Slicker”的类及其两个内部类“Coordinates”和“Poly”。
步骤 2 − 声明并初始化一个常量“MAXIMUM”来限制多边形的边数。
步骤 3 − 在内部类“Poly”中创建一个“Coordinates”类对象的数组。然后,创建“Poly”类的构造函数以将坐标存储到该对象数组中。
步骤 4 − 进一步定义一个名为“calcAr”的方法以及参数“cr”。在这个方法中,我们将创建一个for循环,该循环将运行到多边形的边数并计算面积。
步骤 5 − 现在,在main方法中,创建一个“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程序,使用巧妙算法计算多边形的面积。
广告
数据结构
网络
关系型数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP