文章

225

粉丝

165

获赞

361

访问

107.3k

头像
求HSL的值 题解:
P1971 西北工业大学2023年机试题
发布于2026年3月13日 10:13
阅读数 25

#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, ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发