我的应用程序中有一个关键性的代码块,涉及到在二维平面上枚举所有矩形。这些矩形之间不相交,并且我必须能够枚举给定矩形边界内的所有矩形。
如果存在,我已经有一个函数来返回给定坐标的矩形。
GetRectangle( int row, int col )
这是我对产生的代码的称呼。
foreach( var rect in GetRectangles( row, col, rowCount, colCount ) ) {
//.. my processing code here
}
显然,我可以对表面上的每个点调用函数
GetRectangle()
。 我也可以跳过从上一次调用返回的矩形的宽度,因为我知道它们不相交。 但是,这仍然不够高效。你是否了解这样的算法?
更新:表面不一定由矩形覆盖,但某些特殊情况下可能会有矩形覆盖。 因此,函数
GetRectangle(int row,int col)
可能返回null。将表面视为填充了随机矩形(不相交)的位图。 任务是返回所有在该表面上落在给定框架内(即相交)的矩形。 希望这能澄清问题。
谢谢。