środa, 26 września 2012

Niemieckie znaki w vimie

Potrzebowałem ostatnio napisać kawałek tekstu po niemiecku, co postawiło mnie przed dwiema opcjami wpisywania znaków diakrytycznych tego języka:
  1. Zmiana układu klawiatury
  2. Zamiana odpowiednich literek w vim-ie
Pierwsza możliwość odpadła, bo zamiana Y na Z była zbyt bolesna, natomiast drugą udało mi się dość szybko zrealizować, pisząc skrypt umlaut.vim o takiej zawartości:

imap ą ä
imap Ą Ä
imap ś ß
imap ó ö
imap Ó Ö
imap ↓ ü
imap ↑ Ü

Teraz żeby zamienić polskie znaki na niemieckie wystarczy wydać polecenie 

:source umlaut.vim

Fraktale w CUDA




Jeden z najprzyjemniejszych dla oka projektów, jakie musiałem zrealizować na uczelnię. Tytuł mówi właściwie wszystko - to implementacja fraktali IFS w technologii CUDA

Bubbles


Rzadko zdarza się że PKP nie zapewnia pasażerom jakichś dodatkowych emocji, takich jak ścisk, zimno, gorąco czy też kilkugodzinne opóźnienia. Nie mniej jednak trzeba sobie jakoś z taką wyjątkową sytuacją radzić, więc ostatnio podczas bezproblemowej jazdy pociągiem Katowice - Wrocław (3h, 180 km) zacząłem pisać prostą grę w Javie.

Bubbles to klon haskellowego Boomslanga, który z kolei jest kopią czegoś jeszcze innego. Gra polega na kliknięciu w odpowiednim momencie którejś z kulek na ekranie, by zlikwidować określoną ilość innych odbijających się obiektów. Likwidacja polega na tym, że raz kliknięta kulka zatrzymuje się i puchnie, zarażając tym zachowaniem wszystkie które jej dotkną. Po powiększeniu się kulka maleje i znika - wtedy jest zlikwidowana.

Repozytorium na bitbucket


OpenCL Raytracer



"Raytracer działający na karcie graficznej" brzmi dość kosmicznie, ale jeśli ograniczy się zbiór renderowanych obiektów do takich, które posiadają prosty matematyczny opis to napisanie go nie jest już bardzo skomplikowane.

Mój raytracer jest w stanie wyrenderować zbiór zer wielomianu trzeciego stopnia, który mimo prostoty opisu może wyglądać bardzo ciekawie (patrz drugi obrazek, który jest "zerem" któregoś wielomianu Czebyszewa). Dużym plusem takiego opisu figury jest łatwość obliczania wektorów normalnych do jej powierzchni, co zdecydowanie upraszcza wyliczanie efektów świetlnych.

W czasie działania aplikacji można zmieniać jej parametry, co udało mi się zaimplementować w dość ciekawy sposób: zamiast odczytywać współczynniki wielomianu z pamięci w trakcie renderowania, zapisuję je na stałe w "kernelu" (kodzie działającym na karcie graficznej) i za każdym razem kompiluję go od nowa.

RTEdit


Prosty program do pisania postów na starszych forach używających BBCode. Jeśli kiedyś będę się bardzo nudził, to dodam obsługę Markdown.

Repo na bitbucket

GunSim



Kolejny projekt związany z równaniami różniczkowymi, tym razem napisany w Javie. Program symuluje strzelanie z armaty pod różnymi kontami i z różnymi prędkościami początkowymi.

Repozytorium na bitbucket

Springs 2D

Projekt na przedmiot o szumnej nazwie "Modelowanie zjawisk przyrodniczych", który miał pokazać różnicę w jakości symulacji układu mas i sprężyn różnymi metodami. Można wybrać albo metodę RK4 (wszystko ładnie działa). albo Newtona (kulki przyspieszają do nieskończoności). Program miał być szybki, więc zdecydowałem się użyć C++ i Qt.

Repozytorium z kodem na bitbucket