【发布时间】:2012-09-17 21:52:03
【问题描述】:
一个简单的线类被定义为两个包含起点和终点坐标的 PointF 成员:
public class Line {
PointF s, e;
}
我有两个列表,其中包含出现在绘图画布上并形成一个或多个表格的所有水平和垂直线。
List<Line> AllHorizontalLines;
List<Line> AllVerticalLines;
我需要对这些行进行分组,以便将属于一个表的行捕获在一个组中,因此分组函数将具有如下签名:
List<List<Line>> GroupLines(List<Line> hor, List<Line> ver)
{
}
为简单起见,我们假设页面上只有“简单”表格,即没有嵌套表格。但是可以合并单元格,因此我们必须忽略小于父表全高的小的水平和垂直线。为进一步简单起见,假设两个输入列表均已排序(水平线 w.r.t. Y 轴,垂直线 w.r.t. X 轴)。
是否有任何已知的算法来解决这个问题?或者谁能帮我设计一个?
【问题讨论】:
-
这是一道作业题吗?如果是这样,您可能应该这样标记它。
-
不,不是。这是我试图解决的更大、更复杂问题的一部分。
-
好的,你解决这个问题了吗?如果是这样,你想到了什么?
-
我现在正在努力。尝试了几次尝试定位“角”(最左边和最右边的垂直线与水平线的交点),但到目前为止还没有产生好的结果。