2010-12-07 12 views
2

J'ai une couleur de base, présentée par la matrice de base [R G B].Comment créer une couleur plus claire dans matlab?

Et je veux créer une version plus claire ou plus foncée de cette couleur, basée sur ma constante, qui est fondamentalement un angle (0 - 90 °).

Et je cherche un algorithme, comment créer des couleurs plus claires ou plus foncées selon cet angle.

Le point final pour une couleur plus claire est blanc et pour une couleur plus foncée est noir.

exemple stupide:

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 

Répondre

3

Qu'est-ce le plus léger/plus sombre que vous voulez que votre couleur? Définissez vos points d'extrémité [r1 g1 b1], [r2 g2 b2] qui correspondent à 0 et 90. Utilisez ensuite:

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

pour définir un ensemble de 91 couleurs, et choisir la couleur correspondant à l'angle.

0

Vous pouvez facilement utiliser Java pour cela, comme suit:

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 a d'autres fonctions/classes de support que vous pouvez utiliser en toute transparence dans Matlab, comme dans l'exemple ci-dessus.

Questions connexes