大家好,欢迎来到IT知识分享网。
三维空间的坐标变换分为绕固定轴的旋转平移变换和绕动态轴的旋转平移变换,假设我们有1个全局坐标系A和1个局部坐标系B,A为固定坐标系,B为动态坐标系,开始时两坐标系重合,对于局部坐标系B,其中有一点 p b p_b pb,我们求变换后 p b p_b pb在全局坐标系下的坐标 p a p_a pa,下面分别进行介绍:
绕固定轴的旋转平移变换
此时我们让局部坐标系B整体绕世界坐标系各轴依次旋转,根据旋转顺序的不同,共有6种方式,分别是XYZ,XZY,YXZ,YZX,ZXY,ZYX,我们分别求每种方式变换后, p b p_b pb在全局坐标系下的坐标 p a p_a pa。这里先分别介绍绕各轴旋转和平移对应的变换矩阵。
让局部坐标系B先绕全局坐标系A的X轴逆时针旋转 α \alpha α弧度,再沿着A坐标系的各轴分别平移 T x x , T x y , T x z Tx_x,Tx_y,Tx_z Txx,Txy,Txz,则:
p a = [ 1 0 0 0 c o s ( α ) − s i n ( α ) 0 s i n ( α ) c o s ( α ) ] p b + [ T x x T x y T x z ] = R x p b + T x p_a=\left[ \begin{matrix} 1 & 0 & 0 \\ 0 & cos(\alpha) & -sin(\alpha) \\ 0 & sin(\alpha) & cos(\alpha) \end{matrix} \right] p_b+ \left[ \begin{matrix}Tx_x\\Tx_y\\Tx_z \end{matrix} \right]= R_x p_b+Tx pa=⎣⎡1000cos(α)sin(α)0−sin(α)cos(α)⎦⎤pb+⎣⎡TxxTxyTxz⎦⎤=Rxpb+Tx
让局部坐标系B先绕全局坐标系A的Y轴逆时针旋转 β \beta β弧度,再沿着A坐标系的各轴分别平移 T y x , T y y , T y z Ty_x,Ty_y,Ty_z Tyx,Tyy,Tyz,则:
p a = [ c o s ( β ) 0 s i n ( β ) 0 1 0 − s i n ( β ) 0 c o s ( β ) ] p b + [ T y x T y y T y z ] = R y p b + T y p_a=\left[ \begin{matrix} cos(\beta) & 0 & sin(\beta) \\ 0 & 1& 0 \\ -sin(\beta) &0 & cos(\beta) \end{matrix} \right] p_b+ \left[ \begin{matrix}Ty_x\\Ty_y\\Ty_z \end{matrix} \right]= R_y p_b+Ty pa=⎣⎡cos(β)0−sin(β)010sin(β)0cos(β)⎦⎤pb+⎣⎡TyxTyyTyz⎦⎤=Rypb+Ty
让局部坐标系B先绕全局坐标系A的Z轴逆时针旋转 γ \gamma γ弧度,再沿着A坐标系的各轴分别平移 T z x , T z y , T z z Tz_x,Tz_y,Tz_z Tzx,Tzy,Tzz,则:
p a = [ c o s ( γ ) − s i n ( γ ) 0 s i n ( γ ) c o s ( γ ) 0 0 0 1 ] p b + [ T z x T z y T z z ] = R z p b + T z p_a=\left[ \begin{matrix} cos(\gamma) & -sin(\gamma) & 0 \\sin(\gamma) & cos(\gamma) & 0 \\ 0 & 0 & 1 \end{matrix} \right] p_b+ \left[ \begin{matrix}Tz_x\\Tz_y\\Tz_z \end{matrix} \right]= R_z p_b+Tz pa=⎣⎡cos(γ)sin(γ)0−sin(γ)cos(γ)0001⎦⎤pb+⎣⎡TzxTzyTzz⎦⎤=Rzpb+Tz
XYZ变换方式
X Z Y变换方式
YXZ变换方式
YZX变换方式
ZXY变换方式
ZYX变换方式
绕动态轴的旋转平移变换
此时我们让局部坐标系B整体绕自身坐标系的各个轴依次旋转和平移,由于自身坐标系姿态是随着每一步的旋转和平移发生变化的,故称为绕动态轴的旋转平移变换,同样,根据旋转顺序的不同,共有6种方式,分别是XYZ,XZY,YXZ,YZX,ZXY,ZYX,我们分别求每种方式变换后, p b p_b pb在全局坐标系下的坐标 p a p_a pa。这里先分别介绍绕各轴旋转和平移对应的变换矩阵。
让局部坐标系B先绕自身坐标系的X轴逆时针旋转 α \alpha α弧度,再沿着旋转后的坐标系的各轴分别平移 T x x , T x y , T x z Tx_x,Tx_y,Tx_z Txx,Txy,Txz,则:
p a = [ 1 0 0 0 c o s ( α ) − s i n ( α ) 0 s i n ( α ) c o s ( α ) ] ( p b + [ T x x T x y T x z ] ) = R x ( p b + T x ) p_a=\left[ \begin{matrix} 1 & 0 & 0 \\ 0 & cos(\alpha) & -sin(\alpha) \\ 0 & sin(\alpha) & cos(\alpha) \end{matrix} \right]( p_b+ \left[ \begin{matrix}Tx_x\\Tx_y\\Tx_z \end{matrix} \right])= R_x ( p_b+Tx) pa=⎣⎡1000cos(α)sin(α)0−sin(α)cos(α)⎦⎤(pb+⎣⎡TxxTxyTxz⎦⎤)=Rx(pb+Tx)
让局部坐标系B先绕自身坐标系的Y轴逆时针旋转 β \beta β弧度,再沿着旋转后的坐标系的各轴分别平移 T y x , T y y , T y z Ty_x,Ty_y,Ty_z Tyx,Tyy,Tyz,则:
p a = [ c o s ( β ) 0 s i n ( β ) 0 1 0 − s i n ( β ) 0 c o s ( β ) ] ( p b + [ T y x T y y T y z ] ) = R y ( p b + T y ) p_a=\left[ \begin{matrix} cos(\beta) & 0 & sin(\beta) \\ 0 & 1& 0 \\ -sin(\beta) &0 & cos(\beta) \end{matrix} \right] (p_b+ \left[ \begin{matrix}Ty_x\\Ty_y\\Ty_z \end{matrix} \right])= R_y (p_b+Ty) pa=⎣⎡cos(β)0−sin(β)010sin(β)0cos(β)⎦⎤(pb+⎣⎡TyxTyyTyz⎦⎤)=Ry(pb+Ty)
让局部坐标系B先绕自身坐标系的Z轴逆时针旋转 γ \gamma γ弧度,再沿着旋转后的坐标系的各轴分别平移 T z x , T z y , T z z Tz_x,Tz_y,Tz_z Tzx,Tzy,Tzz,则:
p a = [ c o s ( γ ) − s i n ( γ ) 0 s i n ( γ ) c o s ( γ ) 0 0 0 1 ] ( p b + [ T z x T z y T z z ] ) = R z ( p b + T z ) p_a=\left[ \begin{matrix} cos(\gamma) & -sin(\gamma) & 0 \\sin(\gamma) & cos(\gamma) & 0 \\ 0 & 0 & 1 \end{matrix} \right]( p_b+ \left[ \begin{matrix}Tz_x\\Tz_y\\Tz_z \end{matrix} \right])= R_z (p_b+Tz) pa=⎣⎡cos(γ)sin(γ)0−sin(γ)cos(γ)0001⎦⎤(pb+⎣⎡TzxTzyTzz⎦⎤)=Rz(pb+Tz)
X YZ变换方式
X Z Y变换方式
YXZ变换方式
YZ X变换方式
ZXY变换方式
ZY X变换方式
综上,对于绕固定轴旋转平移后的变换,我们采用左乘法则结合,对于绕动态轴旋转平移后的变换,我们采用右乘法则结合,不同的旋转和平移顺序将对应不同的旋转和平移向量。当给定一个旋转和平移的顺序后,我们可以根据上面的式子求出局部坐标系中的点在全局坐标系中的坐标。
应用
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/137830.html