【发布时间】:2012-07-30 21:47:21
【问题描述】:
光源是二维空间中位于单个坐标中的实体。
在不同的位置周围有多个光源,每个光源在 N、S、E、W、NW、NE、SW、SE 方向上发出 8 条光线。所有灯光的坐标都是已知的。
我需要计算网格内这些光线的所有交点。
long width = int.MaxValue; // 2D grid width.
long height = int.MaxValue * 3; // 2D grid height.
List<Point> lights = a bunch of randomly placed light sources.
List<Point> intersections = calculate all possible intersections.
for (int i=0; i < lights.Count - 1; i++)
{
for (int j=i + 1; j < lights.Count; j++)
{
// How to compare using integers only?
// If that is not possible, what is the fastest alternative?
}
}
【问题讨论】:
-
首先,您需要获取所有交叉点的列表还是只想知道有多少个交叉点?您所说的“可能”是什么意思,(不在网格上的交叉点)(可能是也可能不是要进一步调查的交叉点)。其次,what have you tried?
-
我想获取网格内所有交叉点的列表。我们已经有了所有光源的坐标 (
List<Point> lights)。至于我尝试过的,答案在提供的代码中;迭代。我不知道,问题的主题是how比较冒泡排序算法中的两个点,以确保我们覆盖所有 8 条光线。 -
@jonsca:这不是重复的。这也是我的问题!不同的上下文。
-
@RaheelKhan The other question has written out in words
Now I need to iterate the lights' collection and determine if my location (position) is being hit by each.` 当我查看这个问题时,似乎您刚刚在这里用代码写了出来没有改变任何问题。如果在这种情况下的目标不同,则将您在此处代码的 cmets 中提出的观点移到问题的主体中,以便了解您的意图。一旦你将两者区分开来,它们将不再是重复的,而且选票也会逐渐消失。
标签: c# .net geometry 2d raytracing