三维图形几何变换

三维几何变换包括平移、旋转和变比。三维几何变换可以表示为公式,或三维齐次坐标和4×4变换矩阵的乘积。下面分别以公式,矩阵乘积和简记符号来描述三维几何变换。并记变换前物体的坐标为x,y,z;变换后物体的坐标为x′,y′,z′。

    一、平移

    Tx,Ty,Tz是物体在三个坐标方向上的移动量,则有公式:

      x′=xTx

      y′=yTy

      z′=zTz

矩阵运算表达为:

x  y  z  1]=[x  y  z  1

简记为:T(Tx,Ty,Tz)

 

    二、旋转

旋转分为三种基本旋转:绕z轴旋转,绕x轴旋转,绕y轴旋转。在下述旋转变换公式中,设旋转的参考点在所绕的轴上,绕轴转θ角,方向是从轴所指处往原点看的逆时针方向(3.5(a),(b))

 

文本框: 绕x轴旋转 图3.5(b)

文本框: 绕z轴旋转 图3.5(a)

 

                                                               

    1绕z轴旋转的公式为:

         x′=xcosθ-ysinθ

         y′=xsinθ+ycosθ

         z′=z

矩阵运算的表达为:

x  y  z  1]=[x  y  z  1

简记为Rz(θ)

    2绕x轴旋转的公式为:

         x′=x

         y′=ycosθ-zsinθ

         z′=ysinθ+zcosθ

矩阵运算的表达为:

x  y  z  1]=[x  y  z  1

简记为Rx(θ)

     2绕y轴旋转的公式为:

         x′=zsinθ+xcosθ

         y′=y

         z′=zcosθ-xsinθ

         矩阵的运算表达式为:

x  y  z  1]=[x  y  z  1

简记为Ry(θ)

 

    如果旋转所绕的轴不是坐标轴,而是一根任意轴,则变换过程变显得较复杂。首先,对物体作平移和绕轴旋转变换,使得所绕之轴与某一根标准坐标轴重合。然后,绕该标准坐标轴作所需角度的旋转。最后,通过逆变换使所绕之轴恢复到原来位置。这个过程须由7个基本变换的级联才能完成。

    设旋转所绕的任意轴为p1, p2两点所定义的矢量。旋转角度为q(3.6)。这7个基本变换是:

    1T(x1,y1,z1)使p1点与原点重合(3.6(b))

    2Rx(α),使得轴p1p2落入平面xoz(3.6(c))

    3Ry(β),使p1p2z轴重合(3.6(d));

    4Rz(θ),执行绕p1p2轴的θ角度旋转(3.6(e))

    5Ry(-β),作3的逆变换;

    6Rx(-α),作2的逆变换;

    7T(x1,y1,z1)1的逆变换。

图3.6 绕任意轴P1P2旋转的前四个步骤

 

    1求Rx(α)的参数:转角α是uyoz平面的投影u′=(ob,c)z轴的夹角(37(a)),故有:

       cosa=,其中d

又因u′×uzuxu′||uzsinα

其中ux是在x轴上的投影。并且用行列式计算矢量积得:

       u′×uzux·b,故得:

       sinα= ,得出Rx(α)为:

            Rx(α)=

 

图3.7

 

  2求Ry(β)的参数(3.7(b)):经过Rx(α)变换,p2已落入xoz平面,但p2点与x轴的距离保持不变。因此,p1p2现在的单位矢量u″的z方向分量之值即为u′之长度,等于d,β是u″与uz之夹角,故有:

       cosβ= d

根据矢量积的定义,有:

       uzu″||uzsinβ=uy·(a

因为|u″|= =1,并|uz|=1,所以:

       sinβ=-a

因此得到Ry(β)为:

       Ry(β)

    绕任意轴(x1  y1  z1)(x2  y2  z2)转动θ角的变换R(θ)为如下级联变换:

    R(θ)=T(-x1,y1,z1)·Rx(a)·Ry(β)·Rz(θ)·

           Ry(-β)·Rx(a)·T(x1,y1,z1)

 

    三、变比

    sx,sy,sz是物体在三个方向的比例变化量,则有公式:

       x′=x·sx

       y′=y·sy

       z′=z·sz

矩阵运算的表达为

       x  y  z  1]=[x  y  z

简记为S(sx,sy,sz)

    相对于某个非原点参数点(xf,yf,zf)进行固定点变比变换,是通过如下级联变换实现的:

        T(xf,yf,zf)·S(sx,sy,sz)·T(xf,yf,zf)

 

    四、三维几何变换的指令

    和二维类似,三维几何变换也有三条指令,分别执行建立变换矩阵,积累变换和坐标变换的功能。

    1建立变换矩阵的指令:

    creat-transformation-matrix-3(xf,yf,zf,sx,sy,sz,xr1,yr1,zr1,xr2,yr2,zr2,α,tx , ty, tz, matrix);

其中:xf,yf,zf   是变比固定坐标;

      sx,sy,sz   是变比参数;

      xr1,yr1,zr1,xr2,yr2,zr2   是旋转所绕任意轴的起点与终点坐标;

      α         是平移参数;

      matrix     是返回的4×4的变换矩阵。

    2积累变换的指令

    accumulate-matrices-3(m1,m2,m);

其中m1,m2是输入矩阵,m是输出矩阵。三个都是4×4的矩阵。这条指令执行如下功能:

       mm1·m2

    3坐标变换的指令:

    set-segment-transformation-3(Id,matrix);

其中Id是物体的编号,matrix是变换矩阵。这条指令将Id所含的坐标逐一与matrix相乘,从而实现三维几何变换。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值