资源简介
实验二
(选做)种子填充算法
(选做)扫描线算法
代码片段和文件信息
#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
相关资源
- opengl鼠标旋转,键盘缩放和平移
- 计算机图形学大实验多边形填充扫描
- 计算机图形学复习题及答案.doc
- opengl头文件glext.h
- 计算机图形学OpengL蔡士杰等译 随书代
- OPENGL室内三维效果
- YUV420在qt5下显示
- 计算机图形学基础 作业答案 作者:
- glut工具库
- 计算机图形学 交互实体模型
- 计算机图形学-电子版实验报告.doc
- OPENGL读取显示obj模型_VS2010
- 运用Opengl和C实现一个人体面部的三维
- opengl实现分形山脉
- opengl显示网格模型
- jbarcodebean包和简单
- OpenGL扩展包实现接收鼠标滚轮输入功
- OpenGL + freeglut + glew + glm 環境配置
- openGl模拟太阳系旋转的小程序
- 计算机图形学 第四版 中文版 完整版
- 支持滚轮事件的OpenGL的glut库
- OPENGL(GLAUX+GLUT)库文件等等
- 运动的自行车OpenGL
- 时钟绘制OpenGL
- opengl几个经典程序
- Foundations Of 3D Computer Graphics (高清P
- OpenGL图形绘制.doc
- glut.lib glut32.lib opengl.lib opengl32.lib gl
- openGl绘制茶壶纹理
- opengl math3d
评论
共有 条评论