计算机图形学(编码裁剪).doc_第1页
计算机图形学(编码裁剪).doc_第2页
计算机图形学(编码裁剪).doc_第3页
计算机图形学(编码裁剪).doc_第4页
计算机图形学(编码裁剪).doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西北师范大学计算机科学与工程学院学生实验报告学号专业计算机科学与技术班级师范(1)班姓名课程名称图形学课程类型实验名称实验三 编码裁剪实验目的:(1)掌握区域编码裁剪的基本算法原理; (2)实践与巩固编码裁剪的基本生成算法; (3)掌握这些算法的原理及实现; (4)编程实现编码裁剪算法,得出相应的输出图形。实验内容: 编码裁剪也叫Cohen-sutherland算法,该算法基于下述考虑:每一线段或者整个位于窗口内部,或者能够被窗口分割而使其中一部分能很快地舍弃。因此,该算法分为两步:第一步先确定一条线段是否是整个位于窗口内,若是,则取之;第二步确定是否整个位于窗口外,若是,则弃之;第三步如果第一,第二步的判断都不成立,那么就通过窗口边界所在的直线将线段分为两部分,再对每一部分进行第一,第二步的测试;、 在实际实现该算法是把窗口平面划分为9个区,如下图所示:实验代码#include#include#include #define LEFT 1#define RIGHT 2#define BOTTOM 4#define TOP 8float XL, XR, YB, YT;void encode(float x, float y, int *code) int c=0; if(xXR) c=c|RIGHT; if(yYT) c=c|TOP; *code=c;void C_S_LineClip(float x1,float y1,float x2,float y2,float xl,float xr,float yb,float yt) int code1,code2,code; float x,y; XL=xl; XR=xr; YB=yb; YT=yt; encode(x1,y1,&code1); encode(x2,y2,&code2); while(code1!=0|code2!=0) if(code1&code2)!=0) return; code=code1; if(code1=0) code=code2; if(LEFT&code)!=0) x=XL; y=y1+(y2-y1)*(XL-x1)/(x2-x1); else if(RIGHT&code)!=0) x=XR; y=y1+(y2-y1)*(XR-x1)/(x2-x1); else if(BOTTOM&code)!=0) y=YB; x=x1+(x2-x1)*(YB-y1)/(y2-y1); else if(TOP&code)!=0) y=YT; x=x1+(x2-x1)*(YT-y1)/(y2-y1); if(code=code1) x1=x; y1=y; encode(x1,y1,&code1); else x2=x; y2=y; encode(x2,y2,&code2); setcolor(5); line(int)x1,(int)y1,(int)x2,(int)y2); return;void main() int i,a100; int gdriver=VGA, gmode=VGAHI; initgraph(&gdriver,&gmode,c:tc20bgi); setcolor(6); line(100,100,500,100); line(500,100,500,400); line(500,400,100,400); line(100,400,100,100); srand(time(0); for(i=0;i100;i+) ai=rand()%600; for(i=0;i25;i+) setcolor(2);line(a4*i+0,a4*i+1,a4*i+2,a4*i+3);C_S_LineClip(a4*i+0,a4*i+1,a4*i+2,a4*i+3,100,500,100,400); getch(); closegraph();(4) 实验结果 实验总结:通过本次实验本人掌

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论