Я делаю класс Color как часть очень базового графического API в C ++. Поэтому я решил взглянуть на Microsoft .NET Framework и заметил, что их класс Color имеет функции для HSB.
Затем я начал исследование, чтобы определить, должен ли я предоставить HSB, HSL или HSV или ВСЕ из них в моем классе.
Итак, у меня есть 3 вопроса по HSB, HSL, HSV:
HSB такой же, как HSL?
Если нет, то почему нет HSBL или даже HSBLV?
Я нахожу много разных методов расчета этих значений, кто-то может показать мне самые быстрые из них?
HSB такой же, как HSL?
Нет, HSB такой же, как HSV, но HSL другой. Все они используются в качестве дружественного способа представления цветов RGB. Статья в Википедии о HSL и HSV объясняет различия с использованием цветных цилиндров: HSL и HSV
По сути, Hue одинаков для HSB и HSL, но насыщенность принимает разные значения, яркость и яркость также различны.
Если нет, то почему нет HSBL или даже HSBLV?
Я не понимаю, в чем суть. И HSB / HSV, и HSL могут представлять любой цвет RGB. Наличие B и L независимо невозможно из-за того, как они определены. Заданная Яркость и Насыщенность HSB связана с фиксированной Яркостью. На самом деле конвертировать между ними очень легко.
Я нахожу много разных методов расчета этих значений, кто-то может показать мне самые быстрые из них?
Здесь аналогичный вопрос для расчета HSB из RGB: Быстрый, оптимизированный и точный RGB <-> код преобразования HSB в C Там есть реализация Java, которая может помочь. Для преобразования между HSB / HSV и HSL см. HSL против HSB против HSV