Неправильные результаты для преобразования HSV? - PullRequest
0 голосов
/ 06 марта 2019

У меня есть этот код для преобразования из RGB в HSV

  func rgbToHSV (_ r:Double, _ g:Double, _ b:Double) -> (Double, Double, Double) {

    let cor01 : (Double) -> CGFloat = { valor in
      return CGFloat(valor / 255)
    }

    let corRGB = UIColor(red: cor01(r),
                         green: cor01(g),
                         blue: cor01(b),
                         alpha: 1.0)

    var hue         : CGFloat = CGFloat.infinity
    var saturation  : CGFloat = CGFloat.infinity
    var brightness  : CGFloat = CGFloat.infinity
    var alpha       : CGFloat = CGFloat.infinity

    _ = corRGB.getHue(&hue,
                      saturation:&saturation,
                      brightness:&brightness,
                      alpha:&alpha)

    return (Double(hue), Double(saturation), Double(brightness))
  }

Я конвертирую RGB = (168, 131, 126) в HSV и получаю

HUE = 0.019841269841269771
SAT = 0.24999999999999994
BRI = 0.6588235294117647

Я использую онлайн-конверсию этого сайта и этого сайта , и оба дают мне оттенок 7 градусов.

Что происходит?

1 Ответ

2 голосов
/ 06 марта 2019

Причина этого в том, что значение 0.01984126984126977 является частью целого, где целое составляет 360 градусов.Вы можете умножить на 360 и получить значение 7.1428571428571175.

let result = rgbToHSV(168, 131, 126)
print(result)
print(result.0 * 360)

Выход:

(0.01984126984126977, 0.24999999999999994, 0.6588235294117647)
7.1428571428571175
...