Aplikacja do wykreślania (renderowania) i animowania wykresów podawanych przez
użytkownika funkcji 1-, 2- i 3-zmiennych
(w przestrzeniach odpowiednio 2D, 3D i 4D (animacja-wykres 3D zmieniany w czasie)).
Program daje możliwość INTERAKTYWNEGO oglądania trójwymiarowych
wykresów ze wszystkich stron (możliwość poruszania się w przestrzeni 3D).
To co wyróżnia ten program od podobnych możliwości zawartych w programach np.:
Winplot czy Mathematica, to SZYBKA ANIMACJA
prezentowanych wykresów, tzn. manewrując np. myszką można dowolnie poruszać
się w przestrzeni aby oglądać dany wykres lub animację ze wszystkich stron.
Ponadto program może generować dowolnie DUŻĄ PRZESTRZEŃ wykresu
wykraczającą poza wielkość ekranu monitora a nie tylko mały skrawek jak ma to
miejsce w większości programów matematycznych.
Poza tym zastosowane są różne techniki renderowania jak np.: uwzględnienie padającego
światła. Oczywiście zastosowany jest widok perspektywiczny.
Wszystko po to aby wykres wyglądał REALISTYCZNIE.
Aplikacja powstała w oparciu o technologię DirectX (w wersji 7) czyli biblioteki
Microsoftu: DirectDraw i Direct3D
(wykorzystywane do programowania programów graficznych wymagających wysokiej
wydajności, np. gier 3D, symulatorów).
Aplikacja może służyć jako narzędzie matematyczne, edukacyjne, inżynieryjne dla projektantów, grafików, modelowania grafiki (proceduralne modelowanie/generowanie obiektów), fizyków modelujących zjawiska fizyczne;
Program ma duże walory edukacyjne - łatwość obsługi - cała inteligencja do
pokazania wykresu zawarta w programie.
Pełna wygoda użytkowania a jednocześnie szybkość - nie rwanie się animacji.
* O parserze:
Aplikacja zawiera implementację przetwarzania wyrażeń arytmetycznych
- parser, który umożliwia pobieranie dowolnie zdefiniowanych przez użytkownika
funkcji.
Sporą trudnością jest napisanie uniwersalnego, łatwego w użyciu i szybkiego
parsera dla pobierania funkcji o dowolnej ilości zmiennych!
Parser, który napisałem całkowicie w oparciu o moje pomysły i algorytmy, jest
szybki i inteligentny:
-zawiera sprawdzanie dziedzin funkcji przy obliczaniu wartości wyrażenia
-pozwala na własne definiowanie nazw zmiennych
-stosuje swoisty kompilator wyrażeń - tak że nie wymaga każdorazowego tłumaczenia
tekstu (przez to jest szybki).
Cała aplikacja jest napisana w czystym WinAPI (tzn. bez korzystania żadnych
bibliotek MFC czy OWL).
Zrobiona jest tak aby była jak najbardziej optymalna wewnętrznie, tzn. robiła
jak najmniej zbędnych rzeczy (np. zwalnianie i zaraz ponowne alokowanie pamięci
- fragmentacja).
Także starałem się aby kod był jak najchudszy - to zresztą widać: 42 KB (bez
parsera) i tyle funkcjonalności!
* UWAGI:
Przy dużej ilości wierzchołków ewentualne spowolnienia w animacji nie są spowodowane
działaniem mojego parsera, ale budowaniem sceny (wewnętrzna implementacja DirectX).
Parser jest naprawdę szybki.
Aplikacja nie blokuje innych programów uruchomionych w tym samym czasie w systemie,
tzn. oparta jest na tradycyjnej pętli komunikatów.
***Co chcę dodać***
-możliwość obracania każdym z wykresów niezależnie od reszty
(-przekrój poprzeczny
-płaszczyzny obcinające
-bardziej realistyczna grafika: cienie, wiele świateł, materiały, tekstury,
kolory
-zmiana kąta patrzenia - pola widzenia (FOV) (efekt rybiego oka lub brak perspektywy)
-obliczanie i prezentowanie płaszczyzn stycznych do wskazanego myszką punktu
na wykresie
-zmiana świateł: punktowe, reflektorowe, równoległe; zmiana orientacji, natężenia,
koloru światła
-dodatkowo osobny program do interaktywnego rysowania wykresów 2D
-nowe funkcje w parserze
-ładniejszy interfejs - choć jest to trudne w czystym API
-być może przeniesienie do MFC - niestety pisanie w API jest dosyć żmudne (zresztą
dopiero go się uczę)
-eksport danych do różnych formatów
-przepisanie silnika na DirectX8
Proszę o testowanie, komentarze, pytania, sugestie. Może ktoś napisał coś podobnego (np. w OpenGl - interesuje mnie porównanie wydajności - szybkości) i chciałby się podzielić uwagami to bardzo proszę.
* Początek pisania programu: 26d-8m-2002
Data:3d-12m-2002
Autor: Artur Czekalski; email ARTUR@epokaY.net
Powrót do strony głównej www.epokaY.net/artur/programowane.php