Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.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_Optimization_2d_Polygon_Raycasting - Fatal编程技术网

Javascript 二维光线投射的优化

Javascript 二维光线投射的优化,javascript,optimization,2d,polygon,raycasting,Javascript,Optimization,2d,Polygon,Raycasting,我一直在玩2D中的光线投射,我一直在考虑当有几个对象需要检查时的优化 该程序目前的工作原理是 从源位置向每个多边形的每个顶点创建光线&多边形的交点(如果重叠) 针对每个对象(多边形)检查每条光线,并返回每个对象最近的命中率 比如说,在生成了100个多边形的情况下,实际上只有少数多边形保持“可见”。对于100个多边形,光线量大于1000(每个顶点3条光线+交点),但绝大多数对象都不在视线范围内,任何给定位置的“所需”光线量都会低很多 有没有办法优化铸件?我的兴趣主要是学术性的,因为我只是在玩,但

我一直在玩2D中的光线投射,我一直在考虑当有几个对象需要检查时的优化

该程序目前的工作原理是

  • 从源位置向每个多边形的每个顶点创建光线&多边形的交点(如果重叠)
  • 针对每个对象(多边形)检查每条光线,并返回每个对象最近的命中率
  • 比如说,在生成了100个多边形的情况下,实际上只有少数多边形保持“可见”。对于100个多边形,光线量大于1000(每个顶点3条光线+交点),但绝大多数对象都不在视线范围内,任何给定位置的“所需”光线量都会低很多

    有没有办法优化铸件?我的兴趣主要是学术性的,因为我只是在玩,但我认为这是一个有趣的问题

    我能想到的一种方法是计算一个方向死区,排除位于死区的对象或排除指向死区的光线,但我不确定这是否会更便宜,也不确定如何巧妙地做到这一点。我可以想象的另一种方法是以网格的方式预先计算这些死区,或者沿着这些线进行计算,但这在非静态环境中是行不通的