Как создать более светлый цвет в Matlab? - PullRequest
4 голосов
/ 08 декабря 2010

У меня есть основной цвет, представленный базовой [RGB] матрицей.

И я хочу создать более светлую или более темную версию этого цвета, основываясь на моей константе, которая в основном равна углу (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 ]

5 голосов
/ 08 декабря 2010

Какой самый светлый / самый темный, который вы хотите, чтобы ваш цвет?Определите ваши конечные точки [r1 g1 b1], [r2 g2 b2], которые будут соответствовать 0 и 90. Затем используйте:

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

, чтобы определить набор из 91 цвета, и выберите цвет, соответствующий углу.

1 голос
/ 11 декабря 2010

Вы можете легко использовать 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, как в приведенном выше примере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...