没有合适的资源?快使用搜索试试~ 我知道了~
首页多边形填充 计算机图形学 程序代码
资源详情
资源评论
资源推荐

#include "graphics.h"
#include "malloc.h"
#include "math.h"
#define MAX 200
struct node{
int deltay;
float x,deltax;
struct node *next;
};
struct node *polygon[MAX];
bresenham_line(int xb,int yb,int xe,int ye,int color,int x0,int y0)
{
int x,y,dx,dy,p,i;
int temp,inc;
dx = xe-xb;
dy = ye-yb;
if (dx*dy>0) inc=1; else inc=-1;
if (abs(dx)>abs(dy)){
if (dx<0){
temp=xe;xe=xb;xb=temp;
temp=ye;ye=yb;yb=temp;
dx=-dx; dy=-dy;
}
putpixel(x0+xb,y0-yb,color);
p=2*inc*dy-dx; y=yb;
for(x=xb+1; x<=xe; x++){
if (p>0) y+=inc;
putpixel(x0+x,y0-y,color);
if (p>0) p=p+2*inc*dy-2*dx; else p=p+2*inc*dy;
}
}
else{
if (dy<0){
temp=xe;xe=xb;xb=temp;
temp=ye;ye=yb;yb=temp;
dx=-dx; dy=-dy;
}
putpixel(x0+xb,y0-yb,color);
p=2*inc*dx+dy; x=xb;
for(y=yb+1; y<=ye; y++){
if (p>0) x=x+inc;
putpixel(x0+x,y0-y,color);
if (p>0) p=p+2*inc*dx-2*dy; else p=p+2*inc*dx;
}
}
}
int draw_polygon(int a[][2],int originx,int originy,int color)
{
int n;
for (n=1;;n++){
bresenham_line(a[n-1][0],a[n-1][1],a[n][0],a[n][1],color,originx,originy);
if ((a[n][0]==a[0][0])&&(a[n][1]==a[0][1])) return n-1;
}
}

















安全验证
文档复制为VIP权益,开通VIP直接复制

评论3