Методы интерполяции цвета Roblox: LERP, Smoothstep, Catmull-Rom

Чтобы интерполировать цвета в Roblox, вы можете использовать различные методы для плавного перехода между двумя или более цветами. Вот несколько методов с примерами кода:

Метод 1: линейная интерполяция (LERP)

local function lerpColor(startColor, endColor, alpha)
    local r = startColor.r + (endColor.r - startColor.r) * alpha
    local g = startColor.g + (endColor.g - startColor.g) * alpha
    local b = startColor.b + (endColor.b - startColor.b) * alpha
    return Color3.new(r, g, b)
end
-- Example usage:
local startColor = Color3.new(1, 0, 0) -- Red
local endColor = Color3.new(0, 0, 1) -- Blue
for alpha = 0, 1, 0.1 do
    local interpolatedColor = lerpColor(startColor, endColor, alpha)
    print(interpolatedColor)
end

Метод 2: плавная интерполяция

local function smoothstep(t)
    return t * t * (3 - 2 * t)
end
local function smoothstepColor(startColor, endColor, alpha)
    alpha = smoothstep(alpha)
    return lerpColor(startColor, endColor, alpha)
end
-- Example usage:
local startColor = Color3.new(1, 0, 0) -- Red
local endColor = Color3.new(0, 0, 1) -- Blue
for alpha = 0, 1, 0.1 do
    local interpolatedColor = smoothstepColor(startColor, endColor, alpha)
    print(interpolatedColor)
end

Метод 3: сплайн-интерполяция Катмулла-Рома

local function catmullRom(t, p0, p1, p2, p3)
    local t2 = t * t
    local t3 = t2 * t
    local v0 = (p2 - p0) * 0.5
    local v1 = (p3 - p1) * 0.5
    return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (-3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1
end
local function catmullRomColor(t, color0, color1, color2, color3)
    local r = catmullRom(t, color0.r, color1.r, color2.r, color3.r)
    local g = catmullRom(t, color0.g, color1.g, color2.g, color3.g)
    local b = catmullRom(t, color0.b, color1.b, color2.b, color3.b)
    return Color3.new(r, g, b)
end
-- Example usage:
local color0 = Color3.new(1, 0, 0) -- Red
local color1 = Color3.new(1, 1, 0) -- Yellow
local color2 = Color3.new(0, 1, 0) -- Green
local color3 = Color3.new(0, 0, 1) -- Blue
for t = 0, 1, 0.1 do
    local interpolatedColor = catmullRomColor(t, color0, color1, color2, color3)
    print(interpolatedColor)
end