tuekats

rasterapi

Jun 5th, 2017
39
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.86 KB | None | 0 0
  1. function getLineVoxels(x1,y1,z1,x2,y2,z2)
  2.     local point = {x1,y1,z1}
  3.     local dx = x2 - x1
  4.     local dy = y2 - y1
  5.     local dz = z2 - z1
  6.     local x_inc = 1
  7.     if dx < 0 then x_inc = -1 end
  8.     local l = math.abs(dx)
  9.     local y_inc = 1
  10.     if dy < 0 then y_inc = -1 end
  11.     local m = math.abs(dy)
  12.     local z_inc = 1
  13.     if dz < 0 then z_inc = -1 end
  14.     local n = math.abs(dz)
  15.     local dx2 = l * 2
  16.     local dy2 = m * 2
  17.     local dz2 = n * 2
  18.     local err_1 = 0
  19.     local err_2 = 0
  20.     local output = {}
  21.      
  22.     if l>=m and l>=n then
  23.         err_1 = dy2 -1
  24.         err_2 = dz2 -1
  25.         for i=0,i<l do
  26.             table.insert(output,point)
  27.             if err_1 > 0 then
  28.                 point[2] = point[2] + y_inc
  29.                 err_1 = err1 - dx2
  30.             end
  31.             if err_2 > 0 then
  32.                 point[3] = point[3] + z_inc
  33.                 err2 = err2 -dx2
  34.             end
  35.             err_1 = err1 + dy2
  36.             err_2 = err_2 + dz2
  37.             point[1] = point[1] + x_inc
  38.         end
  39.     elseif m>=l and m>=n then
  40.         err_1 = dx2 - m
  41.         err_2 = dz2 - m
  42.         for i = 0,i<m do
  43.             table.insert(output,point)
  44.             if err_1 > 0 then
  45.                 point[1] = point[1] + x_inc
  46.                 err_1 = err_1 - dy2
  47.             end
  48.             if err_2 > 0 then
  49.                 point[3] = point[3] + z_inc;
  50.                 err_2 = err_2 - dy2
  51.             end
  52.             err_1 = err_1 + dx2
  53.             err_2 = err_2 + dz2
  54.             point[2] = point[2] + y_inc;
  55.         end
  56.     else
  57.         err_1 = dy2 - n
  58.         err_2 = dx2 - n
  59.         for i = 0,i<n do
  60.             table.insert(output,point)
  61.             if err_1 > 0 then
  62.                 point[2] = point[2] + y_inc
  63.                 err_1 = err_1 - dz2
  64.             end
  65.             if err_2 > 0 then
  66.                 point[1] =  point[1] + x_inc
  67.                 err_2 = err_2 - dz2
  68.             end
  69.             err_1 = err_1 + dy2
  70.             err_2 = err_2 + dx2
  71.             point[3] = point[3] + z_inc
  72.         end
  73.     end
  74.     table.insert(output,point)
  75.     return output
  76. end
Add Comment
Please, Sign In to add comment