Graphics 按相交顺序排列矩形,以便i<;j我们可以保证Rj中不包含Ri

Graphics 按相交顺序排列矩形,以便i<;j我们可以保证Rj中不包含Ri,graphics,z-order,rectangles,Graphics,Z Order,Rectangles,我们正在创建包含大量不规则矩形的交互式SVG图。我们的用户在SVG的某个区域内单击,并在此基础上提供有关该对象的更多信息。(我稍微简化一下——这是一个工业应用程序,区域实际上不是矩形——但我假设我们可以使用每个形状的边界矩形。) 不幸的是,一些矩形“完全包含”其他一些矩形。例如,R2可以是一个“完全包含”在另一个矩形R1中的小矩形。如果R2被添加到SVG文件中,则小矩形R2是交互式的。不幸的是,对象的输入流不能保证这一点。我可能在R1之后得到R2。然后R1随后被打印,因此R2不能被点击,因为它完

我们正在创建包含大量不规则矩形的交互式SVG图。我们的用户在SVG的某个区域内单击,并在此基础上提供有关该对象的更多信息。(我稍微简化一下——这是一个工业应用程序,区域实际上不是矩形——但我假设我们可以使用每个形状的边界矩形。)

不幸的是,一些矩形“完全包含”其他一些矩形。例如,R2可以是一个“完全包含”在另一个矩形R1中的小矩形。如果R2被添加到SVG文件中,则小矩形R2是交互式的。不幸的是,对象的输入流不能保证这一点。我可能在R1之后得到R2。然后R1随后被打印,因此R2不能被点击,因为它完全被R1覆盖。(这些对象是半透明的,所以R1仍然可见——只是不可点击——非常讨厌!)

因此,我们希望对矩形数组进行排序,以便所有小于“j”的“i”都可以保证“Ri”不包含在“Rj”中。但除此之外,我们希望对原始序列的z阶进行最小扰动。我们将有数千个矩形进行排序-因此,无论我们选择什么算法,最好不要有n平方行为

起初我认为这是图形系统中相当常见的问题。但对文献的扫描似乎并不表明这是真的。我自己对此有一些想法——包括将空间分割成区域(K-D-tree)和/或按区域对矩形进行排序(小矩形不能包含大矩形!),但是,最好已经找到解决这个问题的好方法。也许我只是没有使用正确的搜索词

有什么想法吗