使用C#检测2D空间中的光投影

时间:2012-07-27 00:12:12

标签: c# .net geometry 2d raytracing

光源是2D空间中位于单个坐标中的实体。

在不同位置周围有多个光源,每个光源在N, S, E, W, NW, NE, SW, SE方向发出8条光线。所有灯光的坐标都是已知的。

给定一个随机点(x, y),我需要确定它是否被一道光线击中。

int width = 10000;
int height = 10000;
List<Point> lights = a bunch of randomly placed light sources.
Point position = new Point(8888, 5555);

现在我需要迭代lights' collection and determine if my location (位置`)被每个人击中。

lights[n].X == position.X的简单检查可以告诉我水平命中和类似垂直。如何以最有效的方式检测对角线命中?由于对角线始终为45度角,我可以避免昂贵的浮点计算吗?

1 个答案:

答案 0 :(得分:2)

为什么不使用:

Math.abs(lights[n].X - position.X) == Math.abs(lights[n].Y - position.Y)

使用角度(触发功能)几乎肯定会更慢,更复杂。