计算机图形与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




猜你喜欢

转载自blog.csdn.net/lhs322/article/details/80042934