资源简介
基于AEL(活化边表)的扫描线填充算法的OpenGL实现。该算法包含一个基于GLUT的事件捕获框架用于绘制多边形。

代码片段和文件信息
#include
#include
#ifdef __APPLE__
#include
#else
#include
#endif
#include
int windowHeight;
int windowWidth;
void init(void)
{
glClearColor (0000);
}
//points
short idx = -1;
struct Point{
int x;
int y;
}vertexes[65536];
int lowLine = windowHeight highLine = 0;
//AEL
struct ET{
float x;
float dX;
float dY;
struct ET *next;
};
//mouse event
int countVertex;
void mouse(int button int state int x int y){
if(button == GLUT_LEFT_BUTTON && state == GLUT_DOWN){
if(idx == -1){
idx = 1;
countVertex = 0;
int i;
for(i = 0; i < 65536; i++){
vertexes[i].x = -1;
vertexes[i].y = -1;
}
}else{
glClear (GL_COLOR_BUFFER_BIT);
glBegin(GL_LINE_LOOP);
glColor3f(0.5 0.5 0.5);
glPolygonMode(GL_FRONTGL_FILL);
//start draw
int i;
for(i = 0; i < countVertex; i++){
glVertex2i(vertexes[i].x vertexes[i].y);
}
glVertex2i(x windowHeight-y);
glEnd();
glFlush();
}
vertexes[countVertex].x = x;
vertexes[countVertex].y = windowHeight - y;
if(windowHeight - y > highLine) highLine = windowHeight - y;
if(windowHeight - y < lowLine) lowLine = windowHeight - y;
printf(“x = %d y = %d\n“ vertexes[countVertex].x vertexes[countVertex].y);
countVertex++;
printf(“countVertex = %d\n“ countVertex);
int cxcy;
GLubyte * image1 = (GLubyte *) malloc(sizeof(GLubyte) *3);
cx = x; cy = windowHeight-y;
// read infomation stroed in the front-buffer
glReadPixels(cxcy11GL_RGBGL_UNSIGNED_BYTEimage1);
printf(“image1=%d image2=%dimage3=%d\n“ image1[0]image1[1]image1[2]);
printf(“Lower boundry: %d\nTop boundry: %d\n“ lowLine highLine);
}
if(button == GLUT_RIGHT_BUTTON && state == GLUT_DOWN){
//glClear (GL_COLOR_BUFFER_BIT);
glBegin(GL_LINE_LOOP);
//glBegin(GL_POLYGON);
glColor3f (0.5 0.5 0.8);
glPolygonMode(GL_FRONTGL_FILL);
//start draw
int i;
for(i = 0; i < countVertex; i++){
glVertex2i(vertexes[i].x vertexes[i].y);
}
//glVertex2i(x y);
glEnd();
glFlush();
//start fill
//initialize ET array to be empty
struct ET *etArray = (struct ET *)malloc(windowHeight * sizeof(struct ET));
for(i = 0; i < windowHeight; i++){
etArray[i].x = 0;
etArray[i].dX = 0;
etArray[i].dY = 0;
etArray[i].next = NULL;
//etArray[i].next = 0;
}
//construct SET
printf(“Now construct SET:\n“);
for(i = 0; i < countVertex; i++){//scan vertexes
int flag;
for(flag = -1; flag <= 1; flag = flag + 2){//detect neighbou
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 469916 2011-12-12 23:28 ScanLineAlgorithm.odt
文件 249638 2011-12-12 20:41 ScanLineFillAlgorithm_page1.png
文件 206039 2011-12-12 20:40 ScanLineFillAlgorithm_page2.png
文件 1119232 2011-12-13 11:15 090834101叶轻舟_cg_ex4.doc
文件 22533 2011-12-13 08:27 Scanline_Polygon_Fill\bin\Debug\Scanline_Polygon_Fill
文件 4082 2011-12-13 08:42 Scanline_Polygon_Fill\Debug\BuildLog.htm
文件 764 2011-12-13 08:54 Scanline_Polygon_Fill\Debug\cl.command.1.tlog
文件 2312 2011-12-13 08:54 Scanline_Polygon_Fill\Debug\CL.read.1.tlog
文件 298 2011-12-13 08:54 Scanline_Polygon_Fill\Debug\CL.write.1.tlog
文件 176219 2011-12-14 14:45 Scanline_Polygon_Fill\Debug\main.exe
文件 2048 2011-12-13 08:42 Scanline_Polygon_Fill\Debug\main.exe.em
文件 237584 2011-12-14 14:45 Scanline_Polygon_Fill\Debug\main.ilk
文件 87 2011-12-13 08:54 Scanline_Polygon_Fill\Debug\main.lastbuildstate
文件 1092 2011-12-13 08:54 Scanline_Polygon_Fill\Debug\main.log
文件 17587 2011-12-14 14:45 Scanline_Polygon_Fill\Debug\main.obj
文件 344544 2011-12-14 14:44 Scanline_Polygon_Fill\Debug\main.pch
文件 443392 2011-12-14 14:45 Scanline_Polygon_Fill\Debug\main.pdb
文件 0 2011-12-13 08:54 Scanline_Polygon_Fill\Debug\main.unsuccessfulbuild
文件 27648 2011-12-13 08:54 Scanline_Polygon_Fill\Debug\vc100.idb
文件 45056 2011-12-13 08:54 Scanline_Polygon_Fill\Debug\vc100.pdb
文件 41984 2011-12-14 14:45 Scanline_Polygon_Fill\Debug\vc60.idb
文件 53248 2011-12-14 14:45 Scanline_Polygon_Fill\Debug\vc60.pdb
文件 19456 2011-12-13 08:42 Scanline_Polygon_Fill\Debug\vc80.idb
文件 36864 2011-12-13 08:42 Scanline_Polygon_Fill\Debug\vc80.pdb
文件 8527 2011-12-14 14:45 Scanline_Polygon_Fill\main.cpp
文件 3377 2011-12-13 08:32 Scanline_Polygon_Fill\main.dsp
文件 531 2011-12-13 08:41 Scanline_Polygon_Fill\main.dsw
文件 41984 2011-12-14 14:45 Scanline_Polygon_Fill\main.ncb
文件 53760 2011-12-14 14:45 Scanline_Polygon_Fill\main.opt
文件 1155 2011-12-14 14:45 Scanline_Polygon_Fill\main.plg
............此处省略22个文件信息
相关资源
- pcbtemp电流计算软件
- 信号奇异点Lipschitz指数计算
- 04741计算机网络原理知识点整理.docx(
- 2018全国大学生计算机博弈大赛 棋谱
- GBT 15532-2008 计算机软件测试规范
- 计算机图形学 边填充算法实现代码
- 电力系统潮流计算程序集合
- OpenGL参考手册
- 中深层地热单井换热数值计算
- 电脑卡西欧计算器 fx-991CN X Emulator19中
- [免费]A320可靠性计算分析
- 计算机图形学课设 画板
- 硕士计算机英文文献翻译(中英对比
- 卡西欧工程计算器模拟器Casio FX
- 20篇关于计算机的毕业设计外文翻译
- 校园网络规划与设计课程设计
- Qt Creator opengl实现四元数鼠标控制轨迹
- CAD计算板料展开插件
- 现代谱估计算法 music ESPRIT 谐波分解
- 西安电子科技大学 并行计算 霍红卫
- OpenGL文档,api大全,可直接查询函数
- opengl轮廓字体源代码
- 计算机专业基础综合知识
- MFC读三维模型obj文件
- 计算机软件工程研究生专业毕业设计
- 华北科技学院计算机系认识实习报告
- 北京邮电大学 计算机院 复试机试
- 利用OpenGL写毛笔字算法
- PIC 单片机定时器初值计算器
- 湍流k-e经验值计算器
评论
共有 条评论