一、实验原理
我就不多叙述了,课本上说的已经够多了,其次我自己也是借鉴别人的代码写出来的
二、上机环境
VS2010
三、代码运行效果
四、完整代码
#include <GL/glut.h>
#include <math.h>
#include <stack>
using namespace std;
#define PI 3.1415926
struct Point
{
int x;
int y;
};
int halfWidth, halfHeight;
GLubyte iPixel[3];
GLubyte borderColor[3] = {
0,0,0};
//传入两个颜色的RGB值,比较是否相同,容差为dis
bool sameColor(int r1, int g1, int b1, int r2, int g2, int b2)
{
//容差度
int dis = 10;
if (abs(r1 - r2) <= dis && abs(g1 - g2) <= dis && abs(b1 - b2) <= dis) {
return true;
}
else {
return false;
}
}
//画点
void glPoint(int x, int y, int r, int g, int b) {
glColor3ub(r, g, b);
glPointSize(1);
glBegin(GL_POINTS);
glVertex2i(x, y);
glEnd();
glFlush();
}
//种子填充算法
void zzFill(int startX, int startY, int r, int g, int b) {
stack<Point> pixelStack;
//x,y是给定的种子像素点,rgb就是要填充的颜色的RGB值
Point point = {
startX,startY };
pixelStack.push(point);
int saveX;
int xRight, xLeft;
int x, y;
//如果栈不为空
while (!pixelStack.empty()) {
//获取最顶端的元素
Point tempPoint = pixelStack.top();