我知道kd-tree传统上用于存储点,但我想要存储行。将kd-tree分裂的每个交叉点分割线最好吗?或者只是将端点存储到kd中就足以用于最近的邻居发现?如何在kd-tree中最好地存储行
8
A
回答
0
那么,你必须在十字路口上分割线条,否则你会遇到树叶重量的问题。另一方面,如果你不使用SAH或任何其他算法来遍历树,你可以自由地做任何你想要的与kd-tree的初始想法。但是如果你将绑定到一些传统的算法,你有拆分线。你必须这样做,只是因为树的每一片叶子都有一个重量(我想你的情况取决于它的长度)。
如果你不分割线条,你也会得到错误的叶子重量。不,如果你没有分割线条,你应该在线条所属的两条线上重复它们。
0
你是否必须使用kd-tree?对于扩展的基元,bv-tree可能更有效。
1
kd-tree本身被设计为点对象。甚至没有箱子,球体或类似的东西。我相信你可以以某种方式使用6d树存储minx, maxx, miny, maxy, minz, maxz
;但我不完全确定如何正确地查询它。
R*-tree (Wikipedia)可能是一个更好的选择。它确实是为空间扩展的对象设计的。如果您查阅相关出版物,他们甚至会尝试不同的复杂对象的近似值;例如是否支付三角形化他们,使用一个环形边界框,并且有趣的是IIRC 5角多边形在某些情况下提供了最好的性能。
无论如何,R * - 树家庭可能是一个有趣的选择。
相关问题
- 1. 如何最好地将Subversion版本信息存储在EAR中?
- 2. 如何在GAE应用程序中最好地存储凭据?
- 3. 如何最好地在Spring中存储用户数据?
- 4. 如何最好地存储时间范围,如周二10-11am?
- 5. XML存储项目。如何最好?
- 6. 如何最好地为Android应用程序设置存储库?
- 7. 如何最好地处理历史数据的存储?
- 8. 如何从当前现有的本地git存储库中最好地建立一个“中央”git存储库?
- 9. 如何最好地生成不存储在数据库中的对象的键?
- 10. 如何在MySQL数据库中最好地存储年份,月份和日期?
- 11. 如何最好地在数据库中存储时间戳或日期?
- 12. 如何最好地保存XML文件
- 13. 如何最好地在Clearcase中分支?
- 14. 在Python中保存KDTree对象?
- 15. 最好的存储方法
- 16. 如何在PHP中最好地缓存问题
- 17. 如何将POJO的内容存储在偏好存储中?
- 18. 最佳实践将数据存储在本地存储中
- 19. 如何最好地在iPhone应用程序中存储预先存在的数据?
- 20. 最好是将地址信息存储在订单表中还是存储在自己的表中?
- 21. 如何在记录存在时最好地处理停止删除行?
- 22. 如何将标签值存储在本地存储中以及如何从本地存储中获取?
- 23. iPhone的唯一ID最好保存在持久存储中?
- 24. 如何将变量存储在本地存储中?
- 25. 如何在本地存储中存储登录凭证
- 26. 如何在本地存储中存储字体大小
- 27. 如何在本地存储中存储对象数组?
- 28. 如何删除存储在本地存储中的数据?
- 29. 如何在本地存储中存储类名
- 30. 静态类留在内存.....如何最好地实现这
这取决于你想要做什么。记住一条线(段)只是两个坐标的集合,所以它可以用一个单一的坐标来描述,其尺寸是其两倍。因此,可以将线存储为高维kd树中的点。 – 2010-10-28 23:26:06
我正尝试用线条创建一个距离场。所以我会利用kd-tree的最近邻居功能。但是,我不想添加比我拥有更多的数据(线段的终点。 – newDelete 2010-10-31 18:19:40