![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
Witajcie,
Potrzebuję zrobić funkcję:
która to zwróci mi kolor (do użycia w CSS) ze "skali" od czerwonego (dla wartości mniejszej/równej $min), przez żółty (dla wartości środkowej) aż do zielonego (dla wartości większej/równej $max). coś na wzór: (IMG:http://i.stack.imgur.com/uErDJ.png) Czy ktoś wie jak uzyskać kolor z tej skali w sposób "ciągły"? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Ten problem to czysta matematyka. Możesz poszukać gotowej funkcji, a jeśli masz ochotę zrobić swoją, to masz pole do popisu. Idealnie byłoby, gdyby funkcja przyjmowała dowolną liczbę kolorów w gradiencie. Idealnie byłoby zrobić to obiektowo, żeby wywoływane było to np. tak:
Można to też uprościć (chociaż już nie będzie tak elegancko) i stworzyć po prostu funkcję. Jeśli miałaby mieć tę samą funkcjonalność, musiałaby przyjmować kolory w tablicy lub jako zmienną liczbę parametrów, a pierwszym (lub ostatnim) parametrem byłaby pozycja pożądanego koloru (najlepiej w skali <0;1>). Wtedy do ustalenia byłby sposób podawania i zwracania kolorów, np. tablica array('r' => ..., 'g' => ..., 'b' => ...) lub szesnastkowo. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
Dzięki, ale problem w tym, że pomiędzy czerwonym (255;0;0)
a zielonym (0;255;0) wcale nie jest żółty (255;255;0) a jakiś sraczkowty (127;127;0) (IMG:style_emoticons/default/wink.gif) |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
A na czym polega problem, że to nie żółty kolor? (IMG:style_emoticons/default/tongue.gif) Cały myk polega na tym, żeby proporcjonalnie obliczyć składowe koloru. Musisz obliczyć pozycję koloru względem dwóch kolorów, czyli dla 0.25 będzie to 0.5, bo leży dokładnie na środku przedziału zielony-sraczkowaty. Potem musisz wyliczyć poszczególne składowe korzystając z tej pozycji. Dla 0.5 będzie to dokładnie kolor między jednym a drugim, czyli w przypadku zieleń-sraczkowaty będzie to:
Kod Zielony: rgb(0, 255, 0) Sraczkowaty: rgb(127, 127, 0) Wynik: R: (0 + 127) * 0.5 = 63,5 G: (255 + 127) * 0.5 = 191 B: (0 + 0) * 0.5 = 0 Załóżmy, że zaokrąglamy "normalnie". Czyli naszym kolorem wyjściowym będzie: Kod rgb(64, 191, 0)
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
Ja chcę aby żołty był w połowie pomiędzy czerowny i zielonym.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 28.09.2025 - 14:10 |