我正在查看Kd-tree并发现了该算法的一些实现。所有这些都是存储点(主要情况下为2d)。我想要实现的是在矩形,三角形等中存储不同的形状。在kd-tree中存储形状是否可能?我有一些Quad-trees的代码。因为存储了形状。
答案 0 :(得分:2)
这与Quad树的方法没有什么不同。
对于每个形状,您应该能够计算:
它的质心。
信封。
计算中位数时,请使用质心。形状的包络应该适合四边形。在四边形中插入形状时,请检查其包络是否穿过超平面。如果为true,则将形状存储在四边形中。如果为false,请将此形状放在左侧或右侧四边形的相应形状列表中 建设电话。
干杯
答案 1 :(得分:2)
一旦你有了kd-tree,这取决于你想要用你的形状集做什么。假设您有一组矩形,并且想要快速查找完全包含在查询矩形中的所有矩形。然后使用kd树(或者更好的是,范围树imo)的适当方式是将矩形的min和max x和y坐标存储为4维点,并为4维点构建树。然后,对于查询矩形(a0,a1)x(b0,b1),使用树在4维点上使用范围(a0,+ inf)x(-inf,a1)x进行范围查询(b0,+ inf)x(-inf,b1)。
答案 2 :(得分:1)
这是KD树的自然延伸。
如果您的树中只有积分:
树中有卷时: