我想通过使用Java来检查两个矩形是否重叠。像this formula (0<AM⋅AB<AB⋅AB)∧(0<AM⋅AD<AD⋅AD)
这样的公式可以检查点是否在旋转的矩形内;我想使用一个矩形的两个点(左上角和右下角,虽然它们可以完全旋转到右上角和左下角),看它是否与另一个由两点组成的矩形重叠。
编辑 - 这被标记为this的副本,这很好,但我也想在网格上使用双精度作为java.awt.Polygon
由于这仍然标记为重复,我将在此处回答:
我做的是我使用here中的Polygon2D类和PolygonIterator来获得第一个类的完整功能,然后我将以下方法添加到内部类Double
中{ {1}}
Polygon2D
然后,我使用/**
* Get all points of the polygon
*/
public CustomPoint[] getPoints() {
int c = getVertexCount();
CustomPoint[] cp = new CustomPoint[c];
for (int i = 0; i < c; i++)
cp[i] = new CustomPoint(getX(i), getY(i));
return cp;
}
类来支持双打功能
CustomPoint
我后来将我的所有点都变成了一个双打数组并将其转换为允许双打的Polygon,我编辑了用于检查两个多边形是否重叠的方法
public class CustomPoint {
public double x = 0;
public double y = 0;
public CustomPoint(double x, double y) {
this.x = x;
this.y = y;
}
public double[] getLocation() {
return new double[] { x, y };
}
public void setLocation(double x, double y) {
this.x = x;
this.y = y;
}
public void setX(double x) {
this.x = x;
}
public void setY(double y) {
this.y = y;
}
}
所以在完成所有这些之后,我已经测试并确认它现在确实适用于双打。当然希望这可以帮助那些遇到同样问题的人。另请注意,Polygon2D和PolygonIterator类已获得加利福尼亚大学的#34; The Regents of the California&#34;并且在这里用于非分布式代码。