Если вам нужно сделать это в общем случае и ожидайте, что средний цвет будет визуально точным в большем числе случаев (т. е. визуальный цвет и тон средней точки должны «выглядеть правильно» для зрителя), то, как было предложено выше, вы может конвертировать из RGB в HSV или HSL перед вычислением средней точки, а затем конвертировать обратно. Это может значительно отличаться от значений среднего значения RGB.
Вот какой код JavaScript для преобразования в / из HSL, который я нашел при кратком поиске, и что при краткой проверке, похоже, поступает правильно:
Просто примените функцию rgbToHsl к вашим двум векторным векторам r, g, b, усредните два результирующих вектора и примените к ним hslToRgb. , .