计算机图形学实验四 :裁剪 下载本文

内容发布更新时间 : 2024/12/31 7:07:15星期一 下面是文章的全部内容请认真阅读。

贵州大学实验报告

学院:计算机科学与技术 专业: 计算机科学与技术 班级:计科131

姓名 实验时间 学号 指导教师 黄初华 实验组 成绩 实验项目名称 直线裁剪 实验目的 实现一个直线裁减算法 实验要求 对于设计性实验,应根据“由学生自行设计实验方案并加以实现的实验”内涵要求,一、实验目的 掌握常用的裁减及消隐算法:直线的裁剪 注意省略由学生自主设计的“实验方案”. 根据本实验的特点、要求和具体条件,采用“以学生自主训练为主的开放模式组织教学,还是采用集中授课形式”,须加以明确。 直线裁减 Cohen-SutherLand算法(编码算法) 算法原理(递归的裁剪过程): 对于每条线段P1P2分为三种情况处理: (1)若P1P2完全在窗口内,则显示该线段P1P2。 实(2)若PP明显在窗口外,则丢弃该线段。 12验(3)若线段不满足(1)或(2)的条件,则在交点处把线段分为两段。其中一段完全在窗口外,可弃之。然后对另一段重复上述处理。 原为快速判断,采用如下编码方法: 理 由窗口四条边所在直线把二维平面1010 1000 1001 分成9个区域(右图),每个区域赋予一个四位编码:CtCbCrCl(上下右左);直线的端点都按其所处区域赋予相应的区域码,用来标识出端点相对于裁剪矩形边界的位置。 各位编码含义: 0001 0000 0010 0101 0100 0110 上:if y>ymax,Ct=1,else, 0; 下:if yxmax,Cr=1,else, 0; 左:if x

特别适用二种情形:大窗口场合;窗口特别小场合(光标拾取图形,光标看作小的裁剪窗口)。 Cohen-Sutherland与中点法在区域码测试阶段能以位运算方式高效率地进行,因而当大多数线段能够简单的取舍时,效率较好。 实五、实验条件: 验 环 境 硬件平台:PC 软件(推荐):Windows平台,Visualstdio2013,opengl 六、实验步骤 1. 掌握算法原理; 实2. 依据算法,编写源程序并进行调试; 验3. 对运行结果进行保存与分析; 步4. 把源程序以文件的形式提交; 骤 5. 按格式书写实验报告。 #include\ #include #include #include #pragma comment( lib, \ ) #pragma comment( lib, \ ) #pragma comment( lib, \ ) #define LEFT_EDGE 1 #define RIGHT_EDGE 2 #define BOTTOM_EDGE 4 #define TOP_EDGE 8 static int times = 1; //画从(x0,y0)到(x1,y1)的直线 void LineGL(int x0, int y0, int x1, int y1) { glBegin(GL_LINES); glColor3f(1.0f, 0.0f, 0.0f); glVertex2f(x0, y0); - 3 -

实验内容