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,它非常完美地展示了我想要的效果
有更多的方法可以做到这一点:
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]
//在这里测试程序结束条件,并在需要时中断。。。
}
}
所有的方法都只是在时间上计算函数值(基于随机值、点表、数学函数)。在每个迭代步骤后,将每个色带作为单独的函数和步长处理
如果知道要实现的颜色模式,请创建一个颜色表并在它们之间进行插值。这里有几个链接可以帮助您:
- 可以用作转换函数)