计算机图形与OpenGL学习七(三维几何变换1.三维平移与三维坐标轴旋转)

三维几何平移与三维坐标轴旋转

三维集合变换的方法是在二维方法的基础上扩充了z坐标而得到。多数情况下,该扩充比较直接,但有一些情况,比如旋转,该扩充就不那么明显。

一个三维位置在齐次坐标中表示为4元列向量。因此,每一次几何变换操作表示为一个从左边去乘坐标向量的4x4矩阵。

 

1.   三维平移

其矩阵变换形式为:


类似二维坐标变化的实现,我们可以构造一个平移矩阵,如果不懂,请转到矩阵表示和齐次坐标


void Matrix4x4SetIdentity(Matrix4x4 matIdent4x4)  
{  
    //生成一个单位矩阵  
    GLint row, col;  
    for (row = 0; row < 4;++row)  
    for (col = 0; col < 4;++col)  
    {  
        matIdent3x3[row][col] = (row==col);  
    }  
} 
void translate3D(GLfloat tx, GLfloat ty,GLfloat tz)  
{  
    /*通过偏移量tx,ty产生平移矩阵matTransl之后,再通过矩阵的乘法,实现对象的平移*/  
    Matrix3x3 matTransl;//平移矩阵  
    Matrix3x3SetIdentity(matTransl);  
    matTransl[0][3] = tx;  
    matTransl[1][3] = ty;  
matTransl[2][3] = tz;
    /*矩阵乘法,平移*/  
    matrix3x3Premultiply(matTransl,matComposite);  
} 

1.   三维旋转

1.1   三维坐标轴旋转

上图为绕z轴的坐标旋转,坐标旋转后x,y轴的坐标位置推导如下:

 

     Z=Z’

 

矩阵形式:

绕另外两个坐标轴的旋转变换公式,可以由 将x、y、z循环替换而得到:

循环替换顺序为:x->y->z->x

因此,为了得到x轴旋转变换,我们用y替代x,z替代y:


为了得到x轴旋转变换,我们用z替代y,x替代z




  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值