CAD教程 行业资讯 3D模型下载 Pro/E教程 CAD书店 软件下载 联系我们
技术资料 CAD招聘 发布招聘 CAD问答 设计竞赛 CAD认证 北京CAD培训
视频教程 PS教程 CAD图纸 图书推荐 Solidworks教程 CAD培训 CAD软件商

 最新视频教程Pro/ENGINEER Wildfire2.0 工业设计实例视频教程 (全套免费在线学习)   AutoCAD视频教程每日更新
 
首页 > CAD在线问答 > 计算机图形学

计算机图形学算法处理线段,急

2010-10-06 51自学网



Cohen-SutherLand的线段裁剪算法,在tc上运行现在已有程序#include<graphics.h>#define LEFT 1#define RIGHT 2#define BOTTOM 4#define TOP 8#define XL 100#define XR 400#define YB 100#define YT 400void encode();void C_S_LineCLip(x1, y1, x2, y2)float x1, y1, x2, y2;/*(x1,y1)与(x2,y2)是线段端点坐标,其它四个参数分别定义窗口的左,下,右,上边界*/{int code1,code2,code;float x,y;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(x,y,&code1);}else{x2=x;y2=y;encode(x,y,&code2);}}line((int)x1,(int)y1,(int)x2,(int)y2);return;}void encode(x, y, code)float x, y;int *code;{ int c; c=0; if(x<XL) c=c | LEFT; else if (x>XR)c=c | RIGHT; if(y<YB) c=c | BOTTOM; else if(y>YT)c=c | TOP; *code=c; return;}main(){int graphdriver=VGA;int graphmode=VGAHI;float px1,py1,px2,py2;initgraph(&graphdriver,&graphmode,"c://turboc2");rectangle(XL,YB,XR,YT);printf("Please input two end points of the line that will be cilped: ");scanf("%f%f%f%f",&px1,&py1,&px2,&py2);C_S_LineCLip(px1, py1, px2, py2);getch();closegraph();}这个程序是直接显示处理完的图形现在想加上 能自己输入矩形剪裁窗口的大小,并且能够看到没剪裁的时候的图形,然后一回车就是剪裁后的图形,应该怎么改?在线等,急需!
0




 

 

计算机图形学试题,请帮忙解答,奖励积分50
计算机图形学的题:已知起点A(16,-5)和终点B(-4,8),用DDA法在A和B之间生成一段直线
我来回答 共有条 回答
用户名: 密码:
验证码: 匿名发表
| AutoCAD | Pro/E | UG | 3Dmax | catia | solidworks | maya | photoshop | 模具设计 | 有限元 | matlab | 计算机图形学 | 室内设计 |