Алгоритм нахождения цвета между двумя другими - в цветовом пространстве окрашенных цветов

При смешивании синей и желтой краски результат - какой-то зеленый.

У меня два цвета RGB:

синий = (0, 0, 255)

и желтый = (255, 255, 0)

Каков алгоритм поиска цвет rgb, который является результатом смешивания двух цветов, как они появляются при использовании краски? Цвета, получаемые в результате алгоритма, не должны быть очень точными. В приведенном выше примере это должно было бы выглядеть как что-то зеленое.

Заранее спасибо.

Изменить: Эта функция, написанная на Go, работала у меня на основе ответа от LaC.

func paintMix(c1, c2 image.RGBAColor) image.RGBAColor { 
    r := 255 - ((255 - c1.R) + (255 - c2.R))
    g := 255 - ((255 - c1.G) + (255 - c2.G))
    b := 255 - ((255 - c1.B) + (255 - c2.B))
    return image.RGBAColor{r, g, b, 255}
}

Edit # 2 Хотя это удается смешать голубой и желтый, смесь синего и желтого становится черной, что кажется неправильным. Я все еще ищу рабочий алгоритм.

Edit # 3 Вот полный рабочий пример в Go, использующий цветовое пространство HLS: http://go.pastie.org/1976031 . Спасибо, Марк Рэнсом.

Редактировать # 4 Похоже, что путь вперед для еще более лучшего смешивания цветов заключался бы в использовании уравнения Кубелки-Мунка

27
задан Alexander 12 December 2012 в 01:14
поделиться