Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 直线的空间索引_Javascript - Fatal编程技术网

Javascript 直线的空间索引

Javascript 直线的空间索引,javascript,Javascript,我有很多线段(表示各种表面,如墙、天花板和地板)。我想有效地确定哪些线在玩家的边界框内 (现在我在所有线路上循环,虽然正确,但速度太慢了) Javascript中有几个kd树和其他空间索引,但它们都存储点而不是线 我实际上只需要按x轴进行查询;用某种一维范围树就足够了 如何有效地存储和检索线等形状 一旦建立,索引将不会添加到中。仅在二维空间中,您可以很好地控制总空间扩展(即知道最小值和最大值,它们不会增加),基于网格的方法(如普通网格或四叉树)非常有效。特别是,如果你知道你的查询半径(玩家框的大

我有很多线段(表示各种表面,如墙、天花板和地板)。我想有效地确定哪些线在玩家的边界框内

(现在我在所有线路上循环,虽然正确,但速度太慢了)

Javascript中有几个kd树和其他空间索引,但它们都存储点而不是线

我实际上只需要按x轴进行查询;用某种一维范围树就足够了

如何有效地存储和检索线等形状


一旦建立,索引将不会添加到中。

仅在二维空间中,您可以很好地控制总空间扩展(即知道最小值和最大值,它们不会增加),基于网格的方法(如普通网格或四叉树)非常有效。特别是,如果你知道你的查询半径(玩家框的大小),那么这个大小的网格应该非常有效


许多游戏也使用所谓的BSP树,即二进制空间分区树。但为了获得良好的性能,通常在构建关卡时会预先计算此树,然后再加载地图。

我很快为Ludum Dare 25竞赛创建了一个静态八叉树实现: