【问题标题】:HSL to RGB conversion help needed需要 HSL 到 RGB 转换帮助
【发布时间】:2017-12-21 21:21:04
【问题描述】:

这可能是一个非常愚蠢的问题,但只是想澄清我的问题。 看过一些用于 RGB 和 HSL 之间转换的不同算法后,我看到了 var_1 和 var_2。我只是想知道这些变量实际上是什么? 我知道它们会以错误的形式出现,只是想完全了解为什么以及在何处需要对转换进行更改。

void HSLToRGB( int H, int S, int L, int& R, int& G, int& B )
{
H = 240;
S = 47;
L = 58; 


if (S == 0)
{

    R = L * 255
        G = L * 255
        B = L * 255
}
else
{
    if (L < 0.5) { var_2 = L * (1 + S); }
    else
    {
        var_2 = (L + S) - (S * L);
        var_1 = 2 * L - var_2;
    }
    var_1 = 2 * L- var_2;
    R = 255 * Hue_2_RGB(var_1, var_2, H + (1 / 3));
    G = 255 * Hue_2_RGB(var_1, var_2, H);
    B = 255 * Hue_2_RGB(var_1, var_2, H - (1 / 3));
}
static float Hue_2_RGB(float v1, float v2, float vH)
{
if (vH < 0) { vH += 1; }
if (vH > 1) { vH -= 1; }
if ((6 * vH) < 1) { return (v1 + (v2 - v1) * 6 * vH); }
if ((2 * vH) < 1) {return (v2); }
if ((3 * vH) < 2)
{
    return (v1 + (v2 - v1) * ((2 / 3) - vH) * 6);
    return (v1);
}
}

对不起,如果这是一个愚蠢的问题,只是想用外行术语 100% 理解。

谢谢。 我也没有包含 RGB 到 HSL 转换的代码。

【问题讨论】:

  • 没有办法知道,因为它们没有在您显示的代码中定义。我们可以根据定义的其他值进行猜测,但这也不能保证。我认为这是 C,这意味着它们可能是 int。
  • 到目前为止,我还没有将它们分配给任何东西,但我正在研究使用 RGB 进行转换的算法,我遇到的问题是 Var_1 和 2 应该被声明为什么。不确定这是否有帮助。
  • 如果你只是想试试看它是否编译,我会把它们设为 int。
  • 好的,Rob 干杯。我会试试看的。
  • 编译正常只是没有返回我期望看到的内容。

标签: algorithm rgb var hsl


【解决方案1】:

没有办法知道,因为它们没有在您显示的代码中定义。我们可以根据定义的其他值进行猜测,但这也不能保证。我认为这是 C,这意味着它们可能是 int

如果您只是想尝试一下,看看它是否可以编译,我会将它们设为 int。如果它可以编译,那么您可以更深入地研究该算法,看看什么是有效的以及它走了多远。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-15
    • 2011-03-29
    • 2011-01-22
    • 1970-01-01
    • 2012-08-25
    • 2020-02-25
    • 1970-01-01
    • 2021-06-29
    相关资源
    最近更新 更多