Animation 粗差/插值/缓和RGB

Animation 粗差/插值/缓和RGB,animation,Animation,看起来我的计算有问题,我不知道是什么:( 我正在开发这个LED条控制器,我想在两种颜色之间进行粗花呢/缓和 假设我们有2550(R,当前)和0255(B,目标) 现在,当我开始这个活动时,R应该向下运行,B应该向上运行(所以它们在128 0 128处相遇),然后它变成蓝色 我试过以下方法 if (animationcounter < animationlength) { for (k = 0; k<3; k++) { current_r

看起来我的计算有问题,我不知道是什么:(

我正在开发这个LED条控制器,我想在两种颜色之间进行粗花呢/缓和

假设我们有2550(R,当前)和0255(B,目标)

现在,当我开始这个活动时,R应该向下运行,B应该向上运行(所以它们在128 0 128处相遇),然后它变成蓝色

我试过以下方法

    if (animationcounter < animationlength) {
        for (k = 0; k<3; k++) {
            current_rgb[k] = easeInOutCubic(animationcounter, begin_rgb[k], rgb_2[k], animationlength);
        }
    } else {
        for (k = 0; k<3; k++) {
            current_rgb[k] = rgb_2[k];
        }
    }
if (animationcounter < animationlength) {
    for (k = 0; k<3; k++) {
        current_rgb[k] = easeInOutCubic(animationcounter, begin_rgb[k], rgb_2[k] - begin_rgb[k], animationlength);
    }
} else {
    for (k = 0; k<3; k++) {
        current_rgb[k] = rgb_2[k];
    }
}
我遇到的问题是,当我从红色变为红色时,RGB值从255 0 0 0变为500 0 0,然后突然变为255 0 0-我需要它保持在255(因为开始和目标之间没有区别)

当我从R转到B时,B运行到255,但R不变(它转到255 0 255,然后弹出到0 0 255)

看起来我没有减去什么,但我想不出来:(

如果这个线性函数工作得很好,那么我可以开始在LED条上使用四次/三次缓和平滑效果


我迷路了,被卡住了,我尝试的每件事都失败了,感觉我错过了一个非常简单的要点。

嘿..我明白了。改变是因为缺少了一个减法-改变不应该是绝对值(不是目标值),而是总的改变,所以我改变了函数

if (animationcounter < animationlength) {
    for (k = 0; k<3; k++) {
        current_rgb[k] = easeInOutCubic(animationcounter, begin_rgb[k], rgb_2[k], animationlength);
    }
} else {
    for (k = 0; k<3; k++) {
        current_rgb[k] = rgb_2[k];
    }
}
if(animationcounterif (animationcounter < animationlength) {
    for (k = 0; k<3; k++) {
        current_rgb[k] = easeInOutCubic(animationcounter, begin_rgb[k], rgb_2[k] - begin_rgb[k], animationlength);
    }
} else {
    for (k = 0; k<3; k++) {
        current_rgb[k] = rgb_2[k];
    }
}