给出的问题是找到一种有效返回光线击中的所有方框的方法。
所以我提出了一个想法,但我想知道你的意见,然后我浪费时间编写一些不起作用的东西。
基本上,这个想法是有一个高度=宽度的盒子网格,所有这些盒子都是相同的尺寸,它们彼此之间没有间隙,我也有计算盒子的功能属于一个点的索引。(在哪个方框中是该点)
现在我计算网格周围的一个方框,并计算边缘光线的生命值。 所以我知道了交叉点,当然还有光线的方向,现在我采取方向,将其标准化并将其除以2.(我不确定我是否需要/ 2但我觉得它更好) 结果矢量现在是我的步长"。 (我称之为矢量v) 因此,如果我现在采取第一个交叉点添加v,计算属于结果点的框并一次又一次地执行此操作,直到我到达第二个交叉点,我不应该错过任何框。 (右?)
但我不确定,所以我要求你的意见。
答案 0 :(得分:2)
此算法不能完全正常工作,因为在任何给定的方格中,您都可以通过它(通过切角)获取一条路径,该路径的距离比您将步长设置的距离更小。这意味着,无论您的步长是多少,某些向量都会导致此函数省略块。话虽如此,如果你使用较小的步长(比如v = .05),这不是一个糟糕的估算算法(假设网格不是太大)。
编辑:这是一个可行的算法。用步长<步长你做的步长吗? 1(我认为v = .9应该没问题),但是在每一步之后,检查每个盒子与前一个盒子的关系。如果您在同一个盒子或相邻的盒子里,什么也不做。如果你在对角线盒子里,你可能会通过一个相邻的盒子到达那里。弄清楚它是否以及它是哪一个,并将其添加到您的列表中。