Współrzędne jednorodne

Z testwiki
Przejdź do nawigacji Przejdź do wyszukiwania

Współrzędne jednorodne – sposób reprezentacji punktów n-wymiarowej przestrzeni rzutowej za pomocą układu n+1 współrzędnych. Pojęcie to opiera się na konstrukcji przestrzeni rzutowej, w której n-wymiarową przestrzeń euklidesową En uzupełnia się o kierunki zwane punktami w nieskończoności lub punktami niewłaściwymi.

Jeśli punkt właściwy ma współrzędne kartezjańskie (x1,x2,xn), to jego współrzędne jednorodne mają postać (x1,x2,xn,1). Np. punkt na płaszczyźnie o współrzędnych kartezjańskich (x,y) ma zarazem współrzędne jednorodne postaci (x,y,1); podobnie punkt w przestrzeni trójwymiarowej o współrzędnych kartezjańskich (x,y,z) ma współrzędne jednorodne (x,y,z,1).

Odwrotnie – punkt właściwy o współrzędnych jednorodnych (x1,x2,xn,z) i z0 ma współrzędne kartezjańskie postaci (x1z,x2z,,xnz). Jeśli natomiast z=0, to jest to punkt w nieskończoności i nie istnieją dla niego współrzędne kartezjańskie. Żaden punkt nie może mieć współrzędnych jednorodnych (0,0,0,0).

Dwa układy (x1,x2,xn+1) i (y1,y2,yn+1) są współrzędnymi jednorodnymi tego samego punktu, gdy jeden z tych układów jest wielokrotnością drugiego, tj. xi=kyi dla pewnego k,k0. Inaczej mówiąc, każdy punkt (właściwy lub niewłaściwy) można reprezentować na nieskończenie wiele sposobów we współrzędnych jednorodnych i wszystkie te reprezentacje są do siebie proporcjonalne.

Współrzędne jednorodne zostały wprowadzone do geometrii w 1827 przez Augusta Möbiusa w pracy Der barycentrische Calcul. W 1946 E. Maxwell użył ich do rozwiązywania problemów związanych z rzutowaniem. Są narzędziem do stosowania metod analitycznych w przestrzeniach rzutowych. Ze względu na kilka zalet znalazły też zastosowanie w grafice komputerowej.

Zastosowania w grafice komputerowej

Przekształcenia macierzowe

W roku 1965 L. Roberts zauważył, że współrzędne jednorodne znakomicie nadają się do macierzowego opisu przekształceń w przestrzeniach n-wymiarowych.

Podstawowymi przekształceniami stosowanymi w grafice są: skalowanie, obrót, pochylenie i translacja. Zapis macierzowy wszystkich tych przekształceń przedstawia się następująco (przykład dla dwóch wymiarów):

[xy]=AX+T=[a11a12a21a22][xy]+[txty]=[a11x+a12y+txa21x+a22y+ty],

gdzie macierz A zawiera skumulowane informacje o obrocie, skalowaniu i pochyleniu, natomiast wektor T przesunięcie. Stosując współrzędne jednorodne, można za pomocą macierzy 3x3 przedstawić wszystkie przekształcenia:

[xyW]=AX=[a11a12txa21a22ty001][xyW]=[a11x+a12y+txWa21x+a22y+tyWW].

Macierz będąca iloczynem dowolnej liczby macierzy reprezentujących różne przekształcenia zawiera złożenie tych przekształceń. Dzięki temu zamiast osobno wykonywać kolejne przekształcenia x=xM1,x=xM2,,x(n)=x(n1)Mn, można najpierw wykonać mnożenie odpowiednich macierzy M=M1M2Mn, później zaś używać wynikowej macierzy x=xM. Czyli zamiast wykonywać n mnożeń punktu przez macierze, to samo uzyskuje się jednym mnożeniem punktu przez macierz, dzięki uprzedniemu wykonaniu n1 mnożeń macierzy.

Za pomocą macierzy przekształceń we współrzędnych jednorodnych można także zwięźle opisać rzut perspektywiczny:

[xyzW]=MX=[100001000010001d0][xyzW]=[xyzzd].

Przy przejściu na współrzędne kartezjańskie otrzymuje się: [xz/d,yz/d,d]T.

Obcinanie

W grafice trójwymiarowej istotnym elementem wizualizacji jest obcinanie sceny trójwymiarowej do tzw. ostrosłupa widzenia. Jest to ostrosłup (dokładnie: ostrosłup ścięty) zdefiniowany przez wirtualną kamerę, w obrębie którego znajdują się obiekty widoczne w danym rzucie. Jednak obcinanie względem ostrosłupa widzenia jest dość skomplikowane obliczeniowo, dlatego można przekształcić ostrosłup widzenia w sześcian. Obcinanie względem sześcianu jest bardzo efektywne, jednak aby po takim przekształceniu zapewnić poprawność wyników, obcinanie musi zostać wykonane we współrzędnych jednorodnych. Jest to powszechnie stosowane podejście w rozwiązaniach sprzętowych.

Także obcinanie wymiernych krzywych B-sklejanych we współrzędnych trójwymiarowych może nie dać prawidłowych wyników, natomiast obcinanie we współrzędnych jednorodnych gwarantuje poprawność wyniku.

Szablon:Kontrola autorytatywna