2010-12-07 98 views
2

我有一個基本的顏色,由基本的[R G B]矩陣表示。如何在matlab中創建較亮的顏色?

我想根據我的常數(基本上是一個角度(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 

回答

3

它最輕/最暗您喜歡哪種顏色?定義終點[r1 g1 b1][r2 g2 b2]將對應於0到90然後使用:

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

來定義一組的91點的顏色,並挑選對應於角度的顏色。

0

您可以輕鬆地使用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無縫地使用,如上面的例子。