.3.1 图 4.3.3 图 4.3.4 图 4.3.5 图 4.3.2 实验 4.4 绘制分形图: Sierpinski Gasket参考程序 gasket.c 图 4.4.1 gasket2.c 图 4.4.2 gasket3d.c 图 4.4.3一、实验目的 通过示例代码 熟悉分形图生成的方式。
二、实验内容1. 运行范例程序,分析源码。
注意: Sierpinski Gasket 绘制原理参考附录 B1. 图 4.4.1 图 4.4.2 图 4.4.3 实验 4.5 绘制分形图: 分形树参考程序 treeTask.c 图 4.5.1一、实验目的 了解分形树的绘制方式二、实验内容1. 绘制如图 4.5.2 单节点分形树 树枝左右偏转 45 度 0.5 分割。
2. 绘制如图 4.5.3 多节点分形树 树枝左右偏转 60 度 0.618 分割。
3. 绘制如图 4.5.4 带红色果子分形树。
4. 绘制如图 4.5.5 随机分形树,对左右偏转角度加入随机分量。
5. 实现单步绘制提示: 先按某一方向画一条直线,然后在此线段上找到一系列节点, 在每一节点处向左右偏转一定角度各画一条分枝。
节点位置和节点处所画分枝的长度可参考编程要求中的分割比例。
图 4.5.1 图 4.5.2 图 4.5.3 图 4.5.4 图 4.5.5 实验 4.6 绘制分形图: 摇摆分形树参考程序 tree-弯曲.c 图 4.6.1 FractalLeaf.exe一、实验目的 了解分形树的绘制方式二、实验内容1. 参考弯曲分形树,控制分行树的形态,实现 FractalLeaf.exe 的效果 a 键盘上下键:调整叶子伸展程度 b 键盘左右键:调整叶子弯曲程度2. 参考弯曲分形树,在弯曲分形树的基础上加入动画使树左右摇摆。
3. 在摇摆分形树的基础上加上对鼠标事件的处理 用户按下左键 动画开始 再次按下左键 动画暂停。
图 4.6.1 实验 4.7 粒子系统 参考程序 star 图 4.7.1 matrix 图 4.7.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 光照模型参考程序 chap
上一篇:
一个简单的IOCP
下一篇:
企业管理论文:电力企业管理中的绩效考核工作