1、 课 程 设 计 报 告 课程名称课程名称 计算机图形学计算机图形学 课题名称课题名称 多边形裁剪与填充多边形裁剪与填充 专专 业业 计算机科学与技术计算机科学与技术 班班 级级 学学 号号 姓姓 名名 指导教师指导教师 年年 月月 日日 一 、 设 计 内容与设计一 、 设 计 内容与设计要 求要 求 1 1设计内容:设计内容: 交互式地实现多边形的裁剪和填充。 。 2 2设计要求:设计要求: 1)窗口功能设计。 2)实现鼠标画多边形与数据存储功能。 3)实现鼠标剪裁窗口选择功能。 4)实现多边形裁剪和填充功能。 3.3.算法提示:算法提示: 多边形裁剪算法分析:多边形裁剪算法分析: 基本思
2、想是一次用窗口的一条边裁剪多边形, 窗口的一条边以及延长线构成 裁剪线,该线把平面分成两个部分:可见一侧,不可见一侧。用一条裁剪边对 多边形进行裁剪,得到一个顶点序列,作为下一条裁剪边处理过程的输入点。 对于每一条裁剪边, 只是判断点在窗口的哪一测以及求线段与裁剪边的交点 算法应随之改变。 多边形填充算法分析:多边形填充算法分析: 确定多边形所占有的最大扫描线数,得到多边形顶点的最小和最大 y 值(ymin 和 ymax) ,从 y=ymin 到 y=ymax, 每次用一条扫描进行填充。对一条扫描线填充的 过程可分为四个步骤: a.求交 b.排序 c.交点配对 d.区间填色。 二、二、进 度
3、安 排进 度 安 排 第 3 周 星期一 8:0012:00 星期二 8:0012:00 星期三 8:0012:00 星期四 8:0012:00 星期五 8:0012:00 第 4 周 星期一 8:0012:00 附: 课程设计报告装订顺序:封面、任务书、目录、正文、附件(A4 大小的图纸及程序清单) 、评分。 正文的格式:一级标题用 3 号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为 22。 正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图) ;三、主要功能 的实现(至少要有一个主要模块的流程图) ;四、程序调试;五、总结;六、附件(所有程序的原代 码,要求
4、对程序写出必要的注释) 。 正文总字数要求在 5000 字以上(不含程序原代码) 。 一、题目内容说明:一、题目内容说明: 1 1、交互式地实现多边形的裁剪和填充。、交互式地实现多边形的裁剪和填充。 2 2、功能要求:、功能要求: 1) 窗口功能设计。 2)实现鼠标画多边形与数据存储功能。 4)实现鼠标剪裁窗口选择功能。 5) 实现多边形裁剪和填充功能。 二、总体设计:二、总体设计: 本程序使用 MFC 实现多边形的裁剪和填充绘图程序。 多边形裁剪算法分析:多边形裁剪算法分析: 基本思想是一次用窗口的一条边裁剪多边形,窗口的一条边以及延长线构成裁剪线, 改线把平面分成两个部分:可见一侧,不可见
5、一侧。用一条裁剪边多多边形进行裁剪,得 到一个顶点序列,作为吓一条裁剪边处理过程的输入点。 对于每一条裁剪边,只是判断点在窗口的哪一测以及求线段与裁剪边的交点算法应随 之改变。 仅用一条裁剪边时,逐次多边形裁剪框图: 在 CGraphics 类的 CutRectangular(CRect)函数中实现对多边形的裁剪 多边形填充算法分析:多边形填充算法分析: 确定多边形所占有的最大扫描线数, 得到多边形顶点的最小和最大y值 (ymin和ymax) , 从 y=ymin 到 y=ymax, 每次用一条扫描进行填充。对一条扫描线填充的过程可分为四个步 骤: a.求交 b.排序 c.交点配对 d.区间填
6、色。在 CGraphics 类中的 FillPlogon 函数中实现 多边形的填充算法。 三、模块设计:三、模块设计: 各个程序函数的功能,参数,变量的说明: MFC 应用程序框架中类的详细解析: 1 1MainFrm:创建窗口及窗口里的菜单、工具栏、状态栏等实现交互的按钮。 1)函数 int CMainFrame:OnCreate(LPCREATESTRUCT lpCreateStruct)创建菜单、 工具栏、状栏。 2)BOOL CMainFrame:PreCreateWindow(CREATESTRUCT在指定设备中画多边形。 4、 bool FillPloyon(CDC*);填充多边形。 5、 bool InterCross(CPoint,CPoint,CPoint,CPoint,CPoint判断两条线段 是否相交。 6、 bool