Math 脉冲/闪烁RGBA颜色?

Math 脉冲/闪烁RGBA颜色?,math,colors,rgba,Math,Colors,Rgba,因此,在我的程序中,颜色定义如下,例如 //R, G, B, A float red[4] = { 1, 0, 0, 1 }; float green[4] = { 0, 1, 0, 0.5 };//green[3] = 0.5; this mean opacity is at 50% float blue[4] = { 0, 0, 1, 0.2 };blue[3] = 0.2; this mean opacity is at 20% 我的问题是,如何使颜色平滑地跳动/闪烁?我对实现我想要

因此,在我的程序中,颜色定义如下,例如

//R, G, B, A
float red[4] = { 1, 0, 0, 1 };

float green[4] = { 0, 1, 0, 0.5 };//green[3] = 0.5; this mean opacity is at 50%

float blue[4] = { 0, 0, 1, 0.2 };blue[3] = 0.2; this mean opacity is at 20%
我的问题是,如何使颜色平滑地跳动/闪烁?我对实现我想要的目标所涉及的数学感到非常困惑

例如,如果我想淡入淡出一种颜色,我会这样做

float color[4] = { 1, 0, 0, 1 };
void fadeColorInAndOut(float * Colorin)
{
    for(float i = 1; i > 0; i-= 0.01f)
    {
        Colorin[3] = i;
        sleep(10);//10 milliseconds
    }
    for(float i = 0; i < 1; i+= 0.01f)
    {
        Colorin[3] = i;
        sleep(10);//10 milliseconds
    }
}
float color[4]={1,0,0,1};
无效fadeColorInAndOut(浮动*Colorin)
{
对于(浮动i=1;i>0;i-=0.01f)
{
色素[3]=i;
睡眠(10);//10毫秒
}
对于(浮动i=0;i<1;i+=0.01f)
{
色素[3]=i;
睡眠(10);//10毫秒
}
}
但当涉及到真正的脉动/闪烁的颜色,我真的不知道从哪里开始

希望能帮助你了解更多,这就是我想要的效果。这是我找到的一个GIF,它非常完美地展示了我想要的效果


有更多的方法可以做到这一点:

  • 在随机颜色之间插值
  • 在预定义的颜色表之间插值
  • 使用连续函数
  • <>强>这里简单的C++例子3:< /强>

    void迭代(float*col,float t)
    {
    col[0]=cos(0.5*t);//系数给出了变化的频率
    col[1]=cos(0.3*t);//色带之间的不同数字将为您提供颜色
    col[2]=cos(0.1*t);
    }
    void main()
    {
    浮动t=0.0;
    float col[4]={0.0,0.0,0.0,1.0};
    对于(;;)
    {
    迭代(col,t);
    //这是你的彩色物品
    睡眠(10);t+=0.01;//脉动速度[rad/10ms]
    //在这里测试程序结束条件,并在需要时中断。。。
    }
    }
    
    所有的方法都只是在时间上计算函数值(基于随机值、点表、数学函数)。在每个迭代步骤后,将每个色带作为单独的函数和步长处理

    如果知道要实现的颜色模式,请创建一个颜色表并在它们之间进行插值。这里有几个链接可以帮助您:

    • 可以用作转换函数)

    您的代码使用哪种编程语言?是C++吗?我建议你在你的问题上加上使用的语言。要更新您的问题,请单击帖子下的“”链接。非常感谢。