我试图弄清楚如何制作一个超级覆盖 DDA 算法。或者换句话说,一种 DDA 算法将覆盖一条线穿过的所有网格点。见下图。
该图像是我绘制的,可能不是 100% 准确,但它显示了总体思路。我还想注意图像下半部分的示例没有整数开始和结束坐标,这是必要的。
如果您需要知道,我打算将其用于视线光线投射。
我能够实现典型的 DDA 算法,但我的问题是,如何修改它以涵盖所有点?
谢谢!
我当前在 Lua 中的 DDA 算法实现
function dline(x0,y0, x1,y1) -- floating point input
local dx = x1-x0
local dy = y1-y0
local s = math.max(math.abs(dx),math.abs(dy))
dx = dx/s
dy = dy/s
local x = x0
local y = y0
local i = 0
return function() -- iterator intended for a for loop
if i <= s then
local rx,ry = x,y
x = x+dx
y = y+dy
i = i+1
return rx,ry
end
end
end