Kawałek Kodu

Co tu się odskryptala?! Czyli programistyczne porady na luzie

Wyżymanie HTML, czyli gumowa kostka w CSS.

Kiedy poznawałeś wciągający świat transformacji 3D w CSS pewnie trafiłeś na efekt obracającego się sześcianu. Dziś możliwości CSS trochę spowszedniały, a my aby nie stać w miejscu zrobimy skok jednocześnie w przyszłość i przeszłość. Pokażę Ci odzworowanie retroefektu zwanego rubber vectors, korzystając z aktualnych możliwości transformacji 3D. Przy zderzeniu przeszłości i przyszłości zobaczysz coś niedzisiejszego. Właściwie to już widziałeś na powyższym wideo, ale za chwilę będziesz mógł cieszyć się tym oglądając na żywo.

Jak skręcić kostkę (nie swoją)?

Idea efektu jest dosyć prosta. Polega na rysowaniu kostki w standardowy sposób, natomiast co linię pokazujemy klatkę animacji o jeden (lub więcej) późniejszą. Musimy w tym celu mieć X buforów na poszczególne klatki animacji. Pierwszą klatkę rysujemy na pierwszym buforze, podczas kolejnej kopiujemy go (i wszystkie za nim) o jeden niżej, a klatkę rysujemy znów na pierwszym. Pobierając kolejne linie z coraz to "późniejszych" buforów sprawiają one wrażenie "ciągnięcia się" za tymi powyżej.

Czytaj dalej

Podczerwień czy nadfiolet, czyli kolor najbliższy spośród możliwych.

Ooo, już nie będzie tak kolorowo jak przy poprzednich wpisach. Zapoznamy się z problemem wyszukiwania podobnego (najbliższego) koloru dla zadanego koloru, przy założeniu, że działamy w ograniczonej palecie (np. mamy do czynienia z paletą indeksowaną).

Być może nie miałeś w ogóle styczności z tym problemem i czytasz wpis tylko z czystej ciekawości (co mnie również bardzo cieszy), więc wyjaśnię Ci na początek czym jest paleta indeksowana.

Z tym rodzajem palety mamy do czynienia, kiedy przechowujemy tabelę zawierającą pod kolejnymi indeksami kolory użyte w pliku graficznym.
Nie ma więc tu sytuacji, że każdy element grafiki (załóżmy piksel) jest określony przez indywidualny kolor. Zakładając, że mamy do czynienia z trybem RGB (bez kanału alpha) i pikselem białym w prawym górnym rogu, jest on określony poprzez grupę bajtów 255, 255, 255, a kolor czarny na prawno od niego, określony jest jako 0,0,0. Jeśli trzeci piksel jest znów biały, to jego miejsce w pliku zajmuje grupa 255, 255, 255.
W przypadku grafiki opartej na palecie indeksowanej, kolor biały może być przechowywany pod indeksem 0 w tabeli palety, a kolor czarny pod indeksem 1 tejże tabeli. Kolejność przechowywania kolorów w tabeli palety nie ma żadnego znaczenia, tzn. kolory nie muszą być ustawione w kolejności jasności czy relatywnie do położenia na kole barw. Tu trzy piksele (biały, czarny, biały) grafiki, będą reprezentowane w pliku poprzez wartości 0, 1, 0, odpowiadając indeksom w tabeli palety, czyli de facto kolorom, ale nie w sposób bezpośredni.

Rezprezentacja w pamięci obrazu (3 piksele) opartego o paletę bezpośrednią:

255,0,0 0,255,0 255,255,0 255,0,0
Czytaj dalej