java - 如何计算 java.awt.geom.Area 的面积?

标签 java swing geometry

我正在寻找一种方法来计算 java.awt.geom.Area 的任意实例的面积(以像素为单位)。

背景:我的应用程序中有可能重叠的 Shape。我想知道有多少 Shape 与另一个重叠。 Shape 可能会倾斜、旋转等。如果我有函数 area(Shape)(或 Area),我可以使用两个 Shape 的交集,如下所示:

double fractionObscured(Shape bottom, Shape top) {
    Area intersection = new Area(bottom);
    intersection.intersect(new Area(top));
    return area(intersection) / area(bottom);
}

最佳答案

使用以下代码片段查找多边形的面积:

int sum = 0;
for (int i = 0; i < n -1; i++)
{
    sum = sum + x[i]*y[i+1] - y[i]*x[i+1];
}
// (sum / 2) is your area.
System.out.println("The area is : " + (sum / 2));

这里 n 是顶点的总数,x[i] 和 y[i] 是顶点 i 的 x 和 y 坐标。 请注意,要使该算法起作用,多边形必须闭合。它不适用于开放的多边形。

您可以找到与多边形相关的数学算法 here .您需要自己将其转换为代码:)

关于java - 如何计算 java.awt.geom.Area 的面积?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2263272/

相关文章:

java - 绘制/布局期间的对象分配?

java - 如何使用 DateTimeFormatter 解析 "Feb 25"和 "February 25"?

java - 全屏显示 JPanel

c++ - 具有一定运动的 3D 三角形碰撞检测

Java:将数学方程转换为字符串表达式?

java - 我如何在同时单击两个按钮时执行某些操作

java - 登录 SwingWorker

java - 如何在 JFrame 中将绘制的对象居中?

python - 给定三个坐标点,如何检测它们之间的角度何时超过 180 度?

search - 几何形状的 BFS/IDS 搜索