如何在matlab中创建更浅的颜色?

时间:2010-12-07 21:39:29

标签: algorithm matlab

我有基色,由基本[R G B]矩阵表示。

我想根据我的常数创建一个较浅或较暗的颜色,基本上是一个角度(0 - 90°)。

我正在寻找一种算法,如何根据该角度创建更亮或更暗的颜色。

较浅颜色的端点为白色,较暗颜色的端点为黑色。

愚蠢的例子:

Green -> Lime -> White

Blue -> Navy -> Black

function [result] = GetColor(baseColor, angleValue)

    value = round(angleValue);

    endcolor = [1 1 1];

    r = linspace(basecolor(1,1), endcolor(1,1), 90);
    g = linspace(basecolor(1,2), endcolor(1,2), 90);
    b = linspace(basecolor(1,3), endcolor(1,3), 90);

    result = [r(value) g(value) b(value)];

end

2 个答案:

答案 0 :(得分:5)

你想要的颜色最轻/最黑的是什么?定义与0和90对应的结束点[r1 g1 b1][r2 g2 b2]。然后使用:

colormap = [linspace(r1, r2, 91)' linspace(g1, g2, 91)' linspace(b1, b2, 91)']

定义一组91种颜色,并选择与角度对应的颜色。

答案 1 :(得分:1)

您可以轻松地使用Java,如下所示:

jColor = java.awt.Color(0.12,0.34,0.67);  % R,G,B fractions of 255 = [31,87,171]
lightColor = jColor.brighter.getRGBComponents([])'*255;  % => [44,124,244,255]  (4th component is alpha transparency)
darkColor = jColor.darker.getRGBComponents([])'*255;  % => [21,60,119,255]

Java有其他支持函数/类,您可以在Matlab中无缝使用,如上例所示。