已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 实验 实验 直线段的裁剪直线段的裁剪 姓名 龙泽 学号 20141090068 指导教师 吴昊 实验内容 实验内容 采用 Liang Barsky 算法对直线段进行裁剪 实验设计 实验设计 本次实验采用的是 Liang Barsky 算法 根据这个算法需先定义直线 段的起点坐标 x1 y1 终点坐标 x2 y2 以及裁剪框 矩形 的左边界 wxl 右边界 wxr 上边界 wyt 下边界 wyb 如 void Line Clipping float x1 float y1 float x2 float y2 float Wxl float Wxr float Wyt float Wyb 再结合鼠标 mouse 函数 实现点击鼠标左键显示矩形框和待裁剪的直线段 点 击鼠标右键进行裁剪并显示裁剪过后的直线段 最终显示出来 由于在 Line Clipping 函数下用到了 line 函数 所以我在上面定义了个 line 函数来绘制直线段 绘制直线段所采用的算法为 Bresenham 算法 程序代码 程序代码 include include 初始化 OpenGL 场景 void myinit void glClearColor 1 1 1 0 将背景置成白色 glMatrixMode GL PROJECTION gluOrtho2D 0 500 0 500 设置投影变换 使用正交投影 void setPixel int x int y 在指定位置 x y 绘制点图元 glBegin GL POINTS 2 glVertex2i x y 绘制点的坐标 glEnd 绘制直线的方法 void line int x1 int y1 int x2 int y2 输入线段的两个端点坐标和画线 颜色 int x y dx dy s1 s2 p temp interchange i x x1 y y1 设置象素坐标初值 dx abs x2 x1 dy abs y2 y1 分别计算之间的差值 if x2 x1 s1 1 else s1 1 if y2 y1 s2 1 else s2 1 判断起点和终点的位置 以确定是该加一个单位还是该减 一个单位 if dy dx y 方向增长快 将总步数设为 y2 y1 每一步的 y 值为 y y 1 3 temp dx dx dy dy temp interchange 1 else interchange 0 x 方向增长快 将总步数设为 x2 x1 每一步的 x 值 为 x x 1 p 2 dy dx 设置初始误差判别值 for i 1 i 0 if interchange 0 y y s2 else x x 1 p p 2 dx if interchange 0 x x s1 else y y s2 4 p p 2 dy Liang Barsky 算法 int Clip Top float p float q float if pumin return 0 umin umax 的情况 弃之 else if r umax umax r else if p 0 0 线段从裁剪窗口内部延伸到外部 取最小值 r 并更新 umin r q p if rumax 的情况 弃之 else if r umin umin r else p 0 时 线段平行于裁剪窗口 if q 0 0 return 0 return 1 void Line Clipping float x1 float y1 float x2 float y2 float Wxl float Wxr float Wyt float Wyb 定义线段的坐标和矩形的四条边界 5 float dx x2 x1 dy y2 y1 umax 0 0 umin 1 0 比较左 右边界 获得最大的 umax if Clip Top dx x1 Wxl umax umin 左边界 if Clip Top dx Wxr x1 umax umin 右边界 比较下 上边界 获得最小的 umin if Clip Top dy y1 Wyb umax umin 下边界 if Clip Top dy Wyt y1 umax umin 上边界 line int x1 umax dx int y1 umax dy int x1 umin dx int y1 umin dy void display void 需要点击鼠标显示 所以这里的 display 函数下为空 鼠标响应函数 控制当鼠标接收到不同的用户操作时将要执行的后续命令 void mouse int button int state int x int y Float x1 70 y1 480 x2 480 y2 80 Wxl 100 Wxr 400 Wyt 400 Wyb 200 给 定直线和矩形的各项参数数值 switch button case GLUT LEFT BUTTON if state GLUT DOWN 如果按下鼠标左键 则显示矩形和待裁 剪的直线段 glClear GL COLOR BUFFER BIT GL DEPTH BUFFER BIT 清除缓存 6 glColor3f 0 0 0 给定矩形线条的颜色 line Wxl Wyt Wxr Wyt 定义矩形的上边界 line Wxl Wyb Wxr Wyb 定义矩形的下边界 line Wxr Wyb Wxr Wyt 定义矩形的右边界 line Wxl Wyb Wxl Wyt 定义矩形的左边界 glColor3f 0 0 255 给定直线的颜色 line x1 y1 x2 y2 给定直线的起点坐标和终点坐标 glFlush 绘图结束 break case GLUT MIDDLE BUTTON case GLUT RIGHT BUTTON if state GLUT DOWN 如果按下鼠标右键 则显示裁剪过后的直 线段 glClear GL COLOR BUFFER BIT GL DEPTH BUFFER BIT 清除 缓存 glColor3f 0 0 0 给定剪裁后的矩形的颜色 line Wxl Wyt Wxr Wyt line Wxl Wyb Wxr Wyb line Wxr Wyb Wxr Wyt line Wxl Wyb Wxl Wyt 分别给定矩形的四条边的坐标 glColor3f 255 0 0 给定剪裁后的直线的颜色 Line Clipping x1 y1 x2 y2 Wxl Wxr Wyt Wyb 调用上 面的 Line Clipping 函数进行裁剪 glFlush 绘图结束 default 7 break int main int argc char argv glutInit 初始化 glut glutInitDisplayMode GLUT SINGLE GLUT RGB 初始化显示模式 采用单缓存 RGB 彩色系统 glutInitWindowSize 500 500 初始化窗口大小 glutInitWindowPosition 100 100 初始化窗口位置 glutCreateWindow 直线的裁剪 创
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年广西经济职业学院单招综合素质考试必刷测试卷带答案解析
- 2026年哈尔滨职业技术学院单招职业适应性考试题库带答案解析
- 2026年宝鸡职业技术学院单招职业倾向性测试必刷测试卷带答案解析
- 2026年江西洪州职业学院单招职业技能考试题库带答案解析
- 2026年南充电影工业职业学院单招职业技能考试题库带答案解析
- 2026年攀枝花攀西职业学院单招综合素质考试必刷测试卷及答案解析(夺冠系列)
- 2026年岳阳职业技术学院单招职业倾向性测试题库带答案解析
- 2026年成都航空职业技术学院单招职业倾向性考试必刷测试卷及答案解析(夺冠系列)
- 2026年江西交通职业技术学院单招职业技能测试必刷测试卷及答案解析(名师系列)
- 2026年宁波幼儿师范高等专科学校单招综合素质考试必刷测试卷及答案解析(夺冠系列)
- GB/T 21198.6-2007贵金属合金首饰中贵金属含量的测定ICP光谱法第6部分:差减法
- 有限空间安全教育培训制度
- 第4章逆向物流网络规划与设计课件
- 过敏性休克的急救(共31张PPT)
- 国外汉语课堂教学案例课件
- DB32T 3753-2020 江苏省装配式建筑综合评定标准
- 二尖瓣峡部的消融和验证
- 科研项目申请书撰写技巧与形式审查要点(51张)课件
- 英语presentation-墨西哥亡灵节
- 专利布局PPT幻灯片课件(PPT 33页)
- GB∕T 40853.1-2021 高频感性元件 电特性及其测量方法 第1部分:纳亨级片
评论
0/150
提交评论