荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: playboy (为了钱,努力!), 信区: Program
标 题: 多边形裁剪
发信站: BBS 荔园晨风站 (Wed Jan 12 08:47:01 2000), 转信
#include<graphics.h>
#include<stdlib.h>
#include <conio.h>
#include <stdio.h>
#define LEFT 1
#define RIGHT 2
#define BOTTOM 4
#define TOP 8
#define ML 200
#define MR 400
#define MB 100
#define MT 400
#define Esc 27
#define Speed 8
#define Dnum 6
#define Colors BLUE
int c_s_draw(int [],int);
int c_s_line(int *,int *,int *,int *,int );
int draws(int *,int);
void main()
{
int driver=DETECT,mode;
char ch=0;
int st;
int cdraw[Dnum*2]={230,250,300,150,350,200,325,300,280,350,270,255};
initgraph(&driver,&mode,"F:\\TURBOC3");
setcolor(GREEN);
rectangle(ML-1,MT+1,MR+1,MB-1);
setcolor(Colors);
c_s_draw(cdraw,Dnum);
while(ch!=Esc)
{
switch(ch)
{
case 0x48:setcolor(BLACK);
c_s_draw(cdraw,Dnum);
setcolor(Colors);
for(st=0;st<Dnum;st++)cdraw[st*2+1]-=Speed;
c_s_draw(cdraw,Dnum);
break;
case 0x50:setcolor(BLACK);
c_s_draw(cdraw,Dnum);
setcolor(Colors);
for(st=0;st<Dnum;st++)cdraw[st*2+1]+=Speed;
c_s_draw(cdraw,Dnum);
break;
case 0x4b:setcolor(BLACK);
c_s_draw(cdraw,Dnum);
setcolor(Colors);
for(st=0;st<Dnum;st++)cdraw[st*2]-=Speed;
c_s_draw(cdraw,Dnum);
break;
case 0x4d:setcolor(BLACK);
c_s_draw(cdraw,Dnum);
setcolor(Colors);
for(st=0;st<Dnum;st++)cdraw[st*2]+=Speed;
c_s_draw(cdraw,Dnum);
break;
}
ch=getch();
}
closegraph();
}
int encode(int x,int y)
{
int c=0;
if(x<ML)c|=LEFT;
else if(x>MR)c|=RIGHT;
if(y<MB)c|=BOTTOM;
else if(y>MT)c|=TOP;
return c;
}
int c_s_draw(int cdraw[],int num)
{
int *cdraws=(int*)malloc(sizeof(int)*num*4);
int *cdraw2=(int*)malloc(sizeof(int {
x=ML;
y=*y1+(float)(*y2-*y1)*(ML-*x1)/(*x2-*x1);
}
break;
case RIGHT : if(c&RIGHT)
{
x=MR;
y=*y1+(float)(*y2-*y1)*(MR-*x1)/(*x2-*x1);
}
break;
case BOTTOM: if(c&BOTTOM)
{
x=*x1+(float)(*x2-*x1)*(MB-*y1)/(*y2-*y1);
y=MB;
}
break;
case TOP : if(c&TOP)
{
x=*x1+(float)(*x2-*x1)*(MT-*y1)/(*y2-*y1);
y=MT;
}
break;
}
if(c==c1){
*x1=(int)x+0.5;
*y1=(int)y+0.5;
}
else
{
*x2=(int)x+0.5;
*y2=(int)y+0.5;
}
retb=c_s_line(x1,y1,x2,y2,direction);
}
return retb;
}
--
※ 来源:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.1.90]
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店