Wykresy 4D

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