Współrzędne jednorodne

Współrzędne jednorodne – sposób reprezentacji punktów n {\displaystyle n} -wymiarowej przestrzeni rzutowej za pomocą układu n + 1 {\displaystyle n+1} współrzędnych. Pojęcie to opiera się na konstrukcji przestrzeni rzutowej, w której n {\displaystyle n} -wymiarową przestrzeń euklidesową E n {\displaystyle E^{n}} 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 ( x 1 , x 2 , x n ) , {\displaystyle (x_{1},x_{2},\dots x_{n}),} to jego współrzędne jednorodne mają postać ( x 1 , x 2 , x n , 1 ) . {\displaystyle (x_{1},x_{2},\dots x_{n},1).} Np. punkt na płaszczyźnie o współrzędnych kartezjańskich ( x , y ) {\displaystyle (x,y)} ma zarazem współrzędne jednorodne postaci ( x , y , 1 ) ; {\displaystyle (x,y,1);} podobnie punkt w przestrzeni trójwymiarowej o współrzędnych kartezjańskich ( x , y , z ) {\displaystyle (x,y,z)} ma współrzędne jednorodne ( x , y , z , 1 ) . {\displaystyle (x,y,z,1).}

Odwrotnie – punkt właściwy o współrzędnych jednorodnych ( x 1 , x 2 , x n , z ) {\displaystyle (x_{1},x_{2},\dots x_{n},z)} i z 0 {\displaystyle z\neq 0} ma współrzędne kartezjańskie postaci ( x 1 z , x 2 z , , x n z ) . {\displaystyle \left({\frac {x_{1}}{z}},{\frac {x_{2}}{z}},\dots ,{\frac {x_{n}}{z}}\right).} Jeśli natomiast z = 0 , {\displaystyle 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 ) . {\displaystyle (0,0,\dots 0,0).}

Dwa układy ( x 1 , x 2 , x n + 1 ) {\displaystyle (x_{1},x_{2},\dots x_{n+1})} i ( y 1 , y 2 , y n + 1 ) {\displaystyle (y_{1},y_{2},\dots y_{n+1})} są współrzędnymi jednorodnymi tego samego punktu, gdy jeden z tych układów jest wielokrotnością drugiego, tj. x i = k y i {\displaystyle x_{i}=k\cdot y_{i}} dla pewnego k R , k 0. {\displaystyle k\in \mathbb {R} ,k\neq 0.} 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 {\displaystyle 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):

[ x y ] = A X + T = [ a 11 a 12 a 21 a 22 ] [ x y ] + [ t x t y ] = [ a 11 x + a 12 y + t x a 21 x + a 22 y + t y ] , {\displaystyle {\begin{bmatrix}x'\\y'\end{bmatrix}}=A\cdot X+T={\begin{bmatrix}a_{11}&a_{12}\\a_{21}&a_{22}\end{bmatrix}}\cdot {\begin{bmatrix}x\\y\end{bmatrix}}+{\begin{bmatrix}t_{x}\\t_{y}\end{bmatrix}}={\begin{bmatrix}a_{11}x+a_{12}y+t_{x}\\a_{21}x+a_{22}y+t_{y}\end{bmatrix}},}

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

[ x y W ] = A X = [ a 11 a 12 t x a 21 a 22 t y 0 0 1 ] [ x y W ] = [ a 11 x + a 12 y + t x W a 21 x + a 22 y + t y W W ] . {\displaystyle {\begin{bmatrix}x'\\y'\\W'\end{bmatrix}}=A\cdot X={\begin{bmatrix}a_{11}&a_{12}&t_{x}\\a_{21}&a_{22}&t_{y}\\0&0&1\end{bmatrix}}\cdot {\begin{bmatrix}x\\y\\W\end{bmatrix}}={\begin{bmatrix}a_{11}x+a_{12}y+t_{x}W\\a_{21}x+a_{22}y+t_{y}W\\W\end{bmatrix}}.}

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 = x M 1 , x = x M 2 , , x ( n ) = x ( n 1 ) M n , {\displaystyle x'=x\cdot M_{1},x''=x'\cdot M_{2},\dots ,x^{(n)}=x^{(n-1)}\cdot M_{n},} można najpierw wykonać mnożenie odpowiednich macierzy M = M 1 M 2 M n , {\displaystyle M=M_{1}\cdot M_{2}\cdot \ldots \cdot M_{n},} później zaś używać wynikowej macierzy x = x M . {\displaystyle x'=x\cdot M.} Czyli zamiast wykonywać n {\displaystyle n} mnożeń punktu przez macierze, to samo uzyskuje się jednym mnożeniem punktu przez macierz, dzięki uprzedniemu wykonaniu n 1 {\displaystyle n-1} mnożeń macierzy.

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

[ x y z W ] = M X = [ 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 d 0 ] [ x y z W ] = [ x y z z d ] . {\displaystyle {\begin{bmatrix}x'\\y'\\z'\\W'\end{bmatrix}}=M\cdot X={\begin{bmatrix}1&0&0&0\\0&1&0&0\\0&0&1&0\\0&0&{\frac {1}{d}}&0\end{bmatrix}}\cdot {\begin{bmatrix}x\\y\\z\\W\end{bmatrix}}={\begin{bmatrix}x\\y\\z\\{\frac {z}{d}}\end{bmatrix}}.}

Przy przejściu na współrzędne kartezjańskie otrzymuje się: [ x z / d , y z / d , d ] T . {\displaystyle \left[{\frac {x}{z/d}},{\frac {y}{z/d}},d\right]^{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.

Encyklopedie internetowe (układ współrzędnych):
  • Britannica: topic/homogeneous-coordinates