1 | 0 | 0 | 0 |
0 | 1 | 0 | 0 |
0 | 0 | 1 | 0 |
x | y | z | 1 |
1 | 0 | 0 | 0 |
0 | cos α | sin α | 0 |
0 | −sin α | cos α | 0 |
0 | 0 | 0 | 1 |
cos α | 0 | −sin α | 0 |
0 | 1 | 0 | 0 |
sin α | 0 | cos α | 0 |
0 | 0 | 0 | 1 |
cos α | sin α | 0 | 0 |
−sin α | cos α | 0 | 0 |
0 | 0 | 1 | 0 |
0 | 0 | 0 | 1 |
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 |
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 |
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 |
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 |
V následující části předpokládáme, že aplikací příslušné matice získáme vektor (x,y,0,w), kde (x⁄w, y⁄w) 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í 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 |
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 |
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 | 1⁄D |
0 | 0 | 0 | 1 |
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
(x⁄w, y⁄w) 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 z⁄w
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=2⁄Vw,
h=2⁄Vh,
Q=(f−n)−1
w | 0 | 0 | 0 |
0 | h | 0 | 0 |
0 | 0 | Q | 0 |
0 | 0 | −Qn | 1 |
wMxcos α | hMxsin α | 0 | 0 |
0 | −hMy | 0 | 0 |
wMzcos β | −hMzsin β | Q | 0 |
0 | 0 | −Qn | 1 |
w | 0 | 0 | 0 |
0 | h | 0 | 0 |
0 | 0 | Qf | 1 |
0 | 0 | −Qnf | 0 |