manman: farbkreis berechnen - alle farben logisch berechnen

Hallo,

ich möchte gerne mit php einen Farbenkreis berechnen, bzw., gar "alle" Farben in einer logischen Folge berechnen. Dafür fehlt mir jedoch die Logik, die dahniter steckt.

Ich habe die drei Werte (rgb) für den Farbkreis müsste es ja dann theoretisch so gehen:

r   g   b
1   0   0
1   1   0
0   1   0
0   1   1
0   0   1
1   0   1
1   0   0 (siehe oben)

1 steht für 255, d.h., es wird stufenweise der wert auf 255 erhöht.
So müsste sich ja ein Farbkreis ergeben. Doch wie würde dafür die "Rechnung" aussehen? for-schleife? und kann ich damit auch bestimmte farbenwinkel wohl irgendwie berechnenß was würde einen grad entsprechen?

Und nun die andere Frage, wie kann ich nach einem logischen Prinzip "alle" farben im kreis berechen?

Gruß

  1. Hallo,

    Hallo,

    Und nun die andere Frage, wie kann ich nach einem logischen Prinzip "alle" farben im kreis berechen?

    Ich hatte vor ein paar Monaten ein ähnliches Problem.
    Lösung: HSV-Farbraum benutzen und bei Bedarf die Farben in RGB-Werte umrechnen.

    Gruß, Volker

    1. Hallo,

      danke schonmal für die Antwort.

      Also müsste ich diese Winkel berechnungen im HSV Modell machen und dann in RGB umwandeln. Gibt es für das in RGB umwandeln schon was vordefiniertes?
      Und wie sieht es mit der Sättigung und der Dunkelstufe aus, für die berechnung innerhalb des Farbenkreises könnte ich ja die Sättigung verwenden um zu einer "leichten" Hintergrundfarbe im Winkel von eine gesättigtere Schriftfarbe zu finden? Aber was mach ich bei meine Rechnungen mit der Dunkelstufe?

      Und für die berechnung eines Farbkreises über das komplette Spektrum des HSV-Farbraums, gibt es dafür eine logische Abfolge, wie ich die Werte verändern muss, dass sie dadurch sowas ähnliches wie ein geshclossener Farbkreis ergbt?

      Gruß

      1. Also müsste ich diese Winkel berechnungen im HSV Modell machen und dann in RGB umwandeln. Gibt es für das in RGB umwandeln schon was vordefiniertes?

        Der Algorithmus zum Tranformieren von HSV nach RGB steht auch auf der Wikipedia-Seite. Einfach in deiner bevorzugten Programmiersprache implementieren.

        Und wie sieht es mit der Sättigung und der Dunkelstufe aus, für die berechnung innerhalb des Farbenkreises könnte ich ja die Sättigung verwenden um zu einer "leichten" Hintergrundfarbe im Winkel von eine gesättigtere Schriftfarbe zu finden? Aber was mach ich bei meine Rechnungen mit der Dunkelstufe?

        Ich zitiere mal eine Bildunterschrift von Wikipedia: "Farbton H, Sättigung S, Dunkelstufe V".
        Alles weitere ist Einsetzen und Herumprobieren im eben erwähnten Algorithmus ;-).

        Und für die berechnung eines Farbkreises über das komplette Spektrum des HSV-Farbraums, gibt es dafür eine logische Abfolge, wie ich die Werte verändern muss, dass sie dadurch sowas ähnliches wie ein geshclossener Farbkreis ergbt?

        Naja, den Kreis gehst du ja durch Angabe eines Winkels durch. Durch das definierte Modell ergibt sich bei einem Durchgang von 360° ein kompletter Farbkreis.

        Gruß, Volker

        1. Hallo,

          Naja, den Kreis gehst du ja durch Angabe eines Winkels durch. Durch das definierte Modell ergibt sich bei einem Durchgang von 360° ein kompletter Farbkreis.

          genau, und auf dem Radius des Kreises würde ich wahlweise die Helligkeit oder die Farbsättigung abbilden, während der jeweils andere Parameter anderweitig vorgegeben wird (Schieber, Drehregler, Eingabefeld).
          Ich würde sogar bevorzugen, nicht die Sättigung, sondern die Helligkeit auf den Kreisradius abzubilden. Dann hat man im Kreismittelpunkt als singulären und unveränderlichen Punkt die Farbe Schwarz (oder Weiß, je nach Definition), während man im anderen Fall der Kreismittelpunkt mit Sättigung 0 ein Grau bedeutet, das immer noch eine variable Helligkeit hat.

          Die häufig verwendeten Farbräume HSL und seine Varianten oder RGB haben nun einmal drei Koordinaten (CMYK im Print-Bereich hat sogar vier); wenn man dieses Gebilde zweidimensional abbilden möchte (Papier, Bildschirm), dann *muss* man die dritte Koordinate eben auf einen bestimmten, festen oder variablen Wert setzen.

          So long,
           Martin

          --
          Bitte komme jemand mit einem *g* zum Wochenende, damit nicht über mich gelacht wird.
            (Gunnar Bittersmann)