Obrót wektora za pomocą wektora kierunkowego
Stronę tą wyświetlono już: 3670 razy
Obrotu punktu 2W można dokonać za pomocą wektora kierunkowego, którego wartość nie może być równa zero. Kąt α zawarty pomiędzy wektorem kierunkowym a wersorem osi x stanowi kąt obrotu zadanego punktu. Konieczne jest uzyskanie dwóch wektorów jednostkowych: pierwszego równoległego do wektora kierunkowego, oraz drugiego prostopadłego do wektora kierunkowego. Jeżeli przez Vk oznaczyć wektor kierunkowy, to wartości wyżej wymienionych jednostkowych wektorów kierunkowych dane są następującymi zależnościami:
Wektory jednostkowe i', j' są wersorami nowego układu współrzędnych obróconego o kąt α zawarty między wektorem kierunkowym a wersorem osi x. W celu lepszego zrozumienia warto zerknąć na rysunek 1.

Obrót danego wektora 2W realizuje się poprzez jego przemnożenie przez macierz kosinusów w następujący sposób:
![]() | [3] |
Zapis wyrażenia w formacie TeX-a:
\vec{P}\,'=M_c\cdot \vec{P}=\begin{bmatrix}\vec{i}\circ \vec{i}\,' & \vec{i}\circ \vec{j}\,'\\ \vec{j}\circ \vec{i}\,' & \vec{j}\circ \vec{j}\,'\end{bmatrix}\cdot \begin{bmatrix}P_x\\ P_y \end{bmatrix}=\begin{bmatrix}P_x\cdot \vec{i}\circ \vec{i}\,'+P_y\cdot \vec{i}\circ \vec{j}\,'\\P_x\cdot \vec{j}\circ \vec{i}\,'+P_y\cdot \vec{j}\circ \vec{j}\,'\end{bmatrix}
Odwrotna transformacja również jest możliwa poprzez przemnożenie wektora P' przez transponowaną macierz kosinusów z równania [3]:
![]() | [4] |
Zapis wyrażenia w formacie TeX-a:
\vec{P}=M_c^T\cdot \vec{P}=\begin{bmatrix}\vec{i}\circ \vec{i}\,' & \vec{j}\circ \vec{i}\,'\\ \vec{i}\circ \vec{j}\,' & \vec{j}\circ \vec{j}\,' \end{bmatrix}\cdot \begin{bmatrix}P_x\,'\\ P_y\,'\end{bmatrix}=\begin{bmatrix}P_x\cdot \vec{i}\circ \vec{i}\,'+P_y\cdot \vec{j}\circ \vec{i}\,'\\P_x\cdot \vec{i}\circ \vec{j}\,'+P_y\cdot \vec{j}\circ \vec{j}\,'\end{bmatrix}
Wzór [3] umożliwia transformację współrzędnych punktu P z układu współrzędnych xy do układu x'y', natomiast wzór [4] umożliwia odwrotną transformację. Obrócony punkt P w układzie współrzędnych xy przyjmuje współrzędne punktu P' otrzymanego przy użyciu wzoru [3].

Poszczególne klatki animacji wygenerowane w programie wxMaxima za pomocą następującego kodu:
- x1:2;
- y1:1;
- xo: 2;
- yo: 0;
- da: 5 * %pi / 180;
- v: matrix([x1],[y1]);
- ik: matrix([xo], [yo]) * 1 / sqrt(xo^2+yo^2);
- jk: matrix([-ik[2][1]],[ik[1][1]]);
- obj:matrix([0.5,1.5,1.5,1,1,0.5,0.5],[0.5,0.5,1,1,2,2,0.5]);
- Mk: matrix([ik[1][1], jk[1][1]],[ik[2][1], jk[2][1]]);
- obj2: float(Mk . obj);
- l: float(sqrt(v2[1][1]^2+v2[2][1]^2)-sqrt(v[1][1]^2+v[2][1]^2));
- Mrot: float(matrix([cos(da), -sin(da)],[sin(da),cos(da)]));
- i:0;
- for i:0 thru 71 do(
- Mk: matrix([ik[1][1], jk[1][1]],[ik[2][1], jk[2][1]]),
- obj2: float(Mk . obj),
- plot2d([[discrete, obj2[1], obj2[2]], [discrete, [0, ik[1][1]*2], [0, ik[2][1]*2]], [discrete, obj[1], obj[2]]],[x,-3,3],[y,-3,3],[gnuplot_term, "png size 500,500"], [gnuplot_out_file, printf(false,"C:\\obr\\obr ~f.png",i)],[legend,"obrocenie","wektor kierunkowy","obracany"]),
- ik: Mrot . ik,
- jk: Mrot . jk)$
Animacja poskładana w programie Gimp
Zapewne nie będzie dla nikogo wielkim zaskoczeniem jeśli powiem, że w podobny sposób można obrócić punktu 3W. Jedyną różnicą jest sposób że tak to ujmę pozyskiwania wersorów i', j', k'. Wektor kierunkowy Vk również w tym przypadku jest równoległy do wersora i', a więc wypadkowe owego wersora można obliczyć korzystając z wzoru [1]. Jeżeli wersor i' nie jest równy tożsamościowo wersorowi i, wtedy wersory j', k' można obliczyć w następujący sposób:
![]() | [5] |
Zapis wyrażenia w formacie TeX-a:
\vec{j}\,'=\frac{vec{i}\times \vec{i}\,'}{\left|\vec{i}\times \vec{i},'\right|}
![]() | [6] |
Zapis wyrażenia w formacie TeX-a:
\vec{k}\,'=\frac{\vec{j}\,'\times \vec{i}\,'}{\left|\vec{j}\,'\times \vec{i}\,'\right|}
Gdy i jest równe tożsamościowo i' wtedy j'=j, k'=k.
Znając wartości poszczególnych wersorów w układzie primowanym można obliczyć współrzędne punktu P w następujący sposób:
![]() | [7] |
Zapis wyrażenia w formacie TeX-a:
\vec{P}\,'=M_c\cdot \vec{P}=\begin{bmatrix}\vec{i}\circ \vec{i}\,' & \vec{i}\circ \vec{j}\,' & \vec{i}\circ \vec{k}\,'\\ \vec{j}\circ \vec{i}\,' & \vec{j}\circ \vec{j}\,' & \vec{j}\circ \vec{k}\,'\\ \vec{k}\circ \vec{i}\,' & \vec{k}\circ \vec{j}\,' & \vec{k}\circ \vec{k}\,'\end{bmatrix}\cdot \begin{bmatrix} P_x\\P_y\\P_z\end{bmatrix}=\begin{bmatrix}P_x\cdot \vec{i}\circ \vec{i}\,' + P_y\cdot \vec{i}\circ \vec{j}\,'+P_z\cdot \vec{i}\circ \vec{k}\,'\\ P_x\cdot \vec{j}\circ \vec{i}\,' + P_y\cdot \vec{j}\circ \vec{j}\,'+P_z\cdot \vec{j}\circ \vec{k}\,'\\P_x\cdot \vec{k}\circ \vec{i}\,' + P_y\cdot \vec{k}\circ \vec{j}\,'+P_z\cdot \vec{k}\circ \vec{k}\,'\end{bmatrix}
Oczywiście odwrotny obrót lub transformacja współrzędnych jest również możliwa:
![]() | [8] |
Zapis wyrażenia w formacie TeX-a:
\vec{P}\,=M_c^T\cdot \vec{P}\,'=\begin{bmatrix}\vec{i}\circ \vec{i}\,' & \vec{j}\circ \vec{i}\,' & \vec{k}\circ \vec{i}\,'\\ \vec{i}\circ \vec{j}\,' & \vec{j}\circ \vec{j}\,' & \vec{k}\circ \vec{j}\,'\\ \vec{i}\circ \vec{k}\,' & \vec{j}\circ \vec{k}\,' & \vec{k}\circ \vec{k}\,'\end{bmatrix}\cdot \begin{bmatrix} P_x\,'\\ P_y\,'\\ P_z\,'\end{bmatrix}=/begin{bmatrix}P_x\,'\cdot \vec{i}\circ \vec{i}\,' + P_y\,'\cdot \vec{j}\circ \vec{i}\,'+P_z\,'\cdot \vec{k}\circ \vec{i}\,'\\ P_x\,'\cdot \vec{i}\circ \vec{j}\,' + P_y\,'\cdot \vec{j}\circ \vec{j}\,'+P_z\,'\cdot \vec{k}\circ \vec{j}\,'\\ P_x\,'\cdot \vec{i}\circ \vec{k}\,' + P_y\,'\cdot \vec{k}\circ \vec{j}\,'+P_z\,'\cdot \vec{k}\circ \vec{k}\,'\end{bmatrix}
Co komu jednak z takiego obrotu? Odpowiedź jest prosta: dzięki takiej transformacji można obracać obiekt o zadany kąt względem dowolnie skierowanej osi, a to dlatego, że obierając za oś obrotu wektor kierunkowy i transformując go do współrzędnych układu primowanego ten wektor "ustawia się" w osi x a względem osi x to już wiadomo jak obracać. Wzór na obrót względem dowolnej osi danej wektorem V jest więc następujący:
Na poniższej animacji-rysunku można zobaczyć efekt obrotu obiektu względem osi danej wektorem o kąt α.

Poszczególne klatki animacji wygenerowane w programie wxMaxima
Animacja poskładana w programie Gimp
Zadanie 1
Obrócić wektor V1 wektorem kierunkowym V2.
Zacząć należy od wyznaczenia wersorów i2 oraz j2 wykorzystując w tym celu wzory [1] i [2].
Teraz, gdy wersory zostały wyznaczone, obliczyć należy macierz kosinusów Mc zgodnie z wzorem macierzy zawartej w równaniu [3].
Pozostało pomnożyć macierz kosinusów Mc z wektorem V1 zgodnie z wzorem [3]:
Zadanie 2
Obrócić wektor V3 o kąt zawarty pomiędzy wektorami V1 i V2.
Obliczanie wersorów dla wektora V1:
Obliczanie wersorów dla wektora V2:
Wyliczam macierz kosinusów Mc:
Obracanie wektora V3: