C# 如何从点列表中找到可用的自由区域(矩形)

C# 如何从点列表中找到可用的自由区域(矩形),c#,algorithm,C#,Algorithm,我们提供了一个控制系统,该系统由横跨巨大2D坐标系的模块组成 我需要一个算法,可以找到可用的空间,其尺寸至少是一个最小的高度和宽度。“可用”是指“列表中不包含任何点”。 如果算法可以接受一个不应该与算法返回的任何矩形相交的矩形列表,这也是有利的 我试过下面的算法,但感觉不对 选择一个候选点,该候选点不在先前返回的候选矩形或先前排除的区域中 水平生长,直到达到最小宽度 垂直生长,直到达到最小高度 此时,这是一个已批准的候选矩形,但仍可能更大 尽量水平生长 尽量垂直生长 按批准返回矩形。(如果第2

我们提供了一个控制系统,该系统由横跨巨大2D坐标系的模块组成

我需要一个算法,可以找到可用的空间,其尺寸至少是一个最小的高度和宽度。“可用”是指“列表中不包含任何点”。 如果算法可以接受一个不应该与算法返回的任何矩形相交的矩形列表,这也是有利的

我试过下面的算法,但感觉不对

  • 选择一个候选点,该候选点不在先前返回的候选矩形或先前排除的区域中
  • 水平生长,直到达到最小宽度
  • 垂直生长,直到达到最小高度
  • 此时,这是一个已批准的候选矩形,但仍可能更大
  • 尽量水平生长
  • 尽量垂直生长
  • 按批准返回矩形。(如果第2点或第3点未通过,则目前覆盖的区域将被排除
有没有什么聪明的人能提出更好的算法?
(编辑:请注意,矩形与轴对齐)

这似乎不是一项简单的任务,因为你的矩形集可能具有无限的可能性。此外,如果你的矩形没有轴对齐,事情会变得更加困难。哦,我忘了提到矩形是轴对齐的。当你说巨大的二维坐标系时,你是说点坐标的大小很高还是很小有大量的点吗?我没有解决这个问题的方法,但我可能会先检查我是否可以用四叉树或Kd树来实现这样的目标。我会开始检查细胞和相邻的细胞,并尝试从细胞之间的关系中发展出一些东西。同样,这只是t我脑海中浮现出我将如何首先尝试解决这个问题。也许会给你们一些进一步研究的东西。