hiho@ll
warum ich hier poste und nicht unter grafik:
ich schätz mal der algorithmus ist irgendwie fehlerhaft (oder ich hab einen denkfehler)
ich hab mir mal vom internet einen HSVtoRGB algorithmus geholt und möcht, z.B. den H-Wert ändern und den daraus resultierenden RGB wert haben
HSV farbmodell:
wie ich HSV verstanden hab, kann ich über H den farbton bestimmen
d.h. ich kann damit blau, rot, grün, violett, gelb etc. auswählen
mit S kann ich die sättigung bestimmen
d.h. eine recht starke oder blasse farbe
mit V kann ich bestimmen, ob die farbe hell oder dunkel ist
d.h. es geht um den schwarz anteil
der algorithmus:
function hsv2rgb($h,$s,$v){
$rgb=array();
if ( $s == 0 ) //HSV values = From 0 to 1
{
$rgb['r'] = $v * 255; //RGB results = From 0 to 255
$rgb['g'] = $v * 255;
$rgb['b'] = $v * 255;
}
else
{
$var_r=0;
$var_g=0;
$var_b=0;
// $var_h = $h * 6;
$var_i = floor( $var_h ); //Or ... var_i = floor( var_h )
$var_1 = $v * ( 1 - $s );
$var_2 = $v * ( 1 - $s * ( $var_h - $var_i ) );
$var_3 = $v * ( 1 - $s * ( 1 - ( $var_h - $var_i ) ) );
if ( var_i == 0 ) { $var_r = $v ; $var_g = $var_3 ; $var_b = $var_1; }
else if ( var_i == 1 ) { $var_r = $var_2 ; $var_g = $v ; $var_b = $var_1; }
else if ( var_i == 2 ) { $var_r = $var_1 ; $var_g = $v ; $var_b = $var_3; }
else if ( var_i == 3 ) { $var_r = $var_1 ; $$var_g = $var_2 ; $var_b = $v ; }
else if ( var_i == 4 ) { $var_r = $var_3 ; $var_g = $var_1 ; $var_b = $v ; }
else { $var_r = $v ; $var_g = $var_1 ; $var_b = $var_2; }
$rgb['r'] = $var_r * 255; //RGB results = From 0 to 255
$rgb['g'] = $var_g * 255;
$rgb['b'] = $var_b * 255;
}
$rgb[0]=$rgb['r'];
$rgb[1]=$rgb['g'];
$rgb[2]=$rgb['b'];
return $rgb;
}
übergeben wird der funktion die HSV werte (im bereich von 0.0 - 1.0)
ich hab mir mal ein kleines test-php script gebaut, dass in einer schleife die H-Werte von 0.0 bis 1.0 immer um 0.01 erhöht!
als RGB Werte krieg ich immer R = 255 B = 0 und Grün erhöht sich langsam von 0-255!!
sollten sich die R und B werte nicht auch verändern, wenn ich H ändere?
danke für eure hilfe
MfG
warum ich hier poste und nicht unter grafik:
ich schätz mal der algorithmus ist irgendwie fehlerhaft (oder ich hab einen denkfehler)
ich hab mir mal vom internet einen HSVtoRGB algorithmus geholt und möcht, z.B. den H-Wert ändern und den daraus resultierenden RGB wert haben
HSV farbmodell:
wie ich HSV verstanden hab, kann ich über H den farbton bestimmen
d.h. ich kann damit blau, rot, grün, violett, gelb etc. auswählen
mit S kann ich die sättigung bestimmen
d.h. eine recht starke oder blasse farbe
mit V kann ich bestimmen, ob die farbe hell oder dunkel ist
d.h. es geht um den schwarz anteil
der algorithmus:
function hsv2rgb($h,$s,$v){
$rgb=array();
if ( $s == 0 ) //HSV values = From 0 to 1
{
$rgb['r'] = $v * 255; //RGB results = From 0 to 255
$rgb['g'] = $v * 255;
$rgb['b'] = $v * 255;
}
else
{
$var_r=0;
$var_g=0;
$var_b=0;
// $var_h = $h * 6;
$var_i = floor( $var_h ); //Or ... var_i = floor( var_h )
$var_1 = $v * ( 1 - $s );
$var_2 = $v * ( 1 - $s * ( $var_h - $var_i ) );
$var_3 = $v * ( 1 - $s * ( 1 - ( $var_h - $var_i ) ) );
if ( var_i == 0 ) { $var_r = $v ; $var_g = $var_3 ; $var_b = $var_1; }
else if ( var_i == 1 ) { $var_r = $var_2 ; $var_g = $v ; $var_b = $var_1; }
else if ( var_i == 2 ) { $var_r = $var_1 ; $var_g = $v ; $var_b = $var_3; }
else if ( var_i == 3 ) { $var_r = $var_1 ; $$var_g = $var_2 ; $var_b = $v ; }
else if ( var_i == 4 ) { $var_r = $var_3 ; $var_g = $var_1 ; $var_b = $v ; }
else { $var_r = $v ; $var_g = $var_1 ; $var_b = $var_2; }
$rgb['r'] = $var_r * 255; //RGB results = From 0 to 255
$rgb['g'] = $var_g * 255;
$rgb['b'] = $var_b * 255;
}
$rgb[0]=$rgb['r'];
$rgb[1]=$rgb['g'];
$rgb[2]=$rgb['b'];
return $rgb;
}
übergeben wird der funktion die HSV werte (im bereich von 0.0 - 1.0)
ich hab mir mal ein kleines test-php script gebaut, dass in einer schleife die H-Werte von 0.0 bis 1.0 immer um 0.01 erhöht!
als RGB Werte krieg ich immer R = 255 B = 0 und Grün erhöht sich langsam von 0-255!!
sollten sich die R und B werte nicht auch verändern, wenn ich H ändere?
danke für eure hilfe
MfG
Kommentar