我正在寻找一种方法来计算 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/