Преобразование системы координат

алгоритм

Сегодня задача разобраться с преобразованием координат, простое исследование.

Локальная система координат в глобальную систему координат

Принцип заключается в следующем:在这里插入图片描述На рисунке мировая система координат(X,Y,Z)(X, Y, Z), местная система координат(X',Y',Z')(X', Y', Z'), начало локальной системы координатO'O'. Баллы для конвертацииPP.

OP=x*i+y*j+z*kOO'=a*i+b*j+c*kOP =x*i+y*j+z*k \\ OO'=a*i+b*j+c*k

Соответствие осей координат

{i'=u11*i+u12*j+u13*kj'=u21*i+u22*j+u22*kk'=u31*i+u32*j+u33*k\left\{\begin{matrix} i'=u_{11}*i+u_{12}*j+u_{13}*k \\ j'=u_{21}*i+u_{22}*j+u_{22}*k \\ k'=u_{31}*i+u_{32}*j+u_{33}*k \end{matrix}\right.

Одновременная формула

O'P=x'*i'+y'*j'+z'*k'=x'*(u11*i+u12*j+u13*k)+y'*(u21*i+u22*j+u22*k)+z'*(u31*i+u32*j+u33*k)=(u11*x'+u21*y'+u31*z')*i+(u12*x'+u22*y'+u32*z')*j+(u13*x'+u23*y'+u33*z')*kO'P=x'*i'+y'*j'+z'*k'\\ = \quad x'*(u_{11}*i+u_{12}*j+u_{13}*k) \\ \quad +y'*(u_{21}*i+u_{22}*j+u_{22}*k) \\ \quad +z'*(u_{31}*i+u_{32}*j+u_{33}*k) \\ = \quad (u_{11}*x'+u_{21}*y'+u_{31}*z')*i \\ \quad + (u_{12}*x'+u_{22}*y'+u_{32}*z')*j \\ \quad + (u_{13}*x'+u_{23}*y'+u_{33}*z')*k

OP=OO'+O'POP=OO'+O'P,тогда

{x=a+u11*x'+u21*y'+u31*z'y=b+u12*x'+u22*y'+u32*z'z=c+u13*x'+u23*y'+u33*z'\left\{\begin{matrix} x=a+u_{11}*x'+u_{21}*y'+u_{31}*z'\\ y=b+u_{12}*x'+u_{22}*y'+u_{32}*z'\\ z=c+u_{13}*x'+u_{23}*y'+u_{33}*z' \end{matrix}\right.

конверсионные отношения

[xyz1]=[x'y'z'1]*W\begin{bmatrix} x & y & z & 1 \end{bmatrix} = \begin{bmatrix} x' & y' & z' & 1 \end{bmatrix} * W

наконец получить матрицу

W=[u11u12u130u21u22u230u31u32u330abc1]W= \begin{bmatrix} u_{11} & u_{12} & u_{13} & 0\\ u_{21} & u_{22} & u_{23} & 0\\ u_{31} & u_{32} & u_{33} & 0\\ a & b & c & 1 \end{bmatrix}

Глобальная система координат в локальную систему координат

так как

[xyz1]=[x'y'z'1]*W\begin{bmatrix} x & y & z & 1 \end{bmatrix} = \begin{bmatrix} x' & y' & z' & 1 \end{bmatrix} * W

Так

[xyz1]*W1=[x'y'z'1]\begin{bmatrix} x & y & z & 1 \end{bmatrix} * W^{-1} = \begin{bmatrix} x' & y' & z' & 1 \end{bmatrix}

наблюдаемый

W=[u11u12u130u21u22u230u31u32u330abc1]=[u11u12u130u21u22u230u31u32u3300001][100001000010abc1]=RTW= \begin{bmatrix} u_{11} & u_{12} & u_{13} & 0\\ u_{21} & u_{22} & u_{23} & 0\\ u_{31} & u_{32} & u_{33} & 0\\ a & b & c & 1 \end{bmatrix} = \begin{bmatrix} u_{11} & u_{12} & u_{13} & 0\\ u_{21} & u_{22} & u_{23} & 0\\ u_{31} & u_{32} & u_{33} & 0\\ 0 & 0 & 0 & 1 \end{bmatrix} \cdot \begin{bmatrix} 1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0 & 1 & 0\\ a & b & c & 1 \end{bmatrix} =R \cdot T

в,RRматрица вращения,TTматрица перевода Так

W1=(RT)1=T1*R1W^{-1}= (R\cdot T)^{-1} = T^{-1}*R^{-1}

в

T1=[100001000010abc1]T^{-1} = \begin{bmatrix} 1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0 & 1 & 0\\ -a & -b & -c & 1 \end{bmatrix}

еслиRRположительно определенная матрица, т.RR1=ER \cdot R^{-1} = E. Так

R1=RT=[u11u21u310u12u22u320u13u23u3300001]R^{-1}=R^{T}= \begin{bmatrix} u_{11} & u_{21} & u_{31} & 0\\ u_{12} & u_{22} & u_{32} & 0\\ u_{13} & u_{23} & u_{33} & 0\\ 0 & 0 & 0 & 1 \end{bmatrix}

непосредственно вычисляемыйW1W^{-1}.

но еслиRRЭто не положительно определенная квадратная матрица, т. е. оси координат локальной системы координат не перпендикулярны друг другу в правой системе, тогда все равно прямо обратно получитьW1W^{-1}.