HSV to RGB algorithmus ändert nur grün wert?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • HSV to RGB algorithmus ändert nur grün wert?

    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

  • #2
    editiere dein post, benutze php tags und zeige, wie du die fkt. aufrufst + testdaten.

    Kommentar


    • #3
      hiho

      tut leid leutz

      der code war fehlerhaft!

      hab bei ein paar variablen das $ zeichen übersehen, zu setzen

      trotzdem danke

      PS: jetzt funkts

      Kommentar

      Lädt...
      X