sub farbverlauf { # # Logik: # ====== # 1. Mitte von 128 bis 255, also FF8080 bis FFFF80 = Rot -> Gelb # 2. Links von 255 runter bis 128, also FFFF80 bis 80FF80 = Gelb -> Grün # 3. Rechts von 128 hoch bis 255, also 80FF80 bis 80FFFF = Grün -> Blau # Ergibt 384 Farben in der gleichen Helligkeit # my $anzahl = shift; my @arr; if ($anzahl > 1) { $anzahl = 385 if $anzahl > 385; # Minimale Schrittweite darf 1 sein my $schritt = int (384 / ($anzahl - 1)); # Schrittweite anhand Anzahl Werte for (my $z = 0; $z < $anzahl - 1; $z ++) { my @rgb = (255,128,128); # Startfarbe fest Rot $rgb[1] = int (128 + ($z * $schritt)); if ($rgb[1] > 255) { # Überlauf Mitte nach links schieben $rgb[0] -= $rgb[1] - 255; $rgb[1] = 255; } if ($rgb[0] < 128) { # Überlauf Links nach rechts schieben $rgb[2] += 128 - $rgb[0]; $rgb[0] = 128; } push @arr,sprintf ('#%02X%02X%02X',@rgb); } } push @arr,'#80FFFF'; # Letzte Farbe soll immer fest Blau sein wg. Rundungsdifferenzen bei Schrittweite return @arr; }