Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Generowanie kolorów pośrednich
PiNkOs
post
Post #1





Grupa: Zarejestrowani
Postów: 76
Pomógł: 4
Dołączył: 27.02.2009

Ostrzeżenie: (0%)
-----


Witam,

Jestem w trakcie tworzenia pewnej aplikacji, która odlicza co 1s do liczby X.

Chodzi mi oto, że:

% to liczba obecna z X

1% - to kolor czerwony
2% - 49% - kolory co raz bardziej zbliżane do koloru żółtego. (przejscie z czerwonego na żółty)
50% - kolor żółty
51-99% - kolory co raz bardziej zbliżane do koloru zielonego (przejscie z zółtego na zielony)
100% - kolor zielony

[[[Pętla zaczyna się od nowa

Wiem, że da radę coś takiego zrobić (tylko nie znam się w ogóle na rgb)

Prosze o jakis przykład

Pozdrawiam

Ten post edytował PiNkOs 15.11.2010, 09:05:26
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Podpowiem tylko, bo ruszenie tego co już Ci podałem i przerobienie to nie jest fizyka kwantowa. Procenty możesz wywalić, bo są tam tylko udziwnieniem niepotrzebnym. Ciebie interesują jedynie wartości rgb kolorów: startowego, środkowego, końcowego. Na ich podstawie obliczasz różnicę między kolorami i obliczasz wartość zmiany co krok dla każdej składowej koloru. Napisałem już o tym już w 2 poście tego tematu.
1. Bierzesz rgb startu i następnego w kolejności oraz liczbę kroków.
2. Obliczasz różnicę wartości dla każdej składowej i dzielisz przez liczbę kroków
3. Dodajesz do startu krok * różnica/liczba_kroków obliczona w punkcie 2
Czym się to różni od kodu jaki podałem wyżej? Tylko tym, że teraz możesz mieć różną wartość kroków i kolorów wszędzie.
Myślę, że skoro chcesz równo, to nie 40, ale 33 powinno być. IFy na (< 34),(>33 i < 67),(>66 i <101), krok%101 a 5.1 nie na sztywno, ale liczone dla każdej składowej koloru OSOBNO, dla KAŻDEGO if. Dam Ci przykład dla przejścia między dwoma kolorami w jednym z 3 etapów.

Jeśli więc przechodzisz z koloru A = rgb(a,b,c) do B = rgb(d,e,f) w 30 krokach, potem do C(g,h,i) w 40 krokach, a potem znów do A w 30 krokach to musisz:
1) policzyć: q = (d-a)/30, r = (e-b)/30, s = (f-c)/30,
2) zrobić
[JAVASCRIPT] pobierz, plaintext
  1. if(krok < 31) {
  2. document.getElementById('box').style.backgroundColor = 'rgb(' + parseInt( a + krok * q ) + ', ' + parseInt( b + krok * r ) + ', ' + parseInt( c + krok * s ) + ')';
  3. }
[JAVASCRIPT] pobierz, plaintext
A dla reszty wziąć poprawkę, że musi liczba kroków się odpowiednio wyzerować, a więc nie (100-krok) czy (krok-100), ale właściwie pasująca. Możesz nawet olać to, że wartości po odejmowaniu wyjdą ujemne, bo skrypt wtedy podczas dodawania i tak będzie działał jak trzeba , gdyż wynika to z tego, że dodawanie liczby ujemnej zamieni działanie na odejmowanie. Matma i jej dobre zrozumienie daje dużą przewagę podczas programowania. Powie Ci o tym każdy programista siedzący w skryptach back-endu.

To naprawdę jest matma prosta i więcej nie pomogę, bo dostałeś wszystko niemal jak na tacy i jeśli teraz już nie będziesz potrafił napisać sam, to wróć może do podstawówki, bo tam jest liczenie na poziomie dodawania, odejmowania i tym podobnych prostych operacji algebraicznych. Tu nawet nie ma potęgowania czy trygonometrii, a to ostatnie ja już znałem w podstawówce w 7 klasie, więc nawet nie pisz, że to za trudne i włącz myślenie, bo póki co po Twoim kodzie, widzę, że nawet nie wysiliłeś się by zrozumieć dlaczego dałem choćby (150-krok)*5.1 tylko radośnie swoje procenty powrzucałeś, myśląc, że to załatwi sprawę. Usiądź, popatrz, przemyśl i dopiero wtedy przerabiaj.
Powód edycji: [thek]: wyłączyłem emoty bo się z b) gryzły
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 28.12.2025 - 17:47