计算机图形学课程设计题目,《计算机图形学实验及课程设计》经典课程设计分享之圆环...

课程设计 3 圆环动态纹理演示系统

3.1 设计目标

设定光源和视点都位于z轴正向。在三维坐标系中,以原点为圆环中心,绘制动态旋转的无光照和有光照的圆环线框模型、圆环表面模型和圆环纹理模型。选择不同的纹理位图,动态添加到圆环上。详细功能要求如下:

1.使用静态切分视图,将窗口切分为左右窗格。左窗格为继承于CFormView类的表单视图类CLeftPortion,右窗格为一般视图类CTestView。

2.右窗格的三维坐标系原点位于客户区中心,x轴水平向右为正,y轴铅直向上为正, z轴垂直于屏幕指向观察者。

3.左窗格放置代表“圆环控制”、“模型分类”、“光源开关”、“明暗处理”、“纹理映射”的5个组框控件。“圆环控制”组框提供“环体半径”、“截面半径”、“表面级数”和“截面级数”4个滑动条;“模型分类”组框提供“线框”、“表面”和“纹理”3个单选按钮;“光源开关”组框提供“关”和“开”两个单选按钮;“明暗处理”组框提供“Gouraud”和“Phong”2个单选按钮;“纹理映射”组框提供1个“选择纹理”按钮和1个显示纹理缩略图的Picture静态控件,“选择纹理”按钮调用“打开文件”通用对话框,可以选择如图Ⅲ-1所示的3张不同的bmp位图对圆环进行纹理映射。默认情况下,“模型分类”组框内选择的是“线框”,“光源开关”选择的是“开”,同时禁用“明暗处理”组框和“纹理映射”组框。

a4c26d1e5885305701be709a3d33442f.png a4c26d1e5885305701be709a3d33442f.png a4c26d1e5885305701be709a3d33442f.png

(a) (b) (c)

图Ⅲ-1纹理位图

4.圆环在右窗格内以客户区中心为体心绕x轴转动。根据左窗格设置的参数值,分别绘制无光照和有光照的反走样线框模型、无光照和有光照的Gouraud或Phong插值表面模型,无光照和有光照的Phong插值纹理模型。

3.2设计效果

1.

在左窗格的“模型分类”组框内选择“线框”后,“光源开关”组框内选择“关”,右窗格内绘制的无光照消隐圆环线框模型,如图Ⅲ-2所示。

2.

在左窗格的“模型分类”组框内选择“线框”后,“光源开关”组框内选择“开”,右窗格内绘制的光照消隐圆环线框模型,如图Ⅲ-3所示。

3.

在左窗格的“模型分类”组框内选择“表面”后,“光源开关”组框内选择“开”,“明暗处理”组框内选择“Gouraud”,右窗格内绘制的光照消隐圆环表面模型,如图Ⅲ-4所示。

4.

在左窗格的“模型分类”组框内选择“表面”后,“光源开关”组框内选择“开”,“明暗处理”组框内选择“Phong”,右窗格内绘制的光照消隐圆环表面模型,如图Ⅲ-5所示。

5.

在左窗格的“模型分类”组框内选择“纹理”后,“光源开关”组框内选择“关”,“明暗处理”组框内默认为“Phong”,右窗格内绘制的无光照纹理映射圆环模型,如图Ⅲ-6所示。

6.

在左窗格的“模型分类”组框内选择“纹理”后,“光源开关”组框内选择“开”,“明暗处理”组框内默认为“Phong”,右窗格内绘制默认贴图为Ⅲ-1(a)的纹理映射圆环模型,如图Ⅲ-7所示。

7.

在左窗格的“模型分类”组框内选择“纹理”后,“光源开关”组框内选择“开”,“明暗处理”组框内默认为“Phong”,通过“纹理映射”组框内的“选择纹理”按钮更换纹理位图为图Ⅲ-1(a)或(c)后,右窗格内绘制的纹理映射圆环模型,如图Ⅲ-8和Ⅲ-9所示。

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

3.2设计效果

要求完全使用Visual

C++的MFC框架完成,CDC类的成员函数只能使用SetPixel()一个函数,圆环的线框模型使用自定义的CLine直线类绘制,圆环表面模型使用有效边表算法填充。不允许使用OpenGL或D3D图形库。

实验1 直线段的扫描转换 实验类型:设计性 实验类别:专业实验 实验目的 1. 通过实验,进一步理解直线段扫描转换的DDA算法、中点bresenham算法及bresenham算法的基本原理; 2. 掌握以上算法生成直线段的基本过程; 3. 通过编程,会在C/C++环境下完成用DDA算法、中点bresenham算法及bresenham算法对任意直线段的扫描转换。 实验设备及实验环境 计算机(每人一台) VC++6.0或其他C/C++语言程序设计环境 实验学时:2学时 实验内容 用DDA算法中点bresenham算法及bresenham算法实现任意给定两点的直线段的绘制(直线宽度和线型可自定)。 实验步骤: 1、 复习有关算法的基本原理,明确实验目的和要求; 2、 依据算法思想,绘制程序流程图; 3、 设计程序界面,要求操作方便; 4、 用C/C++语言编写源程序并调试、执行; 5、 分析实验结果 6、 对程序设计过程中出现的问题进行分析与总结; 7、 打印源程序或把源程序以文件的形式提交; 8、 按格式要求完成实验报告。 实验报告要求: 1、 各种算法的基本原理; 2、 各算法的流程图 3、 实验结果及分析(比较三种算法的特点,界面插图并注明实验条件) 4、 实验总结(含问题分析及解决方法) 实验2 圆的扫描转换 实验类型:设计性 实验类别:专业实验 实验目的 1、 通过实验,进一步理解和掌握中点bresenham画圆算法的基本原理; 2、 掌握以上算法生成圆和圆弧的基本过程; 3、 掌握在C/C++环境下完成用中点bresenham算法圆或圆弧的绘制方法。 实验设备及实验环境 计算机(每人一台) VC++6.0或其他C/C++语言程序设计环境 实验学时:2学时 实验内容 用中点(Besenham)算法实现圆或圆弧的绘制。 实验步骤 1. 复习有关圆的生成算法,明确实验目的和要求; 2. 依据算法思想,绘制程序流程图(注意圆弧生成时的输入条件); 3. 设计程序界面,要求操作方便; 4. 用C/C++语言编写源程序并调试、执行; 5. 分析实验结果 6. 对程序设计过程中出现的问题进行分析与总结; 7. 打印源程序或把源程序以文件的形式提交; 8. 按格式要求完成实验报告。 实验报告要求: 1. 分析算法的工作原理; 2. 画出算法的流程图 3. 实验结果及分析(比较圆与圆弧生成算法的不同) 4. 实验总结(含问题分析及解决方法) 实验3 多边形的区域填充 学时:2 实验类型:设计性 实验类别:专业实验 实验目的 1. 通过实验,进一步理解和掌握几种常用多边形填充算法的基本原理 2. 掌握多边形区域填充算法的基本过程 3. 掌握在C/C++环境下用多边形填充算法编程实现指定多边形的填充。 实验设备及实验环境 计算机(每人一台) VC++6.0或其他C/C++语言程序设计环境 实验学时:2学时 实验内容 用种子填充算法和扫描线填充算法等任意两种算法实现指定多边形的区域填充。 实验步骤 1. 复习有关算法,明确实验目的和要求; 2. 依据算法思想,绘制程序流程图(指定填充多边形); 3. 设计程序界面,要求操作方便; 4. 用C/C++语言编写源程序并调试、执行(最好能用动画显示填充过程); 5. 分析实验结果 6. 对程序设计过程中出现的问题进行分析与总结; 7. 打印源程序或把源程序以文件的形式提交; 8. 按格式要求完成实验报告。 实验报告要求: 1. 分析算法的工作原理; 2. 画出算法的流程图 3. 实验结果及分析(比较两种算法的不同) 4. 实验总结(含问题分析及解决方法)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值