Я не совсем понимаю, чего вы пытаетесь достичь, сложив вместе два оттенка.
Оттенок - это угол, дающий «оттенок» цвета, который вы представляете.Если вы думаете в градусах, оттенок будет в диапазоне [0, 360 [.Кроме того, значения 45 и 405. будут представлять один и тот же оттенок.
Вы должны принять это во внимание, когда хотите манипулировать оттенками.То есть, если вы хотите усреднить два значения, например 355 и 5, правильный результат может быть 0 (нарисуйте круг и взять наименьший половинный угол между этими двумя значениями) или 180 (наибольший половинный угол).
Как я это сделал на Android (у которого нет утилит управления цветом), чтобы создать свой собственный цветовой класс, который хранит оба представления цвета (rgb и hsv).
Тогда яесть методы, которые позволяют установить RGB или установить HSV.Добавление в том же цветовом пространстве тривиально.Затем каждый раз, когда эти методы вызываются, я соответственно вызываю метод updateHSV или updateRGB, который вычисляет компоненты цвета из новых значений.
class Color {
float[] hsv;
float[] rgb;
public void setRgb(float[] rgb) {
System.arraycopy(rgb, 0, this.rgb, 0, 3);
computeHsvFromRgb();
}
public void setHsv(float[] hsv) {
System.arraycopy(hsv, 0, this.hsv, 0, 3);
computeRgbFromHsv();
}
// ...
}
Для примера кода преобразования цвета: