Užitečné matice

Afinní transformace

Posunutí o vektor (x,y,z)

1 0 0 0
0 1 0 0
0 0 1 0
x y z 1

Otočení o úhel α kolem osy x

1 0 0 0
0 cos α sin α 0
0 −sin α cos α 0
0 0 0 1

Otočení o úhel α kolem osy y

cos α 0 −sin α 0
0 1 0 0
sin α 0 cos α 0
0 0 0 1

Otočení o úhel α kolem osy z

cos α sin α 0 0
−sin α cos α 0 0
0 0 1 0
0 0 0 1

Otočení o úhel α kolem obecné osy

Tato transformace provede otočení o daný úhel α kolem libovolné osy r=(x,y,z), předpokládáme |r|=1.
Pro zkrácení zápisu si zavedeme s=sin α, c=cos α, d=1−c.
dx² + c dxy + zs dxz − ys 0
dxy − zs dy² + c dyz + xs 0
dxz + ys dyz − xs dz² + c 0
0 0 0 1

k-násobné zvětšení

Tato transformace změní měřítko na všech osách. Pokud použijeme záporný koeficient, provedeme také symetrii podle počátku.
k 0 0 0
0 k 0 0
0 0 k 0
0 0 0 1

Nerovnoměrné zvětšení (x,y,z)-krát

Tato transformace provede zvětšení, přičemž měřítko je na každé ose jiné. Pokud použijeme záporný koeficient, provede se i zrcadlení: Pokud je záporný jeden koeficient, jde o zrcadlení podle roviny, pokud jsou záporné dva koeficienty, jde o osovou symetrii, pokud jsou záporné všechny tři koeficienty, jde o symetrii podle počátku.
x 0 0 0
0 y 0 0
0 0 z 0
0 0 0 1

Zkosení

Tato transformace provede zkosení v osách x, y, pro jiné osy obdobně. Míra zkosení je dána konstantami S1, S2.
1 0 0 0
S1 1 0 0
S2 0 1 0
0 0 0 1

Promítání obecně

V následující části předpokládáme, že aplikací příslušné matice získáme vektor (x,y,0,w), kde (xw, yw) je poloha průmětu na průmětně. Používáme levotočivou souřadnou soustavu orientovanou tak, že osa x jde vpravo, osa y nahoru, osa z z kamery do scény.

Kolmé promítání

Kolmé promítání na jednu ze základních rovin souřadné soustavy (rovina xy, xz, nebo yz) prostě zahodí jednu ze souřadnic. Matice kolmého promítání na rovinu xy následuje, promítání na zbylé roviny lze případně snadno odvodit.
x 0 0 0
0 y 0 0
0 0 0 0
0 0 0 1

Axonometrie

Používá se v technické kresbě, zde ji uvádím spíše pro úplnost. Parametry jsou: MX, MY, MZ jsou měřítka na promítnutých osách (obvykle =1), α je odklon průmětu osy x od vodorovné osy, β je odklon průmětu osy z od vodorovné osy. Technická axonometrie používá hodnoty MX=½, MY=MZ=1, α=0, β=45°.
Mxcos α Mxsin α 0 0
0 −My 0 0
Mzcos β −Mzsin β 0 0
0 0 0 1

Perspektiva

Perspektivní promítání je asi nejpoužívanější metodou. Parametrem promítání je vzdálenost středu promítání od průmětny, označená písmenem D (čím menší hodnotu má D, tím výraznější je perspektivní zkreslení, pro D rostoucí k nekonečnu se blížíme kolmému promítání).
1 0 0 0
0 1 0 0
0 0 0 1D
0 0 0 1

Promítání pro 3D grafiku

V případě 3D grafiky je obvykle cílem promítání transformovat souřadnice původních bodů do bodů uvnitř jednoduchého kvádru, jehož obsah je posléze zobrazen. Cílem je tedy získat souřadnice (x,y,z,w) takové, že (xw, yw) je poloha průmětu na obrazovce, přičemž obě hodnoty jsou v rozmezí −1…+1 (bod (0,0) je střed průmětny), a zw je hodnota hloubky (použitelná např. v z-bufferu) v rozmezí 0…1. Pokud se průmět nějakého bodu ocitne mimo tyto hranice, znamená to, že daný bod je mimo zobrazovaný prostor a tento bod není zobrazen (je oříznut).
Vzhledem k tomu, že rozsah souřadnic průmětu je předen dán, musíme jako parametr zavést velikost oblasti původního prostoru, kterou chceme promítat. Proto se v následujících maticích setkáme s parametry: Vw, Vh označuje šířku, resp. výšku průmětny. n a f označuje vzdálenost k přední a zadní ořezové rovině (vzdálenost k průmětně a maximální vzdálenost od kamery). Pro zkrácení zápisu si také zavedeme substituce: w=2Vw, h=2Vh, Q=(f−n)−1

Kolmé promítání

w 0 0 0
0 h 0 0
0 0 Q 0
0 0 −Qn 1

Axonometrie

wMxcos α hMxsin α 0 0
0 −hMy 0 0
wMzcos β −hMzsin β Q 0
0 0 −Qn 1

Perspektiva

w 0 0 0
0 h 0 0
0 0 Qf 1
0 0 −Qnf 0

NAVRCHOLU.cz