10.10.2019, 07:03
Like this:
Code:
function tomins(hour, min)
return hour * 60 + min
end
points = {
{ hour = 0, min = 0, v1 = 25, v2 = 50 },
{ hour = 7, min = 30, v1 = 25, v2 = 50 },
{ hour = 8, min = 0, v1 = 30, v2 = 30 },
{ hour = 9, min = 0, v1 = 50, v2 = 25 },
{ hour = 16, min = 0, v1 = 40, v2 = 15 },
{ hour = 17, min = 0, v1 = 30, v2 = 30 },
{ hour = 18, min = 30, v1 = 25, v2 = 50 },
{ hour = 24, min = 0, v1 = 25, v2 = 50 },
}
now = os.date('*t')
currmins = tomins(now.hour, now.min)
for i, point in ipairs(points) do
nextmins = tomins(point.hour, point.min)
if nextmins >= currmins then
nextpoint = point
prevpoint = points[ i - 1 ] or nextpoint
prevmins = tomins(prevpoint.hour, prevpoint.min)
break
end
end
deltamins = nextmins - prevmins
if deltamins > 0 then
d1 = (nextpoint.v1 - prevpoint.v1) * (currmins - prevmins) / deltamins
d2 = (nextpoint.v2 - prevpoint.v2) * (currmins - prevmins) / deltamins
else
d1 = 0
d2 = 0
end
v1 = math.floor(prevpoint.v1 + d1)
v2 = math.floor(prevpoint.v2 + d2)
log(now.hour, now.min, v1, v2)