文章
225
粉丝
165
获赞
361
访问
107.3k
#include <stdio.h>
#include <math.h> // 用于fabs()、fmod()
int main() {
// 1. 输入RGB整数值
int R, G, B;
scanf("%d %d %d", &R, &G, &B);
// 2. 归一化到 0~1 区间(公式中的 R' G' B')
double R1 = R / 255.0;
double G1 = G / 255.0;
double B1 = B / 255.0;
// 3. 计算最大值 Cmax
double Cmax = R1;
if (G1 > Cmax) Cmax = G1;
if (B1 > Cmax) Cmax = B1;
// 计算最小值 Cmin
double Cmin = R1;
if (G1 < Cmin) Cmin = G1;
if (B1 < Cmin) Cmin = B1;
// 计算差值 delta
double delta = Cmax - Cmin;
// 4. 计算亮度 L
double L = (Cmax + Cmin) / 2.0;
// 5. 计算饱和度 S
double S;
if (delta == 0) {
S = 0.0;
} else {
S = delta / (1 - fabs(2 * L - 1));
}
// 6. 计算色相 H
double H;
if (delta == 0) {
H = 0.0;
} else {
if (Cmax == R1) {
// 最大值为红色
double temp = (G1 - B1) / delta;
H = 60 * fmod(temp, ...
登录后发布评论
暂无评论,来抢沙发