开发者

How to create lighter color in matlab?

I have a base color, presented by basic [R G B] matrix.

And I want to create a lighter or darker version of that color, based on my constant, which is basically an angle (0 - 90°).

And I looking for an algorithm, how to create lighter or darker color based on that angle.

The endpoint for a lighter color is white 开发者_运维问答and for a darker color is black.

silly example:

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


What it the lightest/darkest you want your color? Define your end points [r1 g1 b1], [r2 g2 b2] that will correspond to 0 and 90. Then use:

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

to define a set of 91 colors, and pick the color corresponding to the angle.


You can easily use Java for this, as follows:

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 has other supporting functions/classes that you can seamlessly use in Matlab, as in the above example.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜