Technologie: Java
Aktualnym "produktem" projektu jest program "Fractal" - cyfrowa maszyna do zamiany kodu Javy na grafikę :) Nawiązanie do obrazów samopodobnych w nazwie, tak projektu jaki i programu, jest powiązane bardziej z ideą, która stoi za całym przedsięwzięciem, niż z implementacją - sama "maszyna" jest dość uniwersalna i nie ogranicza się tylko do tego konkretnego typu grafik (to najprawdopodobniej zaowocuje kilkoma zmianami w obszarze "nazewnictwa" w przyszłości).
Główne elementy projektu to:
- Maszyna - program Fractal
- Dane wejściowe, czyli "kod grafiki" - kod źródłowy w Javie klasy dziedziczącej po klasie "Fractal", np.: f06.java
W wyniku "przetworzenia" danych wejściowych przez "maszynę" otrzymujemy wynik w postaci pliku png, dla przykładowych danych wejściowych (pliku f06.java) będzie to grafika zaprezentowana po prawej stronie - czyli "paprotka".
Dlaczego właśnie tak
Głównym celem było znalezienie sposobu na łatwe i szybkie "tworzenie" plików zawierających kod samych grafik (fraktali), oraz dostarczenie "maszyny" przetwarzającej tak przygotowany kod w grafikę. Rozważałem wykorzystanie narzędzi typu Matlab czy Octave, ale ostatecznie wygrała Java ze względu na swoją uniwersalność i wszechstronność :)
Implikacje - wymagane JDK!
Ponieważ program kompiluje przekazany w formie parametru kod w trakcie wykonania, dlatego do jego działanie niestety nie wystarczy podstawowe środowisko uruchomieniowe Javy - JRE, wymagany jest kompilator, który dostarczany jest w pakiecie JDK, ja używam pakietu: OpenJDK Development Kit w wersji 7. Oznacza to, że jeżeli nie jesteś programistą Javy i nie używasz kompilatora tego języka na co dzień (czy w ogóle ;)) to najprawdopodobniej masz zainstalowane środowisko JRE (o ile masz zainstalowaną Javę), i będziesz musiał dokonać instalacji JDK przez uruchomieniem tego programu (jeżeli posiadasz już skompilowaną jego wersję, jeżeli kompilujesz program ze źródeł to i tak będziesz potrzebował JDK :)).
Pierwsze kroki
Program Fractal aktualnie został wyposażony w dwa interfejsy:
- interfejs cmd - polecania dla programu przekazywane są za pomocą opcji linii poleceń, np.:
./fractal.sh -d fractals/f06.java -out f06.png
powyższe polecenie spowoduje wygenerowanie grafiki f06.png przy wykorzystaniu wskazanego pliku (fractals/f06.java) z danymi wejściowymi.
./fractal.sh -h
lista dostępnych z linii poleceń opcji programu.
- interfejs graficzny można uruchomić poniższym poleceniem:
./fractal-gui.sh
Series
Series to "mechanizm" pozwalający na tworzenie serii grafik (plików graficznych) wg zadanych parametrów - np. przy zmieniającej się wartości skali dla której kolejne grafiki są przeliczane / tworzone. Pozwala to na stworzenie "klatek" filmu, które następnie można połączyć w sam film, np.: https://www.youtube.com/watch?v=cxWY01omX8Y, trochę dokładniejszy opis (dotyczący kodu w wersji 0.1, ale w większości jak najbardziej aktualny), można znaleźć tutaj: http://luka.sh/node/64.
Linki
- Repozytorium: github
- Kody grafik: github
- Archiwalna strona projektu
- Kod w wersji 0.1 na javaforge.com: javaforge
- Nowości ze świata projektu: http://luka.sh/taxonomy/term/13