Java边缘填充_任意画一个多边形,用边缘填充算法填充

任意画一个多边形,并用边(缘)填充算法进行填充。(多边形的顶点坐标存放在数组中,坐标值由键盘输入)

#include

#include

//边缘填充

void draw(int a,int b){

for(int i=a;i<500;i++){

if(getpixel(i,b)==0)

putpixel(i,b,WHITE);

else

putpixel(i,b,BLACK);

}

}

//DDA画线算法

void DDA(float x1,float y1,float x2,float y2){

float x,y,pp,m,n;

x=x2-x1;

y=y2-y1;

m=x1;

n=y1;

if(abs(x)>abs(y))

pp=abs(x);

else pp=abs(y);

for(int i=0;i

m=m+x/pp;

n=n+y/pp;

putpixel((int)m,(int)n,RED);

draw((int)m,(int)n);

}

}

//输入点的坐标

void input(int *p,int N){

int j;

printf("输入点的坐标:\n");

printf("第1个坐标为:\n" );

for(j=0;j<2*N;j++){

scanf("%d",&p[j]);

if(j%2==1)

printf("第%d个坐标为:\n",(j+1)/2+1);

}

}

//选择多边形的边进行填充

void select(int *p,int N){

for(int i=0;i<2*N-3;i++){

DDA((float)p[i],(float)p[i+1],(float)p[i+2],(float)p[i+3]);

i++;

}

draw(p[2],p[3]);

draw(p[6],p[7]);

}

//主函数

int main()

{

int gd=DETECT,gmode,N;

float x1,x2,y1,y2;

printf("输入多边形的个数:\n");

scanf("%d",&N);

int p[10];

input(p,N);

initgraph(&gd,&gmode,"");

drawpoly(N,p);

select(p,N);

getchar();

getchar();

closegraph();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值