【问题标题】:Does this algorithm work? [closed]这个算法有效吗? [关闭]
【发布时间】:2017-10-27 09:17:02
【问题描述】:

给定的问题是找到一种方法来有效地返回所有被射线击中的盒子。

所以我想出了一个主意,但我想在浪费时间编写不起作用的东西之前先了解您的意见。

基本上,这个想法是有一个高度 = 宽度的盒子网格,所有这些盒子的大小相同,彼此之间没有间隙,我还有一个计算盒子索引的函数属于一个点。(该点在哪个框内)

现在我计算网格周围的一个框,并计算带有边缘的射线的命中点。 所以我知道相交点,当然还有光线的方向,现在我确定方向,对其进行归一化并将其除以 2。(我不确定是否需要 /2,但我感觉更好) 结果向量现在是我的“步长”。 (我称这个向量为 v) 因此,如果我现在将我的第一个交点添加 v,计算属于结果点的框并一次又一次地执行此操作,直到我到达我的第二个交点,我不应该错过任何框。 (对吧?)

但我不确定,所以我征求您的意见。

【问题讨论】:

  • So I came up with an idea but I want toknow your oppinion before I waste time in programming something not working. 对您的解决方案进行编程以查看其是否正常工作绝不是浪费时间。
  • 我投票结束这个问题作为离题,因为作者甚至没有尝试自己实施和测试他的想法。
  • 顺便说一下,这里有一个提示:光线会在它接触到的每个块中进入和退出恰好一个位置。出口位置与进入下一个街区的入口位置相同。

标签: algorithm math


【解决方案1】:

此算法不能完全工作,因为在任何给定的正方形中,您都可以通过它(通过切角)的路径比您设置的步长的距离更短。这意味着,无论您设置什么步长,某些向量都会导致此函数忽略块。话虽如此,如果您使用较小的步长(例如 v=.05),这并不是一个糟糕的估计算法(假设网格不是太大)。

编辑:这是一个可行的算法。做你正在做的步长的事情,步长

【讨论】:

    猜你喜欢
    • 2015-10-16
    • 2014-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    相关资源
    最近更新 更多