将矩形排列到锚点而不重叠

时间:2014-05-22 11:16:14

标签: performance algorithm geometry overlap rectangles

我有一组不同大小的矩形。每个矩形在二维平面上都有一个锚点,矩形的中心应该放在该锚点上。矩形不应重叠,矩形的中心应尽可能靠近其锚点。因此,如果rectangle_i的中心是向量c_i并且其锚点是向量a_i,那么目标函数将是min(sum_i((c_i-a_i)^ 2))。我正在寻找一种在O(n)中尽可能接近最优解的算法。

矩形无法旋转。

问题的输入是:

  • n矩形的大小
  • 对于每个矩形,关联锚点的坐标。

输出应该是矩形的位置,即每个矩形的中心坐标。

在下面的示例中,x标记矩形的中心和o锚点:

             +-----------+    
             |           |    
+-----------+|     x     |    
|           || o         |    
|     x     |+-----------+    
|         o | +-------------+ 
+-----------+ |  o          | 
   +---------+|      x      | 
   |       o ||             | 
   |    x    |+-------------+ 
   |         |                
   +---------+

0 个答案:

没有答案