/***************************************************************
本程序实现区域填充功能,首先输入多边形顶点的个数,回车,
然后依次输入各顶点的坐标格式如下:100,123回车
一定要在中间用逗号隔开噢,输完最后一个点后,屏幕上会依次
画出各条边,最后填充满.
程序还不完善,比如颜色值应该用变量表示以易于修改,画多边形和求种子点
应该做成独立的函数等等,以后再做上吧,这是细节的问题
作者:曹欣
学号:2003378314
班级:计应0301
******************************************************************/
#include
<
graphics.h
>
#include < stdio.h >
#include < alloc.h >
#include < dos.h >
#include < conio.h >
// creat a stack
struct stack_node
{
int x;
int y;
struct stack_node * next;
};
typedef stack_node stack_list;
typedef stack_list * link;
link stack = 0 ;
// push an element
void push( int xx, int yy)
{
link new_node;
new_node = (stack_list * )malloc(sizeof(stack_list));
new_node -> x = xx;
new_node -> y = yy;
new_node -> next = stack;
stack = new_node;
}
// pop an element
void pop( int & xx, int & yy)
{
link top;
top = stack;
xx = stack -> x;
yy = stack -> y;
stack = stack -> next;
free(top);
}
// fill the plot
void fill( int x, int y)
{
int x0,y0,xl,xr,xlold,xrold; /* x0,y0用来标记x,y的值,xl记录x的最左值,xr记录x的最右值 */
int go = 0 ,go2 = 0 ;
int i = 0 ;
push(x,y); // 种子像素入栈
while (stack != 0 ) // 如果
#include < stdio.h >
#include < alloc.h >
#include < dos.h >
#include < conio.h >
// creat a stack
struct stack_node
{
int x;
int y;
struct stack_node * next;
};
typedef stack_node stack_list;
typedef stack_list * link;
link stack = 0 ;
// push an element
void push( int xx, int yy)
{
link new_node;
new_node = (stack_list * )malloc(sizeof(stack_list));
new_node -> x = xx;
new_node -> y = yy;
new_node -> next = stack;
stack = new_node;
}
// pop an element
void pop( int & xx, int & yy)
{
link top;
top = stack;
xx = stack -> x;
yy = stack -> y;
stack = stack -> next;
free(top);
}
// fill the plot
void fill( int x, int y)
{
int x0,y0,xl,xr,xlold,xrold; /* x0,y0用来标记x,y的值,xl记录x的最左值,xr记录x的最右值 */
int go = 0 ,go2 = 0 ;
int i = 0 ;
push(x,y); // 种子像素入栈
while (stack != 0 ) // 如果