Kawałek Kodu

Programistyczne porady na luzie

Robótki ręczne, czyli linia w SVG jak z kreskówki.

Brzdąkałeś kiedyś na linijce opartej o krawędź biurka? Dziś będziesz mieć okazję do efektów audio dodać efekty wideo oparte na podobnej zasadzie. Też będziemy brzdąkać na czymś elastycznym, podobnym do linijki. Być może obiło Ci się o uszy hasło "krzywa Béziera". Nie będziemy wnikać w jej podstawy matematyczne, lecz wykorzystamy wprost jej właściwości. Ta krzywa (inaczej spline) przypomina właśnie naszą linijkę, albo jeszcze lepiej listewkę ratanu przeplataną przez gałązki wikliny. Końcówki listewki mocujemy na stałe, natomiast gałązki wikliny powodują odkształcenie elastycznej listewki (w krzywej te wszystkie punkty nazywa się punktami kontrolnymi).

Przygotuj materiały!

Czytaj dalej

Każdy kij ma trzy końce, czyli fraktalne drzewo.

Jesień jest idealną porą na ogrodowe porządki. Przesadzanie i sadzenie. Będziemy sadzić, ale aby nie przesadzić. Nie przesadzić z rekurencją, bo ta będzie nam dziś towarzyszyć. Tym razem o fraktalu bezimiennym, choć w naturze często podpisywanym na korze inicjałami imion i serduszkiem. Bezimiennym, ale równie atrakcyjnym, a być może nawet bardziej niż ostatnio opisywany fraktal Pana Sierpińskiego.

Zróbmy dołek w wyjaśnieniach.

Czytaj dalej

PrzyLUTuj mu! Czyli przetwarzanie graficzne obrazów.

Wbrew pozorom dzisiejszy wpis nie będzie uczył technik samoobrony, nie będzie też kursem lutowania online. Pokażę Ci jak od środka działają popularne funkcje dostępne w programach graficznych, jak negatyw, rozjaśnianie czy posteryzacja. Opierają się na jednopunktowych operacjach graficznych. Jednopunktowych, bo wpływ na wartość wynikowego punktu obrazu, ma wartość tylko jednego punktu obrazu źródłowego.
Operację taką można opisać równaniem: w(x,y)=F(z(x,y)), gdzie x, y, to współrzędne obrazu, z obraz źródłowy, a w obraz wynikowy. F to operacja jednopunktowa.

Czytaj dalej

The Fast & The Canvas, czyli szybki dostęp do pikseli na Canvas.

Pracując z elementem CANVAS spotykam się często z dwoma zagadnieniami: pobrania koloru piksela i kreślenia piksela. Jeśli chodzi stawianie punktu, to zazwyczaj spotykamy się z następującą metodą:

var ctx = document.querySelector('canvas').getContext('2d');
ctx.fillStyle = 'rgba(255, 0, 0, 1)';
ctx.fillRect(100, 100, 1, 1);

Z zmiennej ctx mamy obiekt RenderingContext pozwalający na dostęp przez dwie współrzędne (stąd parametr '2d'). Punkt stawiamy poprzez nakreślenie wypełnionego prostokąta o wymiarach 1x1 (parametr 3 i 4) na współrzędnych 100,100 (parametr 1 i 2). Wcześniej ustawiliśmy kolor czerwony dla wypełnienia. Domyślny kolor wypełnienia to czarny, a domyślny kolor tła CANVAS to biały. I ta metoda oczywiście się sprawdza, ale niekoniecznie przy dynamicznych efektach na CANVAS, kiedy potrzebujemy postawić tych punktów tysiące lub dziesiątki tysięcy.

Jak być szybszym?

Czytaj dalej

Podróż do wnętrza kineskopu, czyli emulacja RGB.

Jeśli jako dziecko nie poznałeś smaku (a właściwie wyglądu) nowego kolorowego telewizora w Twoim domu, to spróbuję Ci go dziś przybliżyć. Przyblizyć teoretycznie i jeszcze bardziej wizualnie.

Jak zapewne wiesz, kolor na ekranie urządzenia, które teraz używasz powstaje z połączenia trzech barw: czerwonej, zielonej i niebieskiej (RGB). W zależności od natężenia każdej ze składowej ich połączenie tworzy inny kolor. Tyle, że ten kolor jest złudny, bo tworzą go trzy elementy (plamki) reprezentujące każdą ze składowych. Plamki są na tyle blisko, że ich nie zauważasz. Kiedy świecą mocno wszystkie trzy, Ty widzisz jeden punkt w kolorze białym. Skoro trzy plamki tworzą piksel, to każdy piksel zmieńmy w plamkę, a ich potrójna grupa utworzy nasz nowy, duży piksel. Każdy z dotychczasowych pikseli będzie reprezentował inną składową. Pozostaje tylko wybrać w jakim układzie będą reprezentować duży piksel.

Przychodzą mi do głowy trzy układy.

Czytaj dalej

Typowo męska logika, czyli fraktal Sierpińskiego.

Może już widziałeś ten piękny graficzny wzór, choć nie wiesz, że miałeś do czynienia z fraktalem. Fraktal to obiekt nieskończenie powtarzalny, albo samopodobny. Oznacza to, że w jego fragmencie jest zawarta całość. Mamy do czynienia z nimi nie tylko w formie komputerowej grafiki, ale również w otaczającym świecie (choć nie są to nieskończenie powtarzalne konstrukcje). Fraktalem jest kalafior czy brokuł, którego kawałek wyglądem przypomina całość. Banknoty niestety nie są fraktalami. Drzewo jest fraktalem. Wygląda na to, że cały wszechświat jest również fraktalem, którego odwzorowanie możemy znaleźć w żywej komórce.

Z fraktalami nieodłącznie wiąże się rekurencja. Dzięki niej powstaje trójkąt Sierpińskiego, kiedy to w duży trójkąt wrysowujemy odwórcony mniejszy, a pozostałe trzy miejsca są zapełniane w ten sam sposób jak duży. I tak dopóki starczy sił albo czasu.
Ale nie zawsze się wiąże. Możemy skorzystać z innej cechy liczb jaką jest możliwość ich reprezentacji binarnej i operacji logicznych na nich. W ten sposób możemy stworzyć fraktal Sierpińskiego oparty na trójkącie prostokątnym.

Czytaj dalej