21一、实验目的 了解例子系统的实现方法二、实验内容1. 运行范例程序,分析源码。
2. 模拟一个爆炸场面,碎片用三角形表示,颜色随机。
图 4.7.1 图 4.7.2 Par5 基本图形生成算法 ☆ 实验 5.1 直线和圆的扫描转换算法验证参考程序 DDALine.c一、实验目的 验证基本图形生成算法二、实验内容1. 从以下算法中任选一个进行验证 直线 - 中点 Bresenham 算法 直线 - 改进的 Bresenham 算法 圆 - 中点 Bresenham 算法OpenGL 相关函数glPointSizeGLfloat size 设置点的宽度 单位为像素. ☆ 实验 5.2 线型、线宽参考程序 stippleLines.c 图 5.2.1一、实验目的 了解线型、线宽的实现方法二、实验内容1. 在直线和圆的扫描转换程序基础上实现线型和线宽。
应用像素模板实现线型 应用线刷子或和 方刷子实现线宽。
注意: 自己实现线型线宽算法而不是直接调用 glLineStipple2. 分别用点和折线模式实现正弦和余弦曲线的绘制。
教材 P150 5.29OpenGL 相关函数glEnableGL_LINE_STIPPLEglLineStippleGlint factor GLushort pattern factor 指定每位连续使用多少次,取值范围 1256 pattern 是由 0 和 1 组成的 16 位数 例: glLineStipple1 0xFF00glLineWidthGLfloat width width 为直线的宽度 单位为像素 例: glLineWidth2 图 5.2.1 实验 5.3 字体参考程序 dwarf.c font.c stroke.c一、实验目的 了解字体的实现方法二、实验内容1. 运行范例程序,分析源码。
实验 5.4 多边形填充参考程序 polys.c一、实验目的 了解多边形的填充方法二、实验内容1. 运行范例程序,分析源码。
Part 6 二维变换及二维观察 实验 6.1 二维变换参考程序 二维变换-task.c model.c一、实验目的 掌握利用 OpenGL 实现二维变换的方法二、实验内容1. 完成一个二维变换演示程序,功能如下: 黑色背景 绘制正方形 单击鼠标左键 正方形 逆时针旋转 10 度;单击鼠标右键 正方形 顺时针旋转 10 度. 单击鼠标中键 退出程序 键入’x’ 沿 x 轴正向平移;键入’X’ 沿 x 轴负向平移 键入’y’ 沿 y 轴正向平移;键入’Y’ 沿 y 轴负向平移 键入’z’ 正方形缩小 2 倍;键入’Z’ 正方形放大 2 倍 实验 6.2 窗口和视区参考程序 gasket-viewport.c chp6-2.cpp一、实验目的 了解窗口和视区的实现方式二、实验内容1. 对 gasket-viewport.c 进行程序填空. 需填空处有 Attention 字样. 实现以下功能: 点击鼠标左键: 窗口不变 视区变小 点击鼠标右键: 窗口不变 视区变大 按下键盘’a’ 键: 视区不变 窗口变小 按下键盘’A’ 键: 视区不变 窗口变大2. 运行 chap6-2.cpp,了解多视区的实现方式。
OpenGL 相关函数Void gluOrtho2DGLdouble left GLdouble right GLdouble bottom GLdouble top Void glViewport GLint x GLint y GLint w GLint h ★ 实验 6.3 直线裁减一、实验目的 实现直线裁剪算法二、实验内容1. 利用以下三种算法之一进行直线裁减. Cohen - Sutherland 算法 中点分割算法 Liang-Barsky 算法 ★ 实验 6.4 多边形裁减参考程序 SutherHodge.c 图 6.4.1一、实验目的 实现多边形裁剪算法二、实验内容1. 实现 Weiler-Atherton 算法 双边裁剪算法 图 6.4.1 Part 7 三维变换及三维观察 实验 7.1 透视投影三维变换及三维观察参考程序 frust.c 图 7.1.1一、实验目的 掌握透视投影的实现方法二、实验内容1. 运行参考程序,并对源代码进行分析。
2. 绘制其他实体模型,实现透视投影。
3. 用鼠标或键盘改变投影参数,查看显示结果。
OpenGL 相关函数 glFrustum gluLookAt glScalef 实验 7.2 视点变换参考程序 cubeView.c 图 7.2.1一、实验目的 掌握视点变换的实现方法二、实验内容1. 运行参考程序,并对源代码进行分析。
实验 7.3 矩阵堆栈-机器人手臂参考程序 robot.c 图 7.3.1一、实验目的 掌握矩阵堆栈的实现方法二、实验内容1. 运行参考程序,并对源代码进行分析。
2. 请将最后一截蓝色的部分长度缩短一倍。
实验 7.4 矩阵堆栈-机器人参考程序 figure.c一、实验内容1. 运行参考程序,并对源代码进行分析。
图 7.1.1 图 7.2.1 图 7.3.1 图 7.4.1 ☆ 实验 7.5 矩阵堆栈-太阳系参考程序 planet.c 图 7.5.1一、实验目的 掌握矩阵堆栈的实现方法二、实验内容1. 请改成地球围绕太阳自动旋转的方式2. 请再加上一个月亮 并围绕地球旋转。
实现图 7.5.2 中的效果 图 7.5.1 图 7.5.2 ☆ 实验 7.6 拾取和变换一、实验目的 掌握拾取和变换的实现方式二、实验内容1. 在绘图窗口内绘制 4 个实体模型2. 用鼠标进行拾取3. 用键盘对拾取的模型进行 x、y、z 三个方向上的旋转变换 ★ 实验 7.7 三视图一、实验目的 掌握三视图的实现方法二、实验内容1. 利用 OpenGL 中的多视区,分别在 4 个视区内显示如图 7-41 所示空间四面体的透视投影图、 主视图、俯视图和侧视图。
教材 P228 7.16 ☆ 实验 7.8 动画参考程序 chap7-1.cpp一、实验目的 掌握动画的实现方法二、实验内容1. 创建一个球体动画,使球体在窗口内做自由落体运动,并在撞击地面后能够弹回原来的高度。
教 材 P228 7.15 ★ 实验 7.9 碰撞检测一、实验目的 掌握碰撞检测的实现方法二、实验内容1. 创建一个球体动画,使球体以一个初始速度开始在一个三维封闭空间内运动,当碰到任何一面墙 壁 按反射原理弹开 然后继续在空间内运动。
2. 多个球体在空间内运动,球和球之间碰撞也会弹开。
Part 8 曲线曲面 实验 8.1 曲线曲面参考程序 bezcurve.c bezmesh.c bezsurf.c surface.c chap8-1.cpp chap8-2.cpp chap8-4.cpp一、实验目的 了解曲线曲面的绘制方式二、实验内容1. 运行范例程序,分析源码。
Part 9 消隐 实验 9.1 消隐参考程序 chap9-1.cpp chap9-2.cpp一、实验目的 了解消隐的实现方式二、实验内容1. 运行范例程序,分析源码。
Part 10 真实感图形生成 实验 10.1 光照模型参考程序 chap10-1.cpp light.c movelight.c一、实验目的 了解真实感图形的生成方式二、实验内容1. 绘制 OpenGL 程序,显示一个圆环,点光源设在圆环的中心位置,通过键盘操作实现光源的移 动,观察光源移动时圆环的显示效果。
教材 P315 10.10 实验 10.2 纹理参考程序 checker.c一、实验目的 了解真实感图形的生成方式二、实验内容1. 绘制 OpenGL 程序,绘制一个球面,其表面具有黑白相间的矩形纹理,并使用点光源照射。
教 材 P315 10.17 实验 10.3 材质参考程序 material.c teapots.c一、实验目的 了解真实感图形的生成方式二、实验内容1. 运行范例程序,分析源码。
实验 10.4 真实感图形生成参考程序 colormat.c fog.c Part 11 综合实验注意:以下实验中的可选技术手段为:光照、纹理、阴影 实验 11.1 简单绘图程序一、实验内容1. 实现点、直线、三角形、矩形、多边形的绘制。
2. 必须实现的技术手段: 菜单、网格、橡皮筋、草拟技术、约束、引力域3. 可选技术手段: 拾取、旋转、形变 实验 11.2 图案变换程序一、实验内容1. 设计一些图形模式10 个以上,使程序在鼠标、键盘的控制下在图形模式之间转换。
转换过程中, 需要在屏幕上显示粒子的轨迹。
2. 可按照随机方式或顺序方式自动进行模式间的转换。
实验 11.3 游戏一、实验内容1. 从以下题目中选一,也可以自选题目 二维拼图游戏 二维迷宫游戏 二维射击游戏 贪吃蛇游戏 小人跳舞 附录A1. OpenGL 与 Windows 操作系统之间的库函数层次关系A2. OpenGL 几何原语A3. OpenGL 几何原语中顶点的指定方式A4. OpenGL 常用函数Geometric Primitives De
上一篇:
杭电DSP报告
下一篇:
对普通机床的认识