04第四章 三维变换

更新时间:2023-05-19 09:37:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

计算机图形学三维变换主讲:汪日伟 Email:craftcub@

实例03 变换 三维图形显示流程

gluCylinder(quadraticObj,1.0f,1.0,1.0,64,64);

OpenGL三维图形显示流程

OpenGL三维图形显示流程 视图变换(Viewing Transformation) 第一步,将相机置于三角架上,让它对准三维景物 模型变换(Modeling Transformation ) 第二步,将三维物体放在适当的位置 投影变换(Projection Transformation) 第三步,选择相机镜头)并调焦,使三维物体投影在 二维胶片上 视口变换(Viewport Transformation) 第四步,决定二维像片的大小

The Camera Analogy 照相机的成像过程

模型变换

投影变换

视口变换

模型视图变换 平移变换 旋转变换 比例缩放变换

void glTranslate{fd}(TYPEx, TYPE y, TYPEz);

void glRotate{fd}(TYPE angle, TYPE x, TYPE y, TYPE z);

void glScale{fd}(TYPEx, TYPE y, TYPEz);

组合变换

通用变换及变换顺序glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glMultMatrixf(N); glMultMatrixf(M); glMultMatrixf(L); glBegin(GL_POINTS); glVertex3f(v); glEnd(); //N(M(Lv))

左乘:变换矩阵在乘号的左边(OpenGL)

矩阵堆栈 模型视图矩阵堆栈 投影矩阵堆栈

矩阵堆栈操作函数 void glPushMatrix(void); void glPopMatrix(void); void glLoadMatrix{fd}(const TYPE *m); void glMultMatrix{fd}(const TYPE *m); void glLoadIdentity(void); void glMatrixMode(GLenum mode); GL_MODELVIEW, GL_PROJECTION, or GL_TEXTURE void glTranslate{fd}(TYPEx, TYPE y, TYPEz); void glRotate{fd}(TYPE angle, TYPE x, TYPE y, TYPE z); void glScale{fd}(TYPEx, TYPE y, TYPEz);

例 绘制小车 draw_body_and_wheel_and_bolts() draw_wheel_and_bolts() draw_wheel() draw_bolt() draw_car_body()

例 绘制小车

例 绘制小车

练习04 组合变换 给 练习03的小房子添加一个门和两扇窗户 门可以打开关闭 窗户可以打开关闭

本文来源:https://www.bwwdw.com/article/j1l4.html

Top