我在解决如何在两个颜色向量之间淡入淡出时遇到问题。
两种颜色:
Tinker::Vect3d<float> startCol(255,0,0);
Tinker::Vect3d<float> endCol(0,0,255);
我也有0-100“t1”的传入值。
我的一个尝试:
for(int i=0;i<nLEDs;i++){
const float fade = (255 / 100) * (t1 * sensitivity);
Tinker::Vect3d<float> finalColour(startCol*a + endCol*(1-a));
FTLEDColour col = { finalColour[0] , finalColour[1] , finalColour[2] };
}
以连续循环运行。我试图从红色开始,并根据输入值面对绿色,因此0为红色,100为绿色。
答案 0 :(得分:2)
首先,我想如果你定义一个浮动矢量来定义颜色,我猜它的限制在0 .. 1之间,而不是0 .. 255.即:
Tinker::Vect3d<float> startCol(1.0,0,0);
Tinker::Vect3d<float> endCol(0,0,1.0);
对于你的淡入淡出因子,你可以这样做:
const float fade = (t1 * sensitivity)/100;
考虑到t1在0..100之间变化,灵敏度为0 <=灵敏度&lt; = 1
现在,您可以将淡入淡出应用于您的颜色:
Tinker::Vect3d<float> finalColour(startCol*(1-fade) + endCol*(fade));
当然,假设矢量类可以执行此基本操作
P.S。如果灵敏度为1,你只会得到一个完整的淡入淡出,我想这个等式是没有必要的。