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

发布时间 : 星期三 文章计算机图形学实验C++代码更新完毕开始阅读

}

}

p=yCenter+a*(x+1-xCenter)*(x+1-xCenter)+b*(x+1-xCenter)-y-0.5;

px=x-xCenter; py=y-yCenter;

ellipsePlotPoints(xCenter,yCenter,px,py);

}while(px

if(p<0) { } else{ }

px=x-xCenter; py=y-yCenter;

ellipsePlotPoints(xCenter,yCenter,px,py);

x=x; y=y+1;

p=yCenter+a*(x+0.5-xCenter)*(x+0.5-xCenter)+b*(x+0.5-xCenter)-y-1; x=x-1; y=y+1;

p=yCenter+a*(x+0.5-xCenter)*(x+0.5-xCenter)+b*(x+0.5-xCenter)-y-1;

void ellipsePlotPoints(int xCenter,int yCenter,int x,int y) { }

void display() { }

void myinit() { }

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

5

glClearColor(0.8,1.0,1.0,1.0); glColor3f(0.0,0.0,1.0); glPointSize(1.0);

glMatrixMode(GL_PROJECTION); glLoadIdentity();

gluOrtho2D(0.0,300.0,0.0,300.0); glClear(GL_COLOR_BUFFER_BIT); ellipseMidpoint(150,150,1,0); glFlush();

setPixel(xCenter+x,yCenter+y); setPixel(xCenter-x,yCenter+y);

}

glutInit(&argc,argv);

glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); glutInitWindowSize(500,500);

glutInitWindowPosition(200.0,200.0); glutCreateWindow(\); glutDisplayFunc(display); myinit(); glutMainLoop();

四、 基本图元输出

#include #include #include

void Polygon(int*p1,int*p2,int*p3,int*p4,int*p5,int*p6) { }

void Triangles(int*p1,int*p2,int*p3,int*p4,int*p5,int*p6) { }

void Trianglefan(int*p1,int*p2,int*p3,int*p4,int*p5,int*p6) {

glBegin(GL_TRIANGLE_FAN); glVertex2iv(p1); glVertex2iv(p2); glVertex2iv(p3); glVertex2iv(p4); glVertex2iv(p5); glVertex2iv(p6); glEnd();

6

glBegin(GL_TRIANGLES); glVertex2iv(p1); glVertex2iv(p2); glVertex2iv(p6); glVertex2iv(p3); glVertex2iv(p4); glVertex2iv(p5); glEnd();

glBegin(GL_POLYGON); glVertex2iv(p1); glVertex2iv(p2); glVertex2iv(p3); glVertex2iv(p4); glVertex2iv(p5); glVertex2iv(p6); glEnd();

}

void Trianglestrip(int*p1,int*p2,int*p3,int*p4,int*p5,int*p6) { glBegin(GL_TRIANGLE_STRIP); glVertex2iv(p1); glVertex2iv(p2); glVertex2iv(p6); glVertex2iv(p3); glVertex2iv(p5); glVertex2iv(p4); glEnd();

}

void glRect_s(GLint a,GLint b,GLint c,GLint d) { glRecti(a,b,c,d);

}

void display() { int p1[]={60,170}; int p2[]={100,100}; int p3[]={180,100}; int p4[]={220,170}; int p5[]={180,240}; int p6[]={100,240}; int p7[]={60,100};

glClear(GL_COLOR_BUFFER_BIT); //Triangles(p1,p2,p3,p4,p5,p6); //Polygon(p1,p2,p3,p4,p5,p6); //glRect_s(160,30,10,100); Trianglestrip(p1,p2,p3,p4,p5,p6); //Trianglefan(p1,p2,p3,p4,p5,p6); glFlush(); }

void myinit() { glClearColor(0.8,1.0,1.0,1.0); glColor3f(0.0,0.0,1.0); glPointSize(1.0);

glMatrixMode(GL_PROJECTION); glLoadIdentity();

gluOrtho2D(0.0,300.0,0.0,300.0); }

void main(int argc,char **argv ) { glutInit(&argc,argv);

glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);

7

}

glutInitWindowSize(500,500);

glutInitWindowPosition(300.0,300.0); glutCreateWindow(\); glutDisplayFunc(display); myinit(); glutMainLoop();

五、 区域填充

#include \#include \

const int POINTNUM=7; //多边形点数. //定义结构体用于活性边表AET和新边表NET typedef struct XET {

float x; float dx,ymax; XET* next;

}AET,NET;

//定义点结构体point struct point {

float x; float y;

}polypoint[POINTNUM]={250,50,350,150,50,40,250,20,200,30,100,100,10,300};//多边形顶点 void PolyScan() {

//初始化NET表 NET *pNET[1024]; for(i=0;i<=MaxY;i++) { }

glClear(GL_COLOR_BUFFER_BIT); //赋值的窗口显示.

8

pNET[i]=new NET; pNET[i]->next=NULL; //初始化AET表 AET *pAET=new AET; pAET->next=NULL;

//计算最高点的y坐标(扫描到此结束) int MaxY=0; int i;

for(i=0;i

if(polypoint[i].y>MaxY)

MaxY=polypoint[i].y;

联系合同范文客服:xxxxx#qq.com(#替换为@)