从矩形列表创建树

时间:2010-09-12 23:23:32

标签: c++ graphics tree hierarchy

这可能是一个愚蠢的问题,但没有什么可以立刻想到。给定列表R的2D矩形(xywh),以便任何给定的矩形完全在内部或完全在任何外部另外,确定p中每个矩形的直接包围矩形R的最有效方法是什么?目前,我按R然后yx进行排序,然后检查每对(ab)并测试a是否为孩子b。这不仅非常有效,而且它也无法正常工作:我认为,由于R已经排序,找到的最后一个父项应该是紧邻的,但这似乎不成立。我的推理有什么问题吗?如果没有,我会发布代码。

1 个答案:

答案 0 :(得分:2)

  1. (x+y)排序。
  2. 从排序列表的开头开始,抓住一个矩形Q。
  3. 为该矩形计算(x+y+w+h)
  4. 对于矩形Q后面的部分列表中的每个矩形R,并且x+y for R< = (x+y+w+h) of Q,检查R是否在Q的范围内。如果是,则设置Q作为R的父级,覆盖任何先前设置的父级。
  5. 重复列表。