Macierze w grafice 3D

0

Witam :-)

Mam nadzieję że trafnie dobrałem forum do tematu. Ostatnio podjąłem się napisania programu (prostego bardzo) którego zadaniem byłoby wyświetlanie różnych brył w trzecim wymiarze, przy czym użytkownik miałby możliwość poruszania kamerą. Bryły jakieś też najprostsze, ewentualnie później rozwijać będę ów projekt. Co więcej podjąłem się napisać to bez używania bibliotek typu opengl, czy directx. Używam czystego sdl (chiałem od kuchni poznać mechanizmy takiej grafiki). Poznałem. Zacząłem bawić się macierzami, napisałem kawałek kodu do obsługi macierzy punktów, wszystko działa. Pojawia się problem, nie bardzo wiem jak to wszystko wyświetlić. Wiem że ma być jakaś macierz projekcji, jednak nie bardzo wiem jak się ją tworzy i jak z rzutowaniem punktów na płaszczyznę 2D, a niestety google nie zwróciły nic satysfakcjonującego. Obecnie mam, jakiś zbiór punktów, zadaję macierze translacji, obrotu i skalowania, otrzymując macierz świata. To z kolei przez macierz kamery przemnażam (macierz która zaiwera dane o 3 wektorach kamery) i z tego co się orientuję teraz wchodzi macierz projekcji i tu właśnie utknąłem. Gdyby ktoś mógł jakąś poradę, linka podrzucić będę wdzięczny :-)

0

na msdn wszystko jest, interesuje cie biblioteka D3DX (nie D3D), tam masz funkcje od tworzenia i manipulowania macierzy i innych struktur matematycznych przy grafice 3D, przy poszególnych funkcjach masz opisane jak tworzona masz daną macierz.
http://msdn.microsoft.com/en-us/library/bb172965.aspx

interesuje cię macierz projekcji:
D3DXMatrixPerspectiveFovLH - macierz projekcji perspektywiczna układu lewoskrętnego http://msdn.microsoft.com/en-us/library/bb205350.aspx
D3DXMatrixPerspectiveFovRH - prawo skrętnego

D3DXMatrixOrthoLH, D3DXMatrixOrthoRH - tworzy macierze rzutowania prostokątnego (chyba, jeśli orto to prostokątne xd)

0

Direct3D

Wlasciwie korzystanie z DirectX calkowicie zwalnia Cie z potrzeby wypelnaniania macierzy samodzielnie. Przejrzyj kod w 4 lekcji kursu.

0
Apus_ napisał(a)

Co więcej podjąłem się napisać to bez używania bibliotek typu opengl, czy directx.

0
othello napisał(a)
Apus_ napisał(a)

Co więcej podjąłem się napisać to bez używania bibliotek typu opengl, czy directx.

no ale o co ci chodzi?
może chyba posiłkować się gotowym kodem z bibliotek dx'a do przekształcania macierzy :|
poza tym w manualu dx'a ma wszystkie potrzebne wzory, wszystko ładnie wytłumaczone nie tylko w odniesieniu do directxa
na pytania już zadane znajdziesz odpowiedź na pewno

0

Witam,
Szukam i szukam, ale chyba ten wątek daje szanse na pomoc w mojej sprawie.

Zanalazłem coś takiego na msdnie w dokumentacji DirecX: ID3DXPRTCompBuffer::ExtractPCA. Nigdy nie miałem doczynienia z DirecX. Tworzę projekty w .Net - obecnie pracują nad sporym - system obliczeniowy/analityczny - metody eksploracyjne/statystyka.
W zasadzie nie mam większych problemów, ale w przeciągu miesiąca - dwóch będę musiał zaimplementować PCA (Principal Componen Analysis - w wersji podstawowej bez rotacji). Szukałem i znalazłem właśnie, obok spraw związanych z wektorami w DirecX, kwiatek z PCA - nie powiem sam pomysł wydaje sie ciekawy.

Jak to ugryźć? szukałem w msdnie, ale nie ma tam żadnych wskazówek, google mnie nie polubił a na innych forach raczej nikt sie nie zajmuje taką sprawą.
Idzie mi wpierw o to, czy w ogóle w DirecX można użyć do obliczeń tego rodzaju (mam dane, przetwarzam i dostaję wynik - choć kawałek kodu w .net c#, vb - tak abym wiedział od czego zacząc...) a jeżeli tak to będę dalej walczył.

Jak ktoś miałby jakieś wskazówki byłbym wdzięczny... -
może jakiś namiar na rozsądny do implementacji algorytm PCA lub choćby wartości i wektorów własnych z warunkiem ortogonalności.

1 użytkowników online, w tym zalogowanych: 0, gości: 1