поиск гармоничных цветов для текущего цвета - PullRequest
0 голосов
/ 24 июня 2018

У меня есть цвет: hex (# aeeb12) или rgb (174, 235, 18). Мне нужно найти 2 аналогичных цвета для этого цвета. Есть ли математические формулы, чтобы сделать это программно? Вот изображение: task

1 Ответ

0 голосов
/ 24 июня 2018

в соответствии с сайтом, который вы предоставляете в комментарии (sessions.edu/color-calculator) Вы использовали аналогичный шаблон для цветов: аналогичные цвета имеют смысл при преобразовании цветов RGB в HSB / HSV, я перенаправляю вас на этот сайт, чтобы понять, как эта система представляет цвета http://colorizer.org/.

Аналогичные цвета - это триады: leftOne mainOne rightOne В представлении HSB я определяю основной, как это: [H, S, B]

  • H - это угол в градусах
  • S Насыщенность колеблется между 0 и 1
  • B Яркость / Значение находится в диапазоне от 0 до 1

Таким образом, leftOne, если определено как: [H - 30, S, B] И вправо, если определено как: [H + 30, S, B]

В Java, если вы используете API java.awt.color, цветовой тон - это плавающее значение (от 0 до 1), поэтому просто уменьшите угол на 360 ...

Вот фрагмент из того, как получить этот результат в Java:

double anglerotation = 1d / 12; // 30 /360

Color mainColor = new Color(174, 235, 18);

float[] hsbLeftColor = Color.RGBtoHSB(mainColor.getRed(), mainColor.getGreen(), mainColor.getBlue(), null);
hsbLeftColor[0] -= anglerotation;
Color leftColor = new Color(Color.HSBtoRGB(hsbLeftColor[0], hsbLeftColor[1], hsbLeftColor[2]));

float[] hsbRightColor = Color.RGBtoHSB(mainColor.getRed(), mainColor.getGreen(), mainColor.getBlue(), null);
hsbRightColor[0] += anglerotation;
Color rightColor = new Color(Color.HSBtoRGB(hsbRightColor[0], hsbRightColor[1], hsbRightColor[2]));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...