Exact reimplementation of "old" C algo in LUA
This commit is contained in:
parent
d4a2e7ef4c
commit
c15d815da9
|
@ -13,10 +13,21 @@ red = {}
|
|||
green = {}
|
||||
blue = {}
|
||||
|
||||
tmpRed = {}
|
||||
tmpGreen = {}
|
||||
tmpBlue = {}
|
||||
|
||||
function weighted_avg(array, centerIndex)
|
||||
return 0.2 * array[centerIndex - 1] +
|
||||
0.6 * array[centerIndex] +
|
||||
0.2 * array[centerIndex + 1]
|
||||
end
|
||||
|
||||
function periodic()
|
||||
local redEnergy = get_energy_in_band(0, 400);
|
||||
local greenEnergy = get_energy_in_band(400, 4000);
|
||||
local blueEnergy = get_energy_in_band(4000, 22000);
|
||||
local centerIndex = 2 * center_module;
|
||||
|
||||
maxRedEnergy = maxRedEnergy * COOLDOWN_FACTOR
|
||||
if redEnergy > maxRedEnergy then
|
||||
|
@ -34,22 +45,28 @@ function periodic()
|
|||
end
|
||||
|
||||
-- move the color buffers on by one in each direction
|
||||
for i = 2,center_module,1 do
|
||||
red[i-1] = red[i]
|
||||
green[i-1] = green[i]
|
||||
blue[i-1] = blue[i]
|
||||
for i = 2,centerIndex,1 do
|
||||
tmpRed[i-1] = tmpRed[i]
|
||||
tmpGreen[i-1] = tmpGreen[i]
|
||||
tmpBlue[i-1] = tmpBlue[i]
|
||||
end
|
||||
|
||||
for i = num_modules-1,center_module,-1 do
|
||||
red[i+1] = red[i]
|
||||
green[i+1] = green[i]
|
||||
blue[i+1] = blue[i]
|
||||
for i = #tmpRed-1,centerIndex,-1 do
|
||||
tmpRed[i+1] = tmpRed[i]
|
||||
tmpGreen[i+1] = tmpGreen[i]
|
||||
tmpBlue[i+1] = tmpBlue[i]
|
||||
end
|
||||
|
||||
-- set the new value for the center module
|
||||
red[center_module] = redEnergy / maxRedEnergy
|
||||
green[center_module] = greenEnergy / maxGreenEnergy
|
||||
blue[center_module] = blueEnergy / maxBlueEnergy
|
||||
tmpRed[centerIndex] = redEnergy / maxRedEnergy
|
||||
tmpGreen[centerIndex] = greenEnergy / maxGreenEnergy
|
||||
tmpBlue[centerIndex] = blueEnergy / maxBlueEnergy
|
||||
|
||||
for i = 1,num_modules do
|
||||
red[i] = weighted_avg(tmpRed, 2*i)
|
||||
green[i] = weighted_avg(tmpGreen, 2*i)
|
||||
blue[i] = weighted_avg(tmpBlue, 2*i)
|
||||
end
|
||||
|
||||
-- return the 3 color arrays
|
||||
return red, green, blue
|
||||
|
@ -65,6 +82,12 @@ function init(nmod, cmod)
|
|||
blue[i] = 0
|
||||
end
|
||||
|
||||
for i = 1,2*(nmod+1) do
|
||||
tmpRed[i] = 0
|
||||
tmpGreen[i] = 0
|
||||
tmpBlue[i] = 0
|
||||
end
|
||||
|
||||
-- don't use fading
|
||||
return 0
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue