第一范文网 - 专业文章范例文档资料分享平台

计算机图形学实验C++代码

来源:用户分享 时间:2025/6/7 23:09:24 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

glColor3f(0.9,1.0,0.0); //设置直线的颜色红色 glBegin(GL_POINTS);

//扫描并建立NET表,注:构建一个图形 for(i=0;i<=MaxY;i++) {

for(int j=0;j

if(polypoint[j].y==i)

{ //一个点跟前面的一个点形成一条线段,跟后面的点也形成线段

if(polypoint[(j-1+POINTNUM)%POINTNUM].y>polypoint[j].y) { }

if(polypoint[(j+1+POINTNUM)%POINTNUM].y>polypoint[j].y) {

NET *p=new NET; p->x=polypoint[j].x;

p->ymax=polypoint[(j+1+POINTNUM)%POINTNUM].y;

p->dx=(polypoint[(j+1+POINTNUM)%POINTNUM].x-polypoint[j].x)/(polypoint NET *p=new NET; p->x=polypoint[j].x;

p->ymax=polypoint[(j-1+POINTNUM)%POINTNUM].y;

p->dx=(polypoint[(j-1+POINTNUM)%POINTNUM].x-polypoint[j].x)/(polypoint[(j-

1+POINTNUM)%POINTNUM].y-polypoint[j].y);

p->next=pNET[i]->next; pNET[i]->next=p;

}

}

}

[(j+1+POINTNUM)%POINTNUM].y-polypoint[j].y);

p->next=pNET[i]->next; pNET[i]->next=p;

for(i=0;i<=MaxY;i++) {

//计算新的交点x,更新AET NET *p=pAET->next; while(p) { }

AET *tq=pAET; p=pAET->next; tq->next=NULL; while(p) {

while(tq->next && p->x >= tq->next->x)

9

p->x=p->x + p->dx; p=p->next;

}

tq=tq->next;

NET *s=p->next; p->next=tq->next; tq->next=p; p=s; tq=pAET;

//(改进算法)先从AET表中删除ymax==i的结点* AET *q=pAET; p=q->next; while(p) { }

//将NET中的新点加入AET,并用插入法按X值递增排序 p=pNET[i]->next; q=pAET; while(p) { }

//配对填充颜色

while(q->next && p->x >= q->next->x)

q=q->next; NET *s=p->next; p->next=q->next; q->next=p; p=s; q=pAET; if(p->ymax==i) { } else { }

q=q->next; p=q->next; q->next=p->next; delete p; p=q->next;

p=pAET->next; while(p && p->next) { }

10

for(float j=p->x;j<=p->next->x;j++)

glVertex2i(static_cast(j),i);

p=p->next->next;//考虑端点情况

}

void init(void)

{glClearColor(1.0,1.0,1.0,0.0); //窗口的背景颜色设置为白色 glMatrixMode(GL_PROJECTION); gluOrtho2D(0.0,600.0,0.0,450.0); }

void lineSegment(void) { }

void main(int argc,char* argv) { }

glutInit(&argc,&argv); //I初始化GLUT.

glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); //设置显示模式:单个缓存和使用RGB模型 glutInitWindowPosition(50,100); //设置窗口的顶部和左边位置 glutInitWindowSize(400,300); //设置窗口的高度和宽度 glutCreateWindow(\扫描线填充算法\); //创建显示窗口 init(); //调用初始化过程 glutDisplayFunc(PolyScan); //图形的定义传递

glutMainLoop(); //显示所有的图形并等待 glClear(GL_COLOR_BUFFER_BIT); //赋值的窗口显示. glColor3f(0.0,1.0,0.0); //设置直线的颜色红色 glBegin(GL_LINES);

glVertex2i(180,15); //Specify line-segment geometry. glVertex2i(10,145); glEnd();

glFlush(); //Process all OpenGL routines as quickly as possible. } glEnd(); glFlush();

11

搜索更多关于: 计算机图形学实验C++代码 的文档
计算机图形学实验C++代码.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c12x279rs3u7b8vd53zjs_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top