坐标系转换
今天一项工作要处理坐标变换,简单研究了下,原理如下:图中,世界坐标系是(X,Y,Z)(X, Y, Z)(X,Y,Z),局部坐标系是(X′,Y′,Z′)(X', Y', Z')(X′,Y′,Z′),局部坐标系原点O′O'O′。要转换的点是PPP。OP=x∗i+y∗j+z∗kOO′=a∗i+b∗j+c∗kOP =x*i+...
今天一项工作要处理坐标变换,简单研究了下。
局部坐标系到全局坐标系
原理如下:
图中,世界坐标系是(X,Y,Z)(X, Y, Z)(X,Y,Z),局部坐标系是(X′,Y′,Z′)(X', Y', Z')(X′,Y′,Z′),局部坐标系原点O′O'O′。
要转换的点是PPP。
OP=x∗i+y∗j+z∗kOO′=a∗i+b∗j+c∗k OP =x*i+y*j+z*k \\ OO'=a*i+b*j+c*k OP=x∗i+y∗j+z∗kOO′=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. ⎩⎨⎧i′=u11∗i+u12∗j+u13∗kj′=u21∗i+u22∗j+u22∗kk′=u31∗i+u32∗j+u33∗k
联立公式
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′)∗k O'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 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′)∗k
OP=OO′+O′POP=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. ⎩⎨⎧x=a+u11∗x′+u21∗y′+u31∗z′y=b+u12∗x′+u22∗y′+u32∗z′z=c+u13∗x′+u23∗y′+u33∗z′
得转换关系
[xyz1]=[x′y′z′1]∗W \begin{bmatrix} x & y & z & 1 \end{bmatrix} = \begin{bmatrix} x' & y' & z' & 1 \end{bmatrix} * W [xyz1]=[x′y′z′1]∗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} W=⎣⎢⎢⎡u11u21u31au12u22u32bu13u23u33c0001⎦⎥⎥⎤
全局坐标系到局部坐标系
因为
[xyz1]=[x′y′z′1]∗W \begin{bmatrix} x & y & z & 1 \end{bmatrix} = \begin{bmatrix} x' & y' & z' & 1 \end{bmatrix} * W [xyz1]=[x′y′z′1]∗W
那么
[xyz1]∗W−1=[x′y′z′1] \begin{bmatrix} x & y & z & 1 \end{bmatrix} * W^{-1} = \begin{bmatrix} x' & y' & z' & 1 \end{bmatrix} [xyz1]∗W−1=[x′y′z′1]
观察到
W=[u11u12u130u21u22u230u31u32u330abc1]=[u11u12u130u21u22u230u31u32u3300001]⋅[100001000010abc1]=R⋅T 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} = \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 W=⎣⎢⎢⎡u11u21u31au12u22u32bu13u23u33c0001⎦⎥⎥⎤=⎣⎢⎢⎡u11u21u310u12u22u320u13u23u3300001⎦⎥⎥⎤⋅⎣⎢⎢⎡100a010b001c0001⎦⎥⎥⎤=R⋅T
其中,RRR是旋转矩阵,TTT是平移矩阵
那么
W−1=(R⋅T)−1=T−1∗R−1 W^{-1}= (R\cdot T)^{-1} = T^{-1}*R^{-1} W−1=(R⋅T)−1=T−1∗R−1
其中
T−1=[100001000010−a−b−c1] T^{-1} = \begin{bmatrix} 1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0 & 1 & 0\\ -a & -b & -c & 1 \end{bmatrix} T−1=⎣⎢⎢⎡100−a010−b001−c0001⎦⎥⎥⎤
如果RRR是正定矩阵,即R⋅R−1=ER \cdot R^{-1} = ER⋅R−1=E。那么
R−1=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} R−1=RT=⎣⎢⎢⎡u11u12u130u21u22u230u31u32u3300001⎦⎥⎥⎤
直接可计算W−1W^{-1}W−1。
但如果RRR不是正定方阵,即局部坐标系的坐标轴不是右手系相互垂直的,那么还是直接求逆得W−1W^{-1}W−1。
更多推荐
所有评论(0)