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

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

谁给我解释下这个计算机图形学多边形裁剪的程序啊

2010-10-06 51自学网



#define LEN sizeof(struct node)#include <math.h>#include<stdio.h>#include<graphics.h> struct node { int dx,dy; struct node *next; };struct node *creat(){ struct node *h,*q,*r; int p[8][2]={100,120,160,50,180,100,200,80,240,160,210,220,170,160,140,190}; int i; setcolor(12); for (i=0;i<7;i++) line(p[i][0],p[i][1],p[i+1][0],p[i+1][1]); line(p[0][0],p[0][1],p[7][0],p[7][1]); rectangle(120,200,230,70); h=NULL; for (i=0;i<8;i++) { q=(struct node *)malloc(LEN); q->dx=p[i][0]; q->dy=p[i][1]; if (h==NULL) h=q; else r->next=q; r=q; } r->next=NULL; return(h);}struct node *builx(h,x)struct node *h; int x;{int s[2],j[2];struct node *hh,*p,*r,*q;int max,min; p=h; hh=NULL; s[0]=p->dx; s[1]=p->dy; p=p->next; while (p!=NULL) { j[0]=x; j[1]=s[1]+(p->dy-s[1])*(x-s[0])/(p->dx-s[0]); max=s[0]; min=p->dx; if (s[0]<p->dx) { max=p->dx; min=s[0]; } if ((j[0]>=min)&&(j[0]<=max)) { q=(struct node *)malloc(LEN); q->dx=j[0]; q->dy=j[1]; if (hh==NULL) hh=q;else r->next=q; r=q; } if (p->dx>=x) { q=(struct node *)malloc(LEN); q->dx=p->dx; q->dy=p->dy; if (hh==NULL) hh=q; else r->next=q; r=q; } s[0]=p->dx; s[1]=p->dy; p=p->next; } p=h; j[0]=x; j[1]=s[1]+(p->dy-s[1])*(x-s[0])/(p->dx-s[0]); max=s[0]; min=p->dx; if (s[0]<p->dx) { max=p->dx; min=s[0]; } if ((j[0]>=min)&&(j[0]<=max)) { q=(struct node *)malloc(LEN); q->dx=j[0]; q->dy=j[1]; if (hh==NULL) hh=q; else r->next=q; r=q; } if (p->dx>=x) { q=(struct node *)malloc(LEN); q->dx=p->dx; q->dy=p->dy; if (hh==NULL) hh=q; else r->next=q; r=q; } r->next=NULL; return(hh); }




 

 

图形学CAD与物理
计算机图形学openGL与maya的区别
我来回答 共有条 回答
用户名: 密码:
验证码: 匿名发表
| AutoCAD | Pro/E | UG | 3Dmax | catia | solidworks | maya | photoshop | 模具设计 | 有限元 | matlab | 计算机图形学 | 室内设计 |