Средний цвет между тремя
какими-то RGB
;
и
-- очевидно серый
(вопросы гаммы пока оставим в стороне) для всех людей.
Мы точно одинаково понимаем «средний»? [UPD: ага, прочитал ниже, ответил тоже ниже.]
denny, а вы кстати как понимаете средний цвет? А то вдруг достаточно метода матового экрана
wrest, тогда если предположить, что sRGB-координаты в нашем софте линейные, то действительно просто берём средние покоординатно, а если нелинейные, то линеаризуем стандартно (можно найти способ по чему-то типа «nonlinear sRGB gamma», точнее два способа — подешевле и подороже, и вроде иногда до сих пор используется и первый, но вообще разницы будет, если не нужна особая точность, не так уж много).
Или вы говорите о том, что если предъявить три цвета и попросить описать словами или показать пальцем ткнув в образцы, какой будет средний, то получим столько ответов сколько людей? Ну так -- да. В уме обычный человек не может складывать два различных ощущения цвета в какое-то третье, тут нужен опыт.
Я не только про опыт, я предполагаю, что такой опыт может сформироваться существенно разный (дающий разные ответы). Вот давайте возьмём в качестве оффтопного исследования полусферу (не сферу, чтобы избежать некоторых проблем на пустом месте). Как по-вашему найти барицентр трёх произвольных точек этой полусферы? (как точку на ней). Впрочем нет, полусфера плохой вариант, она выдерживает способ из моего первого ответа здесь с окружностью. А вот если взять более хитрый кусок поверхности, может не выйти выбрать единственную точку на наименьшем (внешнем, при погружении этой поверхности в евклидово пространство) расстоянии, или она будет очень странно располжена с точки зрения внутренней метрики, или наконец погружений может быть много разных (я тут не помню, какие есть гарантии для разных многообразий насчёт единственности).
Давайте я все-таки сделаю пояснение что я имею в виду под средним цветом.
Берем один цвет, светим на матовый экран (например -- в виде шара), смотрим. Затем берем второй цвет и тоже светим (а первый выключаем).
Это два исходных цвета.
Теперь включаем оба и отходим, чтобы яркость упала в два раза. Получаем средний из двух.
Ну это может быть не тем, что хотел ТС. Это явно не всегда близко к чему-то с требованиями к перцептуальности (скажем, цветовые расстояния до двух тех цветов от результата будут обычно разными).
Но мне это нужно для модельной математической задачки.
Ага, вы наверно визуализируете какие-нибудь величины? Тогда вам может быть полезнее брать не среднее двух цветов, а вообще подбирать их как-то по большему числу параметров. Тогда CIELuv самое то — просто пишется код и результаты довольно ровные на глаз, если сравнивать с HSL каким-нибудь. Конечно если монитор достаточно правильно отображает всё (близок к откалиброванному состоянию, типа там цветовой профиль правильно поставлен и сам не совсем уж дешёвый и т. п.). Я использовал нечто подобное, но слепленное на коленке (повезло угадать некоторые параметры) для визуализации комплекснозначных функций пару раз (пытался решать уравнение Шрёдингера на квадратной сетке, но неправильно, а потом лень было переделывать), выглядело приятно.
-- Пн май 25, 2020 22:27:51 --цветовые расстояния до двух тех цветов от результата будут обычно разными
Вот я балда кстати. Вот это может вполне быть критерием среднести цвета для случая, когда колориметрия важна. Только это условие неконструктивное, вычислять такой цвет будет не очень просто, и если он не единственный, то численные методы могут при малых изменениях исходных цветов разрывно менять результат. Но условие хотя бы красивое, его можно условно повесить в условной рамке на условную стену.