Niniejsza strona w skromny sposób prezentuje część mojego dorobku w programowaniu. Wszystkie programy zostały napisane w środowisku C++ Builder 6. Moje pierwsze zetknięcie się z programowaniem nastąpiło, gdy w domu pojawił się pierwszy komputer - Amiga 500 (1 MB RAM). Chodziłem jeszcze do podstawówki, kiedy zacząłem jako nastolatek programować w środowisku AMOS Professional (składnia identyczna z językiem Basic). O języku C/C++ czytałem wtedy jedynie w czasopismach. Mimo, że była to tylko Amiga, właśnie wtedy nauczyłem się trudnej sztuki programowania strukturalnego. Koledzy marnowali czas na gry i dyskusje kto ma szybszego PeCeta. Ja pisałem co popadnie na mojej Amidze. Kiedy pojawił się w domu PC (Celeron 300A, 32MB RAM, GF2/Voodoo2) a Amiga poszła w odstawkę przygoda z programowaniem niestety skończyła się. Czułem wtedy ogromny niedosyt - czegoś mi brakowało. Gry szybko mi się nudziły, pragnąłem coś więcej - coś tworzyć. Próbowałem swoje pomysły przelać na Quick Basic'a ale niestety jego możliwości nie dorastały do sprzętu jakim dysponowałem. Zawsze lubowałem się w grafice a tryby graficzne dostępne w QuickBasic'u oraz jego wydajność były na gorszym poziomie niż wspomniana wcześniej Amiga. Na pomoc przyszły więc zajęcia w technikum, gdzie pierwszy raz na oczy ujrzałem jak można szybko i wygodnie stworzyć aplikację obiektową i okienkową pod Windows'a - i tu zaczęła się cała obecna zabawa z Builderem i programowaniem obiektowym.
Mini gierka z wykorzystaniem biblioteki OpenGL - moja praca zaliczeniowa na studiach magisterskich na kierunku informatyka w Politechnice Poznańskiej.
Program do montażu dwóch filmów. Nakłada jeden film na drugi.
|
|
Emulator asemblera mikroprocesora Intel 8085. Program ten posłużył mi jako obrona dyplomu i pomógł zdobyć tytuł "Technik Informatyk" w 2004 rok. Szczegóły w załączonym pliku PDF. Program służy obecnie uczniom Technikum Łączności na pracowni mikroprocesorowej w Zespole Szkół Łączności w Poznaniu.
Prosty engine (silnik) 3D własnej produkcji. Nie wykorzystałem żadnych gotowych bibliotek (OpenGL czy Direct3D).
Cała scena obliczana i oświetlana jest wg własnego pomysłu. Korzystałem tylko z czystego C++Buildera6. Engine nie daje skomplikowanych efektów typu: wiele świateł, cienie, tekstury. Może go kiedyś wykorzystam do prostych wizualizacji. Obecnie prace nad nim zostały przerwane, gdyż poznałem i w miarę opanowałem bibliotekę OpenGL. Ciekawostką programu jest tryb stereoskopowy. Zaopatrz się w specjalne okularki ze szkiełkami czerwonym i niebieskim (względnie czerwonym i zielonym) a znajdziesz się oko w oko z trójwymiarową sceną wychodzącą przed ekran Twojego monitora. Zamieściłem dodatkowo pliki z definicjami obiektów i scen, które są gotowe do otworzenia w programie. Struktura plików jest bardzo prosta - można ją podejrzeć zwykłym notatnikiem. Struktura plików obiektów (rozszerzenie *.obiekt3d): w pierwszej linii ilość punktów; w kolejnych: współrzędne x,y,z kolejnych punktów w przestrzeni; ilość ścian - czworokątów; numery czterech punktów tworzących ścianę oraz jej kolor w kodzie szesnastkowym (RRGGBB). Struktura plików scen (rozszerzenie *.scena3d), struktura kolejnych linii pliku: nazwa pliku z obiektem bez rozszerzenia *.obiekt3d; kolor dla całego obiektu (RRGGBB) lub liczba 1 dla zachowania oryginalnych kolorów ścian, zdefiniowanych w obiekcie; współrzędne x,y,z obiektu w przestrzeni; skala sx,sy,sz oraz kąty nachylenia a,b,c (wszystkie dane w plikach są oddzielane znakiem spacji).
Prosty kalkulator rysujący wykresy dowolnych funkcji matematycznych typu y=f(x).
Umożliwia narysowanie kilku wykresów jednocześnie (każdy w innym kolorze). Pozwala również na proste obliczenia matematyczne typu 2+2*2=6 (nie 8) a także bardziej skomplikowane: f(x)=((x+2*sinx)-2V(abs(x)^2+3))^3
Program ma wbudowane następujące funkcje matematyczne: +, -, *, /, ^ (potęgowanie, np. 2^5=32), V (pierwiastkowanie, np. drugiego stopnia: 2V9=3), mod (reszta z dzielenia, np. 10mod3=1), log (logarytm, np. o podstawie 2: 2log16=4), gaus (zmienna losowa Gaussa, np. o średniej 4 z rozrzutem 2: 4gaus2=??), los (liczba losowa z przedziału, np. od 2 do 5: 2los5=<2..5>), hyp lub odl (długość wektora o współrzędnych, np. 3,4: 3hyp4=5), min (liczba mniejsza z podanych, np. 3min6=3), maks (liczba większa z podanych, np. 3min6=6), abs (wartość bezwzględna, np. abs(-4)=4), acos (arcus cosinus), acot lub actg (arcus cotangens), asin (arcus sinus), atan lub atg (arcus tangens), cos (cosinus), cot lub ctg (cotangens), hacos, hacot, hactg, hasin, hatan, hatg, hcos, hcot, hctg, hsin, htan, htg (jak wcześniejsze ale funkcja hyperboliczna), int (część całkowita, np. int4.3=4), ln (logarytm naturalny, np. ln(x)), nad/pod (zaokrąglenie do liczby całkowitej w górę/dół, np. nad(3.3)=4, pod(3.3)=3), sign lub znak (znak liczby: -1 ujemna, 0 zero, 1 dodatnia), sin (sinus), sqr (pierwiastek drugiego stopnia, np. sqr(9)=3), tan lub tg (tangens).