计算机图形学————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建模转换
齐次坐标:
计算机图形学————3d建模转换

3d旋转

CCW是正旋转 是逆时针方向的 可以用右手定则判断
计算机图形学————3d建模转换

关于原点的二维坐标点旋转(动的是点)

计算机图形学————3d建模转换

关于z轴、x轴、y轴旋转

变的是物体的位置,坐标系不变
计算机图形学————3d建模转换
计算机图形学————3d建模转换
计算机图形学————3d建模转换
注:关于y轴变化的矩阵 不太一样 因为对两个坐标来说是逆时针方向,对另一个是顺时针。我们按照逆时针为正

关于原点的缩放

计算机图形学————3d建模转换

关于xy平面的反射

计算机图形学————3d建模转换

绕z轴剪切

计算机图形学————3d建模转换

仿射变换

就是以上五种变换的总结
计算机图形学————3d建模转换

组合变换

物体绕平行于某一坐标轴的旋转变换,首先找到一个该轴上的点(xf,yf,zf)
1、平移物体使旋转轴与所平行的坐标轴重合
2、沿着该坐标轴进行指定角度的旋转
3、平移物体使旋转轴回到原位置计算机图形学————3d建模转换
关于某点缩放也是这样的方法

计算机图形学中的3种不同坐标系系统

1、MC 建模坐标系(物理坐标) 自然坐标
2、WC 世界坐标系 所有物体都放在一个坐标系
3、VC/CC 相机坐标

一个点在不同坐标系下的坐标变换

变的是坐标系计算机图形学————3d建模转换

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)