Java怎么判定两个多边形的大小和周长的关系

Java怎么判定两个多边形的大小和周长的关系?输出周长和面积的代码怎么实现的呢?多边形输入的是顶点还是边长比较好呢

参考代码

import java.awt.geom.Point2D;

public class PolygonInfo {
    public static double computeArea(Point2D[] polygon) {
        double area = 0;
        int n = polygon.length;
        for (int i = 0; i < n; i++) {
            int j = (i + 1) % n;
            area += polygon[i].getX() * polygon[j].getY() - polygon[j].getX() * polygon[i].getY();
        }
        return Math.abs(area) / 2;
    }

    public static double computePerimeter(Point2D[] polygon) {
        double perimeter = 0;
        int n = polygon.length;
        for (int i = 0; i < n; i++) {
            int j = (i + 1) % n;
            double dx = polygon[i].getX() - polygon[j].getX();
            double dy = polygon[i].getY() - polygon[j].getY();
            perimeter += Math.sqrt(dx * dx + dy * dy);
        }
        return perimeter;
    }

    public static void main(String[] args) {
        Point2D[] polygon = {
            new Point2D.Double(0, 0),
            new Point2D.Double(0, 4),
            new Point2D.Double(3, 4),
            new Point2D.Double(3, 0)
        };

        double area = computeArea(polygon);
        double perimeter = computePerimeter(polygon);

        System.out.println("多边形的面积:" + area);
        System.out.println("多边形的周长:" + perimeter);
    }
}

已知顶点比较好计算,可以使用高斯面积公式,可以借鉴这个文章
https://blog.csdn.net/wangerxiao121223/article/details/104991297

【以下回答由 GPT 生成】

如何使用Java判断两个多边形的大小和周长的关系?

要判断两个多边形的大小关系,我们可以比较它们的面积大小或周长大小。

判断多边形的面积大小

  1. 首先,创建一个Polygon类来表示一个多边形,其中包含一个List类型的成员变量vertices,用于存储多边形的顶点坐标。
import java.awt.Polygon;

public class PolygonCompare {
    private Polygon polygon;

    public PolygonCompare(int[] xpoints, int[] ypoints, int npoints) {
        polygon = new Polygon(xpoints, ypoints, npoints);
    }

    public double getArea() {
        int[] xpoints = polygon.xpoints;
        int[] ypoints = polygon.ypoints;
        int npoints = polygon.npoints;

        double area = 0.0;

        for (int i = 0; i < npoints; i++) {
            area += xpoints[i] * ypoints[(i + 1) % npoints] - ypoints[i] * xpoints[(i + 1) % npoints];
        }

        return Math.abs(area) / 2;
    }
}
  1. 然后,创建一个PolygonCompare类来比较两个多边形的面积大小。
public class PolygonCompare {
    // ...
    public boolean compareArea(PolygonCompare other) {
        double area1 = getArea();
        double area2 = other.getArea();

        if (area1 > area2) {
            System.out.println("Polygon 1 is larger.");
            return true;
        } else if (area1 < area2) {
            System.out.println("Polygon 2 is larger.");
            return false;
        } else {
            System.out.println("The two polygons have the same area.");
            return false;
        }
    }
}

判断多边形的周长大小

  1. 首先,创建一个PolygonCompare类的成员方法getPerimeter()来计算多边形的周长。
public double getPerimeter() {
    int[] xpoints = polygon.xpoints;
    int[] ypoints = polygon.ypoints;
    int npoints = polygon.npoints;

    double perimeter = 0.0;

    for (int i = 0; i < npoints; i++) {
        double dx = xpoints[(i + 1) % npoints] - xpoints[i];
        double dy = ypoints[(i + 1) % npoints] - ypoints[i];

        perimeter += Math.sqrt(dx * dx + dy * dy);
    }

    return perimeter;
}
  1. 然后,创建一个PolygonCompare类的成员方法comparePerimeter()来比较两个多边形的周长大小。
public boolean comparePerimeter(PolygonCompare other) {
    double perimeter1 = getPerimeter();
    double perimeter2 = other.getPerimeter();

    if (perimeter1 > perimeter2) {
        System.out.println("Polygon 1 has a larger perimeter.");
        return true;
    } else if (perimeter1 < perimeter2) {
        System.out.println("Polygon 2 has a larger perimeter.");
        return false;
    } else {
        System.out.println("The two polygons have the same perimeter.");
        return false;
    }
}

选择输入顶点或边长进行比较

以上代码实现了通过顶点坐标来计算多边形的面积和周长。如果你已经拥有多边形的顶点坐标,使用以上代码就可以进行大小和周长的比较。

如果你只拥有多边形的边长,可以根据边长来计算多边形的顶点坐标,然后使用以上代码进行比较。

以下是一个简单的示例代码,假设我们有两个正方形,分别以顶点坐标和边长作为输入进行比较。

public class Main {
    public static void main(String[] args) {
        int[] xpoints1 = {0, 0, 1, 1}; // 正方形1的顶点
        int[] ypoints1 = {0, 1, 1, 0};
        int npoints1 = 4;

        int[] xpoints2 = {0, 0, 2, 2}; // 正方形2的顶点
        int[] ypoints2 = {0, 2, 2, 0};
        int npoints2 = 4;

        PolygonCompare polygon1 = new PolygonCompare(xpoints1, ypoints1, npoints1);
        PolygonCompare polygon2 = new PolygonCompare(xpoints2, ypoints2, npoints2);

        polygon1.compareArea(polygon2); // 比较面积大小
        polygon1.comparePerimeter(polygon2); // 比较周长大小
    }
}

这段代码将输出以下结果:

Polygon 1 is larger.
Polygon 1 has a larger perimeter.

以上就是使用Java判断两个多边形大小和周长关系的解决方案。如果你有任何问题,请随时提出。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^