从单一光源对整个2D网格进行光线追踪

在一个已知边界的2D网格世界中,有以下元素:

  1. 光源(蓝色 org
  2. 墙壁(灰色)

如何高效地从网格中每个白色方块的中心org的中心进行光线追踪?
对于每个方块,我希望得到一个布尔值 - 它是否被照亮。

换句话说,我希望确定org是否可以直接看到整个世界中的每个方块。

enter image description here

我的拙劣解决方案

使用标准的光线追踪方法追踪每个白色方块指向org,但其性能非常差。我觉得有很多计算是多余的。

相关 : https://en.wikipedia.org/wiki/Any-angle_path_planning : 该算法仍然是针对一个白色方块 - 不是整个世界。


回答:

您可以使用像Bresenham线算法Xiaolin Wu线算法这样的线算法来查找路径中的像素。

  1. 从您想要计算是否被照亮的像素开始。
  2. 沿着光的方向遍历像素。
  3. 如果您首先到达光源,则它被照亮。
  4. 如果您碰到一个被阻挡的像素,则它是黑暗的。

这同样适用于多个光源。这样做会很高效,因为您只为每个像素计算一条线。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注