Ich möchte eine Farbe zwischen rot, gelb, grün abhängig von einer Zahl zwischen 1 und 100 anzeigen.
1 ist grün und 100 ist rot, 50 ist gelb. Ich möchte im Grunde einen Farbverlauf dazwischen erstellen.
Bisher habe ich es versucht:
%Vor%Und es tut es etwas, aber gibt mir bräunlich & amp; dunkle Farben, & amp; überhaupt kein Gelb.
Es liegt daran, dass Sie nicht beide Kanäle auf einmal ändern sollten, sondern R in der ersten Hälfte und G in der zweiten Hälfte erhöhen.
Probieren Sie eine Funktion wie diese aus:
%Vor%Um es zu testen:
%Vor%Ich habe herausgefunden, dass der Umgang mit dem HSV-Farbmodell einfacher ist als das RGB-Modell . Es hilft Ihnen, die Farbe, mit der Sie arbeiten möchten, einfach auszuwählen. Mit RGB müssten Sie verstehen, wie verschiedene Werte von R, G und B kombiniert werden, um Ihnen die Farbe zu geben, die Sie wollen / nicht wollen.
Auch diese SO-Frage könnte nützlich sein: Wie kann ich Hex-Farbcodes in PHP durchlaufen?
Ich kenne kein mathematisches Modell für eine "Farbkurve", die bestimmte RGB-Farbwerte durchläuft (z. B. was Sie als grün / gelb / rot beschreiben), wodurch Sie jede Zwischenfarbe in dieser Kurve berechnen könnten . In jedem Fall ist ein Modell einer Funktion (was das wäre) nur so gut wie die Datenpunkte, die es passen muss, also müssten Sie viel spezifischer sein als grün / gelb / rot, um anständige Ergebnisse zu erhalten auch wenn jemand auf die Mathematik hinweist.
Denken Sie daran, dass wir hier nicht an mathematischer Interpolation interessiert sind, sondern an "Farbrauminterpolation" (ein Begriff, den ich gerade erfunden habe) - mit anderen Worten, was würde sieht wie eine "natürliche" Interpolation für einen Menschen aus .
Eine einfachere Lösung für diejenigen unter uns, die nicht über die notwendigen Kenntnisse in Farbtheorie verfügen und die ich Ihnen vorschlagen möchte, ist die Vorauswahl einer Anzahl von Farben mit einem Farbauswahlwerkzeug. Teilen Sie den Bereich von 0-100 in ein viele Bänder als die Farben, die Sie ausgewählt haben, und verwenden Sie einfache Ganzzahl-Division, um von 0-100 zu einem Farbband zu projizieren.
Denkanstoß: Wie entscheidet SO tatsächlich über die Farbe der Upvote-Anzahl für Kommentare?
Update: Ich habe das oben genannte über Meta gefragt. Mal sehen ...
Nach einigem Hinsehen sah keine der Lösungen ansprechend aus. Wie oben erwähnt, ist HSV wahrscheinlich der Weg zu gehen, da moderne Browser Farbe damit gut rendern können.
Um eine gute Vorstellung von den Farben zu bekommen, mit denen Sie arbeiten, sehen Sie sich dieses Farbrad an:
Ich möchte mit blau beginnen, also verwende ich 255 für die Normalisierung.
%Vor%