в соответствии с сайтом, который вы предоставляете в комментарии (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]));