Hallo Für ein kleines lokales Webprojekt würde ich gerne Temperaturen in Farben darstellen. Der Bereich liegt zwischen 10 und 90°C und die Farben sollen in ein Grad Schritten von blau nach rot laufen. Mit dem CSS Gradient ist dies leider nicht umzusetzen: https://www.w3schools.com/css/tryit.asp?filename=trycss3_gradient-linear_angles Was ich jetzt suche ist eine Möglichkeit, jeder Temperatur eine Farbe zuzuordnen. Dies muss nicht im Browser passieren, ich kann die Datenbank, welche die temperaturen enthält, auch über ein PHP Script um die Spalten mit den Farbwerten erweitern. Eine feste Tabelle möchte ich nicht machen, das wäre ja zu einfach ;-) Aber vor allem auch zu unflexibel, wenn mal andere Farben gewünscht sind. Danke und Gruß Kolja
Gast
#5208845
Wo ist das Problem? Kenntnisse über lineare Funktionen?
Typ schrieb: > Kenntnisse über lineare Funktionen? Nein, Kentnisse über CSS :-) Aber damit sollte es funktionieren: https://www.w3schools.com/colors/colors_rgb.asp color: rgb(100%, 100%, 100%); Ist aber nicht nicht so schön flexibel, wie ich eigenltlich wollte, aber dafür sehr einfach.
Gast
#5208858
Ja, also und da bastelst du für die R und B Werte jetzt eine Funktion in Abhängigkeit von der Temperatur rein und fertich.
Ja :-) 30°C: blau = 30%, rot = 90 - temp = 60%
Gast
#5208927
Kolja L. schrieb: > 30°C: > blau = 30%, > rot = 90 - temp = 60% Was ist dir daran zu unflexibel? Georg
Geht ja auch JavaScript. Ja ich weiß, das ist böse :-) Hier z.B: ein Farbverlauf Blau - Weiß - Rot (circa) ja nach Maus:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
Kolja L. schrieb: > Der Bereich liegt zwischen 10 und 90°C und die Farben sollen in ein Grad > Schritten von blau nach rot laufen. Das ist eventuell im HSV Farbraum einfacher zu berechnen als in RGB, da ändert sich von Rot nach Blau nur ein Wert. Gibt IMHO sattere Farben verglichen zu einfacher Interpolation in RGB.
Es gibt eine einfache formel, die ich immer zur linearen Interpolation zwischen 2 werten mit mehreren Komponenten verwende, egal ob es farben, punkte im raum, oder sonstwas sind:
a und b können vektoren oder scalare sein, t ist ein scalar zwischen 0 und 1. t=0 ist das selbe wie a, t=1 das selbe wie b, t=0.5 ist (a+b)/2, usw. Ungetestete javascript funktion:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
Ich finde es erspart viel rechnerei, wenn man nur t auf den bereich 0 bis 1 normalisieren muss.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.