美文网首页
三维几何变换

三维几何变换

作者: 板栗_1c34 | 来源:发表于2019-08-28 21:34 被阅读0次

    1、简介

    三维平移变换、比例变换可看成是二维情况的直接推广。但旋转变换则不然,因为我们可选取空间任意方向作旋转轴,因此三维变换处理起来更为复杂。
    与二维变换相似,我们也采用齐次坐标技术来描述空间的各点坐标及其变换,这时,描述空间三维变换的变换矩阵是4×4的形式。由此,一系列变换可以用单个矩阵来表示。

    2、基本三维几何变换

    2.1、平移变换

    若空间平移量为(t_x,t_y,t_z),则平移变换为:

    图片.png

    \begin{cases} \ x^`=x+t_x \ \\ y^`=y+t_y \ \\z^`=z+t_z \end{cases}

    (x^`,y^`,z^`,1)=(x,y,z,1)\left[ \begin{matrix} 1& 0& 0&0\\ 0& 1& 0&0 \\ 0& 0& 1&0 \\ t_x&t_y& t_z&1 \\ \end{matrix} \right]
    补充说明:点的平移、物体的平移、多面体的平移、逆变换

    2.2、比例变换

    (1)相对坐标原点的比例变换
    一个点P=(x,y,z)相对于坐标原点的比例变换的矩阵可以表示为:


    图片.png

    (x^`,y^`,z^`,1)=(x,y,z,1)\left[ \begin{matrix} S_x& 0& 0&0\\ 0&S_y& 0&0 \\ 0& 0& S_z&0 \\ t_x&t_y& t_z&1 \\ \end{matrix} \right]

    x^`=xS_x, y^`=yS_y ,z^`=zS_z
    其中,S_x,S_y,S_z为正值。
    (2)相对于所选固定的点的比例变换

    图片.png

    2.3、绕坐标轴的旋转

    三维空间中的旋转变换比二维空间中的旋转变换复杂。除了需要指定旋转角外,还需指定旋转轴。
    若以坐标系的三个坐标轴x,y,z分别作为旋转轴,则点实际上只在垂直坐标轴的平面上作二维旋转。此时用二维旋转公式就可以直接推出三维旋转变换矩阵。
    规定在右手坐标系中,物体旋转的正方向是右手螺旋方向,即从该轴正半轴向原点看是逆时针方向。

    (1)绕z轴旋转

    图片.png

    (x^`,y^`,z^`,1)=(x,y,z,1)\left[ \begin{matrix} cos\gamma& sin\gamma& 0&0\\ -sin\gamma&cos\gamma& 0&0 \\ 0& 0& 1&0 \\ 0&0& 0&1 \\ \end{matrix} \right]

    (2)绕x轴旋转

    图片.png

    (x^`,y^`,z^`,1)=(x,y,z,1)\left[ \begin{matrix} 1& 0& 0&0\\ 0&cos\alpha& sin\alpha&0 \\ 0& -sin\alpha&cos\alpha&0 \\ 0&0& 0&1 \\ \end{matrix} \right]

    (3)绕y轴旋转

    图片.png

    (x^`,y^`,z^`,1)=(x,y,z,1)\left[ \begin{matrix} cos\beta& 0& -sin\beta&0\\ 0&1& 0&0 \\ sin\beta& 0&cos\beta&0 \\ 0&0& 0&1 \\ \end{matrix} \right]

    2.4、旋转矩阵规律

    对于单位矩阵, 图片.png

    绕那个坐标轴旋转,则该坐标轴的一列元素不变,按照二维图形变换的情况,将其旋转矩阵


    图片.png
    中的元素添入相应的位置中

    (1)绕Z轴正向旋转\gamma角,旋转点的z坐标值不变,x,y坐标的变换相当于在XOY平面内作\gamma角旋转。
    单位矩阵中添入二维旋转矩阵。

    图片.png

    (x^`,y^`,z^`,1)=(x,y,z,1)\left[ \begin{matrix} cos\gamma& sin\gamma& 0&0\\ -sin\gamma&cos\gamma& 0&0 \\ 0& 0& 1&0 \\ 0&0& 0&1 \\ \end{matrix} \right]

    (2)绕X轴正向旋转\alpha角,旋转点的x坐标值不变,y,z坐标的变换相当于在YOZ平面内作\alpha角旋转。
    单位矩阵中添入二维旋转矩阵。
    (x^`,y^`,z^`,1)=(x,y,z,1)\left[ \begin{matrix} 1& 0& 0&0\\ 0&cos\alpha& sin\alpha&0 \\ 0& -sin\alpha&cos\alpha&0 \\ 0&0& 0&1 \\ \end{matrix} \right]

    (2)绕Y轴正向旋转\beta角,旋转点的y坐标值不变,x,z坐标的变换相当于在XOZ平面内作\beta角旋转。
    单位矩阵中添入二维旋转矩阵。
    (x^`,y^`,z^`,1)=(x,y,z,1)\left[ \begin{matrix} cos\beta& 0& -sin\beta&0\\ 0&1& 0&0 \\ sin\beta& 0&cos\beta&0 \\ 0&0& 0&1 \\ \end{matrix} \right]

    3、组合变换

    1、物体绕平行于某一坐标轴的旋转变换。基本步骤:
    (1) 平移物体使旋转轴与所平行的坐标轴重合;
    (2) 沿着该坐标轴进行指定角度的旋转;
    (3) 平移物体使旋转轴移回到原位置。


    图片.png
    图片.png
    图片.png
    图片.png 图片.png

    2、绕任意轴旋转的变换
    (1)平移物体使旋转轴通过坐标原点;


    图片.png

    (2)旋转物体使旋转轴与某个坐标轴(如Z轴)重合;


    图片.png

    (3)关于该坐标轴进行指定角度的旋转;


    图片.png
    (4)应用逆旋转变换将旋转轴回到原方向
    图片.png

    (5)应用逆平移变换将旋转轴变换到原位置。


    图片.png

    例子
    求变换A_v,使过原点的向量V=(a,b,c)与Z轴的正向一致。

    图片.png
    实现步骤:
    (1)将V绕X轴旋转到XOZ平面上;
    (2)再绕Y轴旋转使之在与Z轴正向重合。
    旋转角度的确定:绕X轴旋转的角度等于向量V在YOZ平面上的投影向量与Z轴正向的夹角。
    图片.png
    根据矢量的点乘与叉乘,可以算出:

    因此,

    V^`=VR_x(\alpha)=(a,0,\sqrt{b^2 + c^2})

    类似地,可以求出:
    sin\beta=-\frac{a}{\sqrt {a^2 +b^2+c^2}},cos\beta=\frac{\sqrt{b^2+c^2}}{\sqrt {a^2 +b^2+c^2}}

    R_y(\beta)=\left[ \begin{matrix} \frac{\sqrt{b^2+c^2}}{\sqrt {a^2 +b^2+c^2}}& 0& \frac{a}{\sqrt {a^2 +b^2+c^2}}&0\\ 0&1& 0&0 \\ -\frac{a}{\sqrt {a^2 +b^2+c^2}}&0&\frac{\sqrt{b^2+c^2}}{\sqrt {a^2 +b^2+c^2}}&0 \\ 0&0& 0&1 \\ \end{matrix} \right]
    A_v=R_x(\alpha)R_y(\beta)
    利用这一结果,则绕任意轴旋转的变换矩阵可表示为:

    图片.png
    图片.png
    图片.png

    4.1、绕任意轴旋转变换的简单算法

    给定具有单位长的旋转轴A=[a_x,a_y,a_z]和旋转角\theta,则物体绕OA轴旋转变换的矩阵可确定如下:

    图片.png

    A^*=\left[ \begin{matrix} 0&-a_z&a_y\\ a_z&0& -a_x\\ -a_y&a_x&0\\ \end{matrix} \right]
    M=A+cos\theta·(E-A)+sin\theta·A^*
    P^`=P·M^T
    其中M^T表示M的转置矩阵。
    利用这一结果,则绕任意旋转的变换矩阵可表示为:

    图片.png

    其中旋转轴为
    传统的方法通过绕坐标轴旋转变换的乘积表示绕任意轴旋转的变换。与之相比,这种方法更直观。

    4.2、三维变换矩阵的功能分块

    图片.png

    (1)三维线性变换部分
    (2)三维平移变换部分
    (3)透视变换部分
    (4)整体比例因子

    5、三维坐标变换

    几何变换:在一个参考坐标系下将物体从一个位置移动到另一个位置的变换。
    坐标变换: 一个物体在不同坐标系之间的坐标变换。如从世界坐标系到观察坐标系的变换;观察坐标到设备坐标之间的变换。再如,对物体造型时,我们通常在局部坐标系中构造物体,然后重新定位到用户坐标系。
    坐标变换的构造方法:
    与二维的情况相同,为将物体的坐标描述从一个系统转换为另一个系统,我们需要构造一个变换矩阵,它能使两个坐标系统重叠。具体过程分为两步:
    (1)平移坐标系统oxyz,使它的坐标原点与新坐标系统的原点重合;
    (2)进行一些旋转变换,使两坐标系的坐标轴重叠。
    有多种计算坐标变换的方法,下面我们介绍一种简单的方法。

    图片.png
    设新坐标系原点的坐标为,相对于原坐标系其单位坐标矢量为:

    将原坐标系下的坐标转化成新坐标系的坐标可由以下两步完成:
    首先,平移坐标系,使其原点与新坐标系的原点重合;
    图片.png
    平移矩阵为:

    第二步,利用单位坐标向量构造坐标旋转矩阵

    该矩阵R将单位向量分别变换到X,Y,Z轴。
    综合以上两步,从到的坐标变换矩阵为:,也即坐标变换公式为:

    说明:变换矩阵TR将一个直角坐标系变换为另一个坐标系。即使一个坐标系是右手坐标系,另一个为左手坐标系,结论依然成立。

    相关文章

      网友评论

          本文标题:三维几何变换

          本文链接:https://www.haomeiwen.com/subject/bkkpectx.html