C++ RGB渐变颜色转换公式及例程
时间: 2023-12-20 15:05:30 浏览: 91
RGB渐变颜色转换公式可以通过线性插值来实现,在C++中可以通过以下代码实现:
```c++
#include <iostream>
#include <cmath>
using namespace std;
// 线性插值函数,t为插值因子,a和b为两个端点的值
double lerp(double a, double b, double t) {
return a + (b - a) * t;
}
// RGB颜色结构体
struct RGB {
int r, g, b;
// 构造函数
RGB(int r = 0, int g = 0, int b = 0) : r(r), g(g), b(b) {}
};
// 渐变函数,c1和c2为两个端点的颜色,t为插值因子
RGB gradient(const RGB& c1, const RGB& c2, double t) {
int r = (int) round(lerp(c1.r, c2.r, t));
int g = (int) round(lerp(c1.g, c2.g, t));
int b = (int) round(lerp(c1.b, c2.b, t));
return RGB(r, g, b);
}
int main() {
RGB c1(255, 0, 0); // 红色
RGB c2(0, 0, 255); // 蓝色
for (double t = 0; t <= 1; t += 0.1) {
RGB c = gradient(c1, c2, t);
cout << "RGB(" << c.r << "," << c.g << "," << c.b << ")" << endl;
}
return 0;
}
```
这个例程展示了如何通过线性插值来实现RGB颜色渐变,从红色到蓝色。在渐变函数中,输入参数c1和c2为两个端点的颜色,t为插值因子,输出为在t位置上的颜色。在主函数中,我们依次插值生成10个颜色,并输出它们的RGB值。