假设我们有一个类/结构点
class Point
{
int x;
int y;
}
和一个包含点列表的多边形类
class Polygon
{
List<Point> points;
Path(List<Point> points)
{
//some implementation
}
}
我有兴趣找到Polygon(https://en.wikipedia.org/wiki/Minimum_bounding_rectangle)的最小边界矩形点。找到的最小边界矩形边可能不平行于两个轴,因此我试图找到一种用Java,C#,C ++编写的算法。任何人都可以提出或链接这种解决方案,谢谢!
您可以执行以下操作:
查找多边形点的convex hull。流行的方法是Graham scan。
对于凸包的每个边缘,找到必须具有与该边缘重叠的一侧的最小边界矩形,以便凸包的边缘是该矩形侧的子段。
计算这些矩形的大小,并保留最小的矩形。
此算法的复杂度由第二步确定,它是O(n²)。