资源简介

OpenGL实现多边形扫描转换的扫描线算法,带动画效果 实验作业,LAB3. 绘制的是五边形。

资源截图

代码片段和文件信息

// OGL1.cpp : Defines the entry point for the console application.
//

#include “stdafx.h“
#include “windows.h“
#include “time.h“
#include “stdlib.h“
#include  // Header File For The OpenGL32 Library
#include  // Header File For The GLu32 Library
#include  // Header File For The Glaux Library

#include  // Header File For The OpenGL32 tools Library

#define POINTNUM 5

void initBian();

int glColor=1;

int MaxYMinY=99999;

float urugub;


//定义结构体用于活性边表AEL和边表ET
typedef struct XET
{
float x;
float dxymax;
XET* next;
}ETAEL;
    //定义点结构体point
struct point
{
float x;
float y;
}polypoint[POINTNUM];
//polypoint[POINTNUM]={100100550150550400250650100350};
AEL *pAEL;
ET *pET[1024];

int ii;


void init (void)
{
    glClearColor (1.0 1.0 1.0 0.0);  // Set display-window color to white.
    glMatrixMode (GL_PROJECTION);       // Set projection parameters.
gluOrtho2D (0.0 200.0 0.0 200.0);
}

void ProcessColormenu(int value)
{
switch(value)
{
case 1:
glColor=1;
break;
case 2:
glColor=2;
break;
case 3:
glColor=3;
break;
case 4:
glColor=4;
break;
default:
break;
}

ii=MinY;
glutPostRedisplay();
}
void initBian()
{
//计算最高点的y坐标(扫描到此结束)
MaxY=0;
int i;
for(i=0;i {
if(polypoint[i].y>MaxY)
MaxY=polypoint[i].y;
if(polypoint[i].y MinY=polypoint[i].y;
}


//初始化ET表

for(i=0;i<=MaxY;i++)
{
pET[i]=new ET;
pET[i]->next=NULL;
}
//扫描并建立ET表
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)
{
ET *p=new ET;
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=pET[i]->next;
pET[i]->next=p;
}
if(polypoint[(j+1+POINTNUM)%POINTNUM].y>polypoint[j].y)
{
ET *p=new ET;
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=pET[i]->next;
pET[i]->next=p;
}
}
}
}
void idleSegment(void)
{
if (ii glutPostRedisplay();
Sleep(50);
}
void polySegment (void)
{
    glClear (GL_COLOR_BUFFER_BIT);  // Clear display window.

if(glColor==1)
        glColor3f (1.0 0.0 0.0);      // Set poly segment color to red.
else if(glColor==2)
glColor3f (0.0 1.0 0.0);      // Set poly segment color to green.
else if(glColor==3)
glColor3f (0.0 0.0 1.0);      // Set poly segment color to blue.
else if (glColor==4)
glColor3f(urugub);            // Set poly segment color to user settings.


    ini

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     204855  2013-04-11 15:36  Debug\OGL1.exe

     文件     238816  2013-04-11 15:36  Debug\OGL1.ilk

     文件      33489  2013-04-11 15:36  Debug\OGL1.obj

     文件     203792  2013-04-11 15:06  Debug\OGL1.pch

     文件     508928  2013-04-11 15:36  Debug\OGL1.pdb

     文件       1937  2013-04-11 15:06  Debug\StdAfx.obj

     文件      82944  2013-04-11 15:38  Debug\vc60.idb

     文件     126976  2013-04-11 15:36  Debug\vc60.pdb

     文件    1441792  2013-04-11 13:42  ipch\ogl1-24eb74ed\ogl1-eb07cfe9.ipch

     文件       5673  2013-04-11 15:36  OGL1.cpp

     文件       4694  2012-02-21 17:58  OGL1.dsp

     文件        531  2012-02-21 17:58  OGL1.dsw

     文件      33792  2013-04-11 15:40  OGL1.ncb

     文件      53760  2013-04-11 15:40  OGL1.opt

     文件        242  2013-04-11 15:38  OGL1.plg

     文件        873  2013-04-11 14:44  OGL1.sln

     文件       6226  2012-02-21 17:58  OGL1.vcproj

     文件       7323  2013-04-10 23:47  OGL1.vcxproj

     文件       1188  2013-04-10 23:47  OGL1.vcxproj.filters

     文件        143  2013-04-10 23:47  OGL1.vcxproj.user

     文件       1196  2012-02-21 17:58  ReadMe.txt

     文件        291  2012-02-21 17:58  StdAfx.cpp

     文件        769  2012-02-21 17:58  StdAfx.h

     目录          0  2013-04-20 20:58  ipch\ogl1-24eb74ed

     目录          0  2013-04-20 20:58  Debug

     目录          0  2013-04-20 20:58  ipch

----------- ---------  ---------- -----  ----

              2960230                    26


评论

共有 条评论