Transformacja 3D
Obrót
Obrót 3D to nie to samo, co obrót 2D. W obrocie 3D musimy określić kąt obrotu wraz z osią obrotu. Możemy wykonać obrót 3D wokół osi X, Y i Z. Są one przedstawione w postaci macierzy, jak poniżej -
$$ R_ {x} (\ theta) = \ begin {bmatrix} 1 & 0 & 0 & 0 \\ 0 & cos \ theta & −sin \ theta & 0 \\ 0 & sin \ theta & cos \ theta & 0 \\ 0 & 0 & 0 & 1 \ \ \ end {bmatrix} R_ {y} (\ theta) = \ begin {bmatrix} cos \ theta & 0 & sin \ theta & 0 \\ 0 & 1 & 0 & 0 \\ −sin \ theta & 0 & cos \ theta & 0 \\ 0 & 0 & 0 & 1 \\ \ end {bmatrix} R_ {z} (\ theta) = \ begin {bmatrix} cos \ theta & −sin \ theta & 0 & 0 \\ sin \ theta & cos \ theta & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \ end {bmatrix} $$
Poniższy rysunek wyjaśnia obrót wokół różnych osi -
skalowanie
Możesz zmienić rozmiar obiektu używając transformacji skalowania. W procesie skalowania powiększasz lub kompresujesz wymiary obiektu. Skalowanie można osiągnąć, mnożąc oryginalne współrzędne obiektu przez współczynnik skalowania, aby uzyskać pożądany wynik. Poniższy rysunek przedstawia efekt skalowania 3D -
W operacji skalowania 3D używane są trzy współrzędne. Załóżmy, że oryginalne współrzędne to (X, Y, Z), współczynniki skalowania to odpowiednio $ (S_ {X,} S_ {Y,} S_ {z}) $, a otrzymane współrzędne to (X ', Y' , Z '). Można to przedstawić matematycznie, jak pokazano poniżej -
$ S = \ begin {bmatrix} S_ {x} & 0 & 0 & 0 \\ 0 & S_ {y} & 0 & 0 \\ 0 & 0 & S_ {z} & 0 \\ 0 & 0 & 0 & 1 \ end {bmatrix} $
P '= P ∙ S
$ [{X} '\: \: \: {Y}' \: \: \: {Z} '\: \: \: 1] = [X \: \: \: Y \: \: \: Z \: \: \: 1] \: \: \ begin {bmatrix} S_ {x} & 0 & 0 & 0 \\ 0 & S_ {y} & 0 & 0 \\ 0 & 0 & S_ {z} & 0 \\ 0 & 0 & 0 & 1 \ end {bmatrix} $
$ = [X.S_ {x} \: \: \: Y.S_ {y} \: \: \: Z.S_ {z} \: \: \: 1] $
Ścinanie
Transformacja, która pochyla kształt obiektu, nazywa się shear transformation. Podobnie jak w przypadku ścinania 2D, możemy ścinać obiekt wzdłuż osi X, osi Y lub osi Z w 3D.
Jak pokazano na powyższym rysunku, istnieje współrzędna P. Możesz ją ściąć, aby uzyskać nową współrzędną P ', którą można przedstawić w postaci macierzy 3D, jak poniżej -
$ Sh = \ begin {bmatrix} 1 & sh_ {x} ^ {y} & sh_ {x} ^ {z} & 0 \\ sh_ {y} ^ {x} & 1 & sh_ {y} ^ {z} & 0 \\ sh_ {z} ^ {x} & sh_ {z} ^ {y} & 1 & 0 \\ 0 & 0 & 0 & 1 \ end {bmatrix} $
P '= P ∙ Sh
$ X '= X + Sh_ {x} ^ {y} Y + Sh_ {x} ^ {z} Z $
$ Y '= Sh_ {y} ^ {x} X + Y + sh_ {y} ^ {z} Z $
$ Z '= Sh_ {z} ^ {x} X + Sh_ {z} ^ {y} Y + Z $
Macierze transformacji
Macierz transformacji jest podstawowym narzędziem transformacji. Macierz o wymiarach nxm mnoży się przez współrzędne obiektów. Zwykle do transformacji używa się macierzy 3 x 3 lub 4 x 4. Na przykład rozważ następującą macierz dla różnych operacji.
$ T = \ begin {bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ t_ {x} & t_ {y} & t_ {z} & 1 \\ \ end {bmatrix} $ | $ S = \ begin {bmatrix} S_ {x} & 0 & 0 & 0 \\ 0 & S_ {y} & 0 & 0 \\ 0 & 0 & S_ {z} & 0 \\ 0 & 0 & 0 & 1 \ end {bmatrix} $ | $ Sh = \ begin {bmatrix} 1 & sh_ {x} ^ {y} & sh_ {x} ^ {z} & 0 \\ sh_ {y} ^ {x} & 1 & sh_ {y} ^ {z} & 0 \\ sh_ {z} ^ {x} & sh_ {z} ^ {y} & 1 & 0 \\ 0 & 0 & 0 & 1 \ end {bmatrix} $ |
Translation Matrix | Scaling Matrix | Shear Matrix |
$ R_ {x} (\ theta) = \ begin {bmatrix} 1 & 0 & 0 & 0 \\ 0 & cos \ theta & -sin \ theta & 0 \\ 0 & sin \ theta & cos \ theta & 0 \\ 0 & 0 & 0 & 1 \\ \ end {bmatrix} $ | $ R_ {y} (\ theta) = \ begin {bmatrix} cos \ theta & 0 & sin \ theta & 0 \\ 0 & 1 & 0 & 0 \\ -sin \ theta & 0 & cos \ theta & 0 \\ 0 & 0 & 0 & 1 \\ \ end {bmatrix} $ | $ R_ {z} (\ theta) = \ begin {bmatrix} cos \ theta & -sin \ theta & 0 & 0 \\ sin \ theta & cos \ theta & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \ end {bmatrix} $ |
Rotation Matrix |