欢迎来到天天文库
浏览记录
ID:30860893
大小:417.74 KB
页数:22页
时间:2019-01-04
《计算机图形学多边形裁剪与填充课程设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、课程设计报告课程名称.课题名称专业计算机科学与技术班级学号指导教师刘长松曹炎炎湖南工程学院课程设计任务书课程名称计算机图形学课题多边形裁剪与填充专业班级学生姓名学号指导老师刘长松曹炎炎审批任务书下达日期年月曰任务完成日期年月曰一、设计内容与设计要求1.设计内容:交互式地实现多边形的裁剪和填充。。2.设计要求:1)窗口功能设计。2)实现鼠标画多边形与数据存储功能。3)实现鼠标剪裁窗口选择功能。4)实现多边形裁剪和填充功能。3•算法提示:多边形裁剪算法分析:基本思想是一次用窗口的一条边裁剪多边形,窗口的一条边以及延长线构成裁剪线,该线
2、把平面分成两个部分:可见一侧,不可见一侧。用-•条裁剪边对多边形进行裁剪,得到一个顶点序列,作为下一条裁剪边处理过程的输入点。对于每一条裁剪边,只是判断点在窗口的哪一测以及求线段与裁剪边的交点算法应随之改变。多边形填充算法分析:确定多边形所占有的最人扫描线数,得到多边形顶点的最小和最人y值(ymin和ymax),从y=ymin到y=ymax,每次用一条扫描进行填充。对一条扫描线填充的过程可分为四个步骤:a.求交b.排序c.交点配对d.区间填色。二进度安排第3周星期一8:00—12:00星期二8:00—12:00星期三8:00—12
3、:00星期四8:00—12:00星期五8:00—12:00第4周星期一8:00—12:00附:课程设计报告装订顺序:封面、任务书、目录、正文、附件(A4大小的图纸及程序清单)、评分。正文的格式:一级标题用3号黑体、二级标题用四号宋体加粗,正文用小四号宋体;行距为22o正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。正文总字数要求在5000字以上(不含程序原代码)。一.题目内
4、容说明:1、交互式地实现多边形的裁剪和填充。2、功能要求:1)窗口功能设计。2)实现鼠标画多边形与数据存储功能。4)实现鼠标剪裁窗口选择功能。5)实现多边形裁剪和填充功能。二.总体设计:本程序使用MFC实现多边形的裁剪和填充绘图程序。多边形裁剪算法分析:基本思想是一次用窗口的一条边裁剪多边形,窗口的一条边以及延长线构成裁剪线,改线把平面分成两个部分:可见一侧,不可见一侧。用一条裁剪边多多边形进行裁剪,得到一个顶点序列,作为吓一条裁剪边处理过程的输入点。对于每一条裁剪边,只是判断点在窗口的哪一测以及求线段与裁剪边的交点算法应随之改变
5、。仅用一条裁剪边吋,逐次多边形裁剪框图:(结束;在CGraphics类的CutRectangular(CRect)函数中实现对多边形的裁剪多边形填充算法分析:确定多边形所占有的最大扫描线数,得到多边形顶点的最小和最大y值(ymin和ymax),从y二yniin到y^ymax,每次用一条扫描进行填充。对一条扫描线填充的过程可分为四个步骤:a.求交b.排序c.交点配对d.区间填色。在CGraphics类中的FillPlogon函数中实现多边形的填充算法。三、模块设计:各个程序函数的功能,参数,变量的说明:MFC应用程序框架中类的详细解
6、析:1・MainFrm:创建窗口及窗口里的菜单、工具栏、状态栏等实现交互的按钮。1)函数intCMainFrame::OnCreate(LPCREATESTRUCTIpCreateStruct){}创建菜单、工具栏、状栏。2)BOOLCMainFrame::PreCreateWindow(CREATESTRUCT&cs)设置窗口的大小和初始位置。2・图像裁剪View:视图,负责内存数据与用户的交互,包括数据的显示、菜单的选取,鼠标的响应。1.voidCMyView::OnLButtonDown(UINTnFlags,CPointp
7、oint){}对鼠标按下左键的响应,如果是自定义裁剪的区域操作就捕获鼠标按下的点,画裁剪区域,如果是自定义点坐标的操作就捕获鼠标的点画多边形。2.voidCMyView::OnMouseMove(UINTnFlags,CPointpoint){}对鼠标移动的响应。用捕获的点画出相应的矩形裁剪边框。画边框的时候,先用白色擦出原先的矩形边框,再用煨线画出新的举行边框3.voidCMyView::OnRButtonUp(UINTnFlags,CPointpoint){}对鼠标放开左键的相应。如果是自定义点的坐标,就获取新的初始裁减矩形范
8、围。4.voidCMyView::OnLButtonUp(UINTnFlags,CPointpoint){}对鼠标放开左键的响应5.voidCMyView::OnInitialUpdate(){}初始化裁剪区域和在窗口中画一个矩形和一个五角星。6.
此文档下载收益归作者所有