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 生成】
要判断两个多边形的大小关系,我们可以比较它们的面积大小或周长大小。
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;
}
}
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;
}
}
}
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;
}
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判断两个多边形大小和周长关系的解决方案。如果你有任何问题,请随时提出。
【相关推荐】