多边形的区域填充:边缘填充算法
边缘填充算法的基本思想是,逐边向右求补。可以按任意顺序处理多边形的每条边,在处理每条边时,首先求出该边与扫描线的交点,然后将每一条扫描线上交点右方的所有像素取补,多边形的所有边处理完毕之后,填充即完成
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<conio.h>
#include<graphics.h>
#define N 100000
#define Min -99999999
int n;//点的个数
int right;//图像的右边界
struct point //点的坐标
{
int x;
int y;
}point[N];
void init() //顺序输入点的坐标
{
int i;
printf("请输入点的个数: ");
scanf("%d",&n);
right=Min;
for(i=0;i<n;i++)
{
scanf("%d %d",&point[i].x,&point[i].y);
if(point[i].x>right)
right=point[i].x;
}
point[n].x=point[0].x; //首位相接
point[n].y=point[0].y;
}
void DDA(int x0,int y0,int x1,int y1)//用于绘制直线
{
int dx,dy,eps1,k;