为当前颜色寻找和谐的颜色

2022-03-27 00:00:00 colors math formula java

我有一种颜色:祸不单行(#aeeb12)或rgb(1742318)。 我需要为这个颜色找两个相似的颜色。 有没有什么数学公式可以编程来做呢? 图片如下:


解决方案

根据您在评论中提供的站点(sessions.edu/color-culator) 您对颜色使用的是类似图案:当您转换RGB颜色HSB/HSV表示法时,我将您重定向到此站点以了解此系统表示颜色的方式http://colorizer.org/。

相似颜色是一个三和弦:Left One MainOne Right One 在HSB表示中,我这样定义主要的一个:[h,S,B]

  • H色调是度角度
  • S饱和度在0和1之间浮动
  • B亮度/值在0和1之间浮动
如果定义为:[H-30,S,B] 和right One如果定义为:[H+30,S,B]

在Java中,如果您使用的是java.awt.color API,则色调是浮点值(介于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]));

相关文章