function lerp(a, b, c) return a + (b - a) * c end function dlerp(a, b, c) return lerp(b, a, 0.5^c) end function bton(bool) return bool and 1 or 0 end function min(a, b) if a < b then return a end return b end function normalize(x, y) if x == 0 and y == 0 then return 0, 0 end local leng = math.sqrt(x*x + y*y) return x / leng, y / leng end -- Top left corner function point_in_rect(px, py, rx, ry, rw, rh) return px > rx and px < rx + rw and py > ry and py < ry + rh end function dist(x1, y1, x2, y2) local dx = x1 - x2 local dy = y1 - y2 return (dx*dx + dy*dy)^0.5 end