




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机图形学实验报告任课教师:钱文华2016年春季学期实验:Cohen-Sutherland直线裁剪算法实验时间:2016年11月3日实验地点:信息学院2204实验目的:掌握Cohen-Sutherland直线裁剪算法程序代码:#include <stdlib.h>#include <math.h>#include <iostream>#include<stdio.h>#include <Windows.h>#include <GL/GL.h>#include <glut.h>int a,b,a1,b1,pp0
2、,pq0,pp1,pq1;void setPixel(GLint x,GLint y)glBegin(GL_POINTS);glVertex2i(x,y);glEnd();void init(void)glClearColor(1.0,1.0,1.0,0.0);glMatrixMode(GL_PROJECTION);gluOrtho2D(0.0,200.0,0.0,150.0);void LineDDA(int x0,int y0,int xEnd,int yEnd)int dx = xEnd - x0;int dy = yEnd - y0;int steps,k;float xIncreme
3、nt,yIncrement,x = x0,y = y0;if(abs(dx)>abs(dy)steps = abs(dx);elsesteps = abs(dy);xIncrement = float(dx)/float(steps);yIncrement = float(dy)/float(steps);for (k = 0;k<steps;k+)x+=xIncrement;y+=yIncrement;setPixel(x,y);/裁剪class wcPt2Dpublic:GLfloat x,y;inline GLint round(const GLfloat a)return
4、GLint(a+0.5);const GLint winLeftBitCode = 0x1;const GLint winRightBitCode = 0x2;const GLint winBottomBitCode = 0x4;const GLint winTopBitCode = 0x8;inline GLint inside(GLint code)return GLint(!code);inline GLint reject(GLint code1,GLint code2)return GLint(code1&code2);inline GLint accept(GLint co
5、de1,GLint code2)return GLint(!(code1|code2);GLubyte encode(wcPt2D pt,wcPt2D winMin,wcPt2D winMax)GLubyte code = 0x00;if(pt.x<winMin.x)code = code|winLeftBitCode;if(pt.x>winMax.x)code = code|winRightBitCode;if(pt.y<winMin.y)code = code|winBottomBitCode;if(pt.y>winMax.y)code = code|winTopB
6、itCode;return(code);void swapPts(wcPt2D *p1,wcPt2D *p2)wcPt2D tmp;tmp = *p1;*p1 = *p2;*p2 = tmp;void swapCodes(GLubyte *c1,GLubyte *c2)GLubyte tmp;tmp = *c1;*c1 = *c2;*c2 = tmp;void lineClipCohSuth(wcPt2D winMin,wcPt2D winMax,wcPt2D p1,wcPt2D p2)GLubyte code1,code2;GLint done = false,plotLine = fals
7、e;GLfloat m;int x0=0;int y0=0;int x1=0;int y1=0;while(!done)code1 = encode(p1,winMin,winMax);code2 = encode(p2,winMin,winMax);if(accept(code1,code2)done = true;plotLine = true;/简取else if(reject(code1,code2)/简弃done = true;elseif(inside(code1)swapPts(&p1,&p2);swapCodes(&code1,&code2);i
8、f(p2.x!=p1.x)m=(p2.y-p1.y)/(p2.x-p1.x);/计算kif(code1 &winLeftBitCode)p1.y+=(winMin.x-p1.x)*m;p1.x = winMax.x;else if(code1 &winBottomBitCode)if(p2.x != p1.x)p1.x+=(winMin.y - p1.y)/m;p1.y=winMin.y;else if(code1 &winTopBitCode)if(p2.x != p1.x)p1.x +=(winMax.y - p1.y)/m;p1.y = winMax.y;/els
9、e/whileif(plotLine)LineDDA(round(p1.x),round(p1.y),round(p2.x),round(p2.y);void cutwindow(int xmin,int ymin,int xmax,int ymax)LineDDA(xmin,ymin,xmin,ymax);LineDDA(xmin,ymin,xmax,ymin);LineDDA(xmin,ymax,xmax,ymax);LineDDA(xmax,ymin,xmax,ymax);void display()/DDA演示printf("DDA演示n");glClear(GL_
10、COLOR_BUFFER_BIT);glColor3f(1.0,0.0,0.0);glBegin(GL_LINES);wcPt2D min;min.x = a;min.y = b;wcPt2D max;max.x=a1;max.y=b1;wcPt2D p1;p1.x=pp0;p1.y=pq0;wcPt2D p2;p2.x=pp1;p2.y=pq1;cutwindow(min.x,min.y,max.x,max.y);/绘制窗口lineClipCohSuth(min,max,p1,p2);glEnd();glFlush();void main(int argc,char * argv)glutI
11、nit(&argc,argv);glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);glutInitWindowPosition(500,300);glutInitWindowSize(400,300);glutCreateWindow("直线裁剪");init();printf("请输入裁剪窗口左下角坐标n");scanf("%d %d",&a,&b);printf("请输入裁剪窗口右上角坐标n");scanf("%d %d",&a1,&b1);printf("请输入要裁剪的直线第一点坐标n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 怀化沅陵垃圾焚烧发电项目
- 安全技术措施施工方案
- 健康产业在线健康咨询服务平台开发与运营策略
- 科技创新经济发展形势
- 医疗健康大数据平台数据共享手册
- 登高安全作业施工方案
- 医疗机构疾病预防控制预案
- 可视化工厂控制系统手册
- 保育师中级练习测试题附答案(一)
- 妇产科护理复习试题附答案
- ECMO技术操作规范试题
- 喷漆工岗位能力培训试题含答案
- 江南大学《互换性与技术测量》2021-2022学年第一学期期末试卷
- ECharts数据可视化课件 第5章 仪表盘、漏斗图和折线树图
- 特殊作业安全管理监护人专项培训课件
- 农行竞聘高级专员述职报告范本
- 2024届全国新高考英语复习-读后续写微写作
- 陕西省咸阳市实验中学高一下学期第一次月考物理试题(原卷版)
- 上下级权责关系与沟通管理制度
- 眼部疼痛的病理生理机制
- 部编版道德与法治二年级下册第二单元备课
评论
0/150
提交评论