计算机图形学————3d建模转换
学习目标
1、理解齐次坐标系的使用
2、学习不同类型的3d转换和复合变换的概念
3、能够使用坐标变换在一个坐标系与另一个坐标系之间切换
4、学会用openGL 做坐标变换
齐次坐标系 homogenous coordinates
1、将n维实体表示为n+1维实体
2、允许将所有线性变换表示为矩阵乘法;和加减法
2d坐标的线性转换
P2=M1*P1+M2
P1: n维坐标点
P2:转换后的n维坐标点
M1:n*n方形转移矩阵
M2:转移向量
点的坐标表示
欧几里得坐标 (X,Y,Z)
齐次坐标 (XW,YW,Z*W,W)
3d坐标转换
欧几里得:
齐次坐标:
3d旋转
CCW是正旋转 是逆时针方向的 可以用右手定则判断
关于原点的二维坐标点旋转(动的是点)
关于z轴、x轴、y轴旋转
变的是物体的位置,坐标系不变
注:关于y轴变化的矩阵 不太一样 因为对两个坐标来说是逆时针方向,对另一个是顺时针。我们按照逆时针为正
关于原点的缩放
关于xy平面的反射
绕z轴剪切
仿射变换
就是以上五种变换的总结
组合变换
物体绕平行于某一坐标轴的旋转变换,首先找到一个该轴上的点(xf,yf,zf)
1、平移物体使旋转轴与所平行的坐标轴重合
2、沿着该坐标轴进行指定角度的旋转
3、平移物体使旋转轴回到原位置
关于某点缩放也是这样的方法
计算机图形学中的3种不同坐标系系统
1、MC 建模坐标系(物理坐标) 自然坐标
2、WC 世界坐标系 所有物体都放在一个坐标系
3、VC/CC 相机坐标
一个点在不同坐标系下的坐标变换
变的是坐标系
open GL 几何转换命令
4 x 4 translation matrix
glTranslatef (tx, ty, tz);
4 x 4 rotation matrix
glRotatef (theta, vx, vy, vz);
4 x 4 scaling matrix
glScalef (sx, sy, sz);
4 x 4 reflection matrix
glScalef (1, 1, -1); // reflection about Z axis
4 x 4 shearing matrix
glMultMatrixf (matrix); // matrix is a 16 element 、 matrix in column-major order
openGL矩阵操作
glMatrixMode (GL_MODELVIEW) //responsible for projection transformation
glMatrixMode (GL_PROJECTION), //responsible for projection transformation
glLoadIdentity ( ); //将单位矩阵分配给当前矩阵
入栈 glPushMatrix ( );
出栈 glPopMatrix ( );
一个例子????
glMatrixMode (GL_MODELVIEW)
glLoadIdentity ( ); // MV = identity matrix
glTranslatef (-25, 50, 25); // MV = T(-25,50,25) glRotatef (45, 0, 0, 1); // MV = T (-25,50,25)RZ(45o)
glPushMatrix ( );
glScalef (1, 2, 1); glTranslatef (0, 0, 10); glPopMatrix ( );
// MV is pushed to the stack
// MV = T (-25,50,25)RZ(45o) S(1,2,1) // MV = T RZ(45o)S(1,2,1) T(0, 0, 10)
// MV = T (-25,50,25)RZ(45o)