计算机图形学-裁减算法_第1页
计算机图形学-裁减算法_第2页
计算机图形学-裁减算法_第3页
计算机图形学-裁减算法_第4页
计算机图形学-裁减算法_第5页
全文预览已结束

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上精选优质文档-倾情为你奉上专心-专注-专业专心-专注-专业精选优质文档-倾情为你奉上专心-专注-专业Cohen-Sutherland裁减算法#define LEFT 1#define RIGHT 2#define BOTTOM 4#define TOP 8int encode(float x,float y) int c=0; if(xXR) c|=RIGHT; if(xYB) c|=BOTTOM; if(xYT) c|=TOP; retrun c;void CS_LineClip(x1,y1,x2,y2,XL,XR,YB,YT)float x1,y1,x2,y2,X

2、L,XR,YB,YT;/(x1,y1)(x2,y2)为线段的端点坐标,其他四个参数定义窗口的边界 int code1,code2,code; code1=encode(x1,y1); code2=encode(x2,y2); while(code1!=0 |code2!=0) /都为0,在窗口内,则取,直接绘制此直线. if(code1&code2 !=0) return; /与运算不为0,在窗口外,则弃, 不需处理 code = code1; if(code1=0) code = code2; /选择窗口外的端点 if(LEFT&code !=0) /该位编码不为0,与对应窗口边界求交 x=

3、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; code1 =encode(x,y);else x2=x;y2=y; c

4、ode2 =encode(x,y); displayline(x1,y1,x2,y2);动画演示:动画演示:Liang - Barskey算法void LB_LineClip(x1,y1,x2,y2,XL,XR,YB,YT)float x1,y1,x2,y2,XL,XR,YB,YT; float dx,dy,u1,u2; ul=0; u2=1; dx =x2-x1; dy =y2-y1; if(ClipT(-dx,x1-Xl,&u1,&u2) if(ClipT(dx,XR-x1, &u1,&u2) if(ClipT(-dy,y1-YB, &u1,&u2) if(ClipT(dy,YT-y1, &u1,&u2) displayline(x1+u1*dx,y1+u1*dy, x1+u2*dx,y1+u2*dy) return; bool ClipT(p,q,u1,u2)float p,q,*u1,*u2; float r; if(p*u2)return FALSE; else if(r*u1) *u1=r; return TRUE; else if(p0) r=q/p; if(r*u1) return FALSE

温馨提示

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

评论

0/150

提交评论