• 大小: 13.82MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-13
  • 语言: 其他
  • 标签: 图形学  

资源简介

计算机图形学实验【DDA;中点线,圆,椭圆】(OpenGL实现)

资源截图

代码片段和文件信息

#include “GL/glut.h“
#include “GL/glu.h“
#include “GL/gl.h“
#include “string.h“
#include “sstream“
#include “assert.h“
#include “iostream.h“

static const int QUIT_VALUE(99);
GLuint listID;
void Bresenham(int x0int y0int x1int y1) 
{
x0=x0*100;
y0=y0*100;
x1=x1*100;
y1=y1*100;
float dxdyadd1add2p0xym;
int k;
dx=x1-x0;
dy=y1-y0;
m=dy/dx;
if(m>1)
{
p0=2*dx-dy;
add1=2*(dx-dy);
add2=2*dx;
}
else if(m>=0)
{
p0=2*dy-dx;
add1=2*(dy-dx);
add2=2*dy;
}
else if(m>-1)
{
p0=2*dy+dx;
add1=2*(dy+dx);
add2=2*dy;
}
else
{
p0=2*dx+dy;
add1=2*(dx+dy);
add2=2*dx;
}

x=x0y=y0;
glColor3f(110);
glBegin(GL_POINTS);
cout<<“直线的Bresenham算法:“< glVertex2f(x/1000y/1000);
if(m>1)
for(k=0;k {  
if(p0>0)
{
p0+=add1;
x++;
y++;
}
else
{
p0+=add2;
y++;
}
glVertex2f(x/1000y/1000);

}
else if(m>0)
for(k=0;k {
if(p0>0)
{
p0+=add1;
x++;
y++;
}
else
{
p0+=add2;
x++;
}

glVertex2f(x/1000y/1000);
}
else if(m>-1)
for(k=0;k {
if(p0>0)
{
p0+=add2;
x++;
y--;
}
else
{
p0+=add1;
x++;
}
glVertex2f(x/1000y/1000);
}
else
{
for(k=0;k {  
if(p0>0)
{
p0+=add1;
x++;
y--;
}
else
{
p0+=add2;
y--;
}
glVertex2f(x/1000y/1000);
}
}
glEnd();
}

static void display()
{
glClear(GL_COLOR_BUFFER_BIT);

glLoadIdentity();
glTranslatef(0.f0.f-4.f);
glCallList(listID);
glutSwapBuffers();
assert(glGetError()==GL_NO_ERROR);
}

static void reshape(int wint h) 
{
glViewport(00wh);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(50.(double)w/(double)h1.10.);
glMatrixMode(GL_MODELVIEW);
assert(glGetError()==GL_NO_ERROR);
}

static void mainMenuCB(int value) 
{
if(value==QUIT_VALUE)
exit(0);
}

static void init()
{
glDisable(GL_DITHER);
std::string ver((const char*) glGetString(GL_VERSION));
assert(!ver.empty());
std::istringstream verStream(ver);

int majorminor;
char dummySep;
verStream>>major>>dummySep>>minor;
const bool useVertexArrays=((major>=1)&&(minor>=1));

const GLfloat data[]={-1.f-1.f0.f1.f-1.f0.f0.f1.f0.f };

if(useVertexArrays) 
{
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3GL_FLOAT0data);
}
listID=glGenLists(1);
glNewList(listIDGL_COMPILE);

glBegin(GL_LINES);
glColor3f(111);
glVertex3f(0.0f 0.0f 0.0f);
glVertex3f(-3.0 0.0f 0.0f);
glVertex3f(0.0f 0.0f 0.0f);
glVertex3f(3.0 0.0f 0.0f);
glVertex3f(0.0f 0.0f 0.0f);
glVertex3f(0.0 2.0f 0.0f);
glVertex3f

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2013-11-01 23:52  图形学实验\
     文件        3689  2013-10-30 15:32  图形学实验\Bresenham直线.cpp
     文件        3487  2013-10-30 22:33  图形学实验\Bresenham直线.dsp
     文件         534  2013-10-30 23:19  图形学实验\Bresenham直线.dsw
     文件       41984  2013-10-30 23:19  图形学实验\Bresenham直线.ncb
     文件       48640  2013-10-30 23:19  图形学实验\Bresenham直线.opt
     文件         260  2013-10-30 23:05  图形学实验\Bresenham直线.plg
     文件        2717  2013-10-29 22:29  图形学实验\DDA直线.cpp
     文件        3415  2013-10-29 22:27  图形学实验\DDA直线.dsp
     文件         522  2013-10-29 22:29  图形学实验\DDA直线.dsw
     文件       41984  2013-10-29 22:29  图形学实验\DDA直线.ncb
     文件       48640  2013-10-29 22:29  图形学实验\DDA直线.opt
     文件        1167  2013-10-29 22:29  图形学实验\DDA直线.plg
     目录           0  2013-11-01 23:52  图形学实验\Debug\
     文件      528478  2013-10-30 15:32  图形学实验\Debug\Bresenham直线.exe
     文件      772320  2013-10-30 15:32  图形学实验\Debug\Bresenham直线.ilk
     文件      246646  2013-10-30 15:32  图形学实验\Debug\Bresenham直线.obj
     文件     2329492  2013-10-30 15:13  图形学实验\Debug\Bresenham直线.pch
     文件     1065984  2013-10-30 15:32  图形学实验\Debug\Bresenham直线.pdb
     文件      524376  2013-10-29 22:29  图形学实验\Debug\DDA直线.exe
     文件      771908  2013-10-29 22:29  图形学实验\Debug\DDA直线.ilk
     文件      253238  2013-10-29 22:29  图形学实验\Debug\DDA直线.obj
     文件     5655688  2013-10-14 17:34  图形学实验\Debug\DDA直线.pch
     文件     1065984  2013-10-29 22:29  图形学实验\Debug\DDA直线.pdb
     文件      516191  2013-10-14 17:27  图形学实验\Debug\EllipsePoints.exe
     文件      746684  2013-10-14 17:27  图形学实验\Debug\EllipsePoints.ilk
     文件      251129  2013-10-14 17:27  图形学实验\Debug\EllipsePoints.obj
     文件     2345880  2013-10-12 13:01  图形学实验\Debug\EllipsePoints.pch
     文件     1025024  2013-10-14 17:27  图形学实验\Debug\EllipsePoints.pdb
     文件      508000  2013-10-14 17:18  图形学实验\Debug\MIdPointCircle.exe
     文件      733628  2013-10-14 17:18  图形学实验\Debug\MIdPointCircle.ilk
............此处省略56个文件信息

评论

共有 条评论