资源简介
实验二
(选做)种子填充算法
(选做)扫描线算法

代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef float Color[3];
int ncount=0;
int numX[100]numY[100];
void init(void)
{
glClearColor(0000.0);//清除当前所有颜色
glMatrixMode(GL_PROJECTION);//投影模型
gluOrtho2D(05000500);//二维投影,参数越大,直线越小
}
//获取一点像素的颜色
void GetPixel(GLint x GLint yColor color)
{
glReadPixels(xy11GL_RGBGL_FLOATcolor);
}
//画像素点
void SetPixel(GLint x GLint y)
{
glBegin(GL_POINTS);
glVertex2i(x y);
glEnd();
}
//比较颜色是否相等
bool compare(Color c1Color c2)
{
return (fabs(c1[0]-c2[0])<0.001 &&fabs(c1[1]-c2[1])<0.001 && fabs(c1[2]-c2[2])<0.001) ;
}
void FloodFill4(int xint yColor oldcolorColor newcolor)
{
Color color;
GetPixel(xycolor);
if(compare(coloroldcolor))
{
SetPixel(xy);
FloodFill4(xy+1oldcolornewcolor);
FloodFill4(xy-1oldcolornewcolor);
FloodFill4(x-1yoldcolornewcolor);
FloodFill4(x+1yoldcolornewcolor);
}
}
//绘制填充多边形
void drawPolygon()
{
int i;
glBegin(GL_POLYGON);
for(i=0;i {
cout< glVertex2i(numX[i]numY[i]);
}
// glVertex2i(100100);
// glVertex2i(200100);
// glVertex2i(200200);
// glVertex2i(100200);
glEnd();
}
void display()
{
/*
* glClearColor表示清除颜色设为黑色
* glclear表示实际完成了把整个窗口清除为黑色的任务
*/
Color oldcolor={1.00.00.0};//红色
Color newcolor={0.01.00.0};//绿色
glClear(GL_COLOR_BUFFER_BIT);//清除缓冲器颜色
glColor3fv(oldcolor);//设置画笔颜色
drawPolygon();
// glPointSize(5);//设置点像素大小
glColor3fv(newcolor);//设置画笔颜色
FloodFill4(150150oldcolornewcolor);
glFlush();//刷新缓冲
}
int main(int argcchar** argv)
{
string filenameoneline;
char charline[10];
char *p;
cout << “请输入含有多边形坐标点文件路径“ << endl;
cin >> filename;
ifstream infile(filename.c_str());//读取文件
while(getline(infileoneline))//读取一行
{
strcpy(charlineoneline.c_str());//string转换为char[]
p=strtok(charline““);//以分割字符串
numX[ncount]=atoi(p);//字符串转换整数
p=strtok(NULL““);//strtok是静态函数
numY[ncount]=atoi(p);
ncount++;
// cout< }
glutInit(&argcargv);//从main函数传递参数
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);//设置显示模式,单缓冲,RGB
glutInitWindowPosition(00);//窗口位置
glutInitWindowSize(500500);//窗口大小
glutCreateWindow(“FloodFill4“);//窗口标题
init();//自定义初始化函数
glutDisplayFunc(display); //渲染函数
glutMainLoop(); //循环消息机制
return 0;
}
/*
*测试数据
*100100
*200100
*200200
*100300
*50200
*/
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 948236 2014-11-25 17:34 FloodFill4\bin\Debug\FloodFill4.exe
文件 1493 2014-11-25 10:49 FloodFill4\FloodFill4.cbp
文件 5907 2014-11-25 17:35 FloodFill4\FloodFill4.depend
文件 400 2014-11-25 18:38 FloodFill4\FloodFill4.layout
文件 3089 2014-11-25 19:29 FloodFill4\main.cpp
文件 41010 2014-11-25 17:34 FloodFill4\obj\Debug\main.o
目录 0 2014-12-20 12:50 FloodFill4\bin\Debug
目录 0 2014-12-20 12:50 FloodFill4\obj\Debug
目录 0 2014-12-20 12:50 FloodFill4\bin
目录 0 2014-12-20 12:50 FloodFill4\obj
目录 0 2014-12-20 12:50 FloodFill4
----------- --------- ---------- ----- ----
1000135 11
- 上一篇:东南大学微机原理纯dos界面下的中断实验报告
- 下一篇:完整的仓库管理系统VFP
相关资源
- 上海交大计算机图形学课程视频31集
- 计算机图形学 边填充算法实现代码
- OpenGL参考手册
- 计算机图形学课设 画板
- Qt Creator opengl实现四元数鼠标控制轨迹
- OpenGL文档,api大全,可直接查询函数
- opengl轮廓字体源代码
- MFC读三维模型obj文件
- 利用OpenGL写毛笔字算法
- MFC中OpenGL面和体的绘制以及动画效果
- 基于OPENGL的光线跟踪源代码368758
- VC 实现三维旋转(源码)
- 简易绘图程序(计算机图形学课程设
- 自编用openGL实现3D分形树,分形山
- OpenGL球形贴图自旋程序
- OpenGL导入贴图的Texture类
- 计算机图形学(openGL)代码
- 图形学集成程序dda、中点算法、多边
- 计算机图形实验(哈尔滨工程大学)
- 用OpenGL开发的机械臂运动仿真程序(
- OpenGL-3D坦克模拟
- OPENGL实现世界上最小的3D游戏
- VS2012OpenGL配置所需要的全部libdllh文件
- 基于OpenGL的仿蝗虫机器人三维动态仿
- 计算机图形学-全.rar
- 图形学 - OpenGL实现3种三维茶壶显示源
- opengl程序-会跳舞的骷髅
- opengl实现三维网格光顺Laplacian算法
- opengl——爆炸
- OpenGL三维地形建模
评论
共有 条评论