Я создаю интерфейс для управления освещением в системе домашней автоматизации. Мне удалось без особых проблем управлять стандартным включением/выключением и диммируемым освещением для различных поставщиков, но теперь я столкнулся с проблемой, связанной с RGB-подсветкой.
В настоящее время я использую светодиодную ленту RGBW — в частности, я работаю с недорогим источником света RGBW: свет состоит из четырех светодиодов, и каждым светодиодом можно управлять отдельно.
Чтобы быть более ясным, я работаю над некоторым кодом С#, который должен извлекать текущий выбранный цвет и отображать его в пользовательском интерфейсе, а также позволять пользователю указывать новый цвет для света. Для установки цвета и его получения я должен использовать поставщика команд, который позволяет мне отправлять и получать команды через веб-службу.
Провайдер работает с цветами RGBW — используются четыре компонента для красного, зеленого, синего и белого. Чтобы представить текущий цвет света в моем интерфейсе, я хотел бы преобразовать цвет RGBW, возвращаемый службой, в более стандартную схему RGB/HSB.
При поиске в Интернете единственная ссылка на преобразование цвета, которую я нашел (исключая образец С++ для преобразования rgb в rgbw, который, насколько я понимаю, должен иметь некоторую серьезную ошибку), — это статья, в которой показано преобразование из HSI в RGBW, которое противоположное тому, что мне нужно: ссылка здесь
Я ищу некоторое представление о том, как я могу добиться этого преобразования (или простое объяснение, почему это невозможно). Насколько я понимаю, преобразование из RGB в RGBW является произвольным — одно значение RGB может быть представлено как несколько значений RGBW, но противоположное преобразование должно быть однозначным. Также обратите внимание, что пока я использую С#, не стесняйтесь ссылаться на алгоритмы и на другом языке - проблема не в языке, проблема в том, что я не знаю математики для преобразования цвета.