计算机图形学实验报告模板(2)

2019-04-15 00:07

//Bresenham算法画圆 // //参数说明:x,y 圆心坐标 // // R 圆半径 // // num 扫描转换时从起点开始输出的点的数目,用于动画 // ///////////////////////////////////////////////////////////////////

void BresenhamCircle(GLsizei x, GLsizei y, GLsizei R, GLsizei num) { }

//初始化窗口 void Initial(void) {

// 设置窗口颜色为蓝色 glClearColor(1.0f, 1.0f, 1.0f, 1.0f); }

// 窗口大小改变时调用的登记函数 void ChangeSize(GLsizei w, GLsizei h)

if(num == 1)

printf(\算法画圆:各点坐标及判别式的值\\n\); int d,k=0,xa,ya; xa=0;ya=R;d=1-R; while(xa<=ya){ }

putpixel(xa+x,ya+y); putpixel(ya+x,xa+y); putpixel(-ya+x,xa+y); putpixel(-xa+x,ya+y); putpixel(-xa+x,-ya+y); putpixel(-ya+x,-xa+y); putpixel(ya+x,-xa+y); putpixel(xa+x,-ya+y); if (k>=num-1) { } k++;

if(d<0) d+=2*xa+3; else{ } xa++;

d+=2*(xa-ya)+5; ya--;

printf(\ , xa+x,ya+y); break;

glColor3f(1.0f,0.0f,0.0f);

{ }

// 在窗口中绘制图形 void ReDraw(void) {

glFlush(); }

//画出坐标线 DrawCordinateLine(); switch(m_DrawMode) { case 1: }

DDACreateLine(0,0,20,15,m_PointNumber); break;

BresenhamLine(0,0,20,15,m_PointNumber); break;

Bresenham2Line(1,1,8,6,m_PointNumber); break;

BresenhamCircle(12,12,10,m_PointNumber); break; break;

//用当前背景色填充窗口

glClear(GL_COLOR_BUFFER_BIT); if(h == 0)

h = 1;

// 设置视区尺寸 // 重置坐标系统

glMatrixMode(GL_PROJECTION); glLoadIdentity();

// 建立修剪空间的范围

glOrtho (0.0f, 250.0f, 0.0f, 250.0f*h/w, 1.0, -1.0); glOrtho (0.0f, 250.0f*w/h, 0.0f, 250.0f, 1.0, -1.0);

glViewport(0, 0, w, h);

if (w <= h) else

case 2:

case 3:

case 4:

default:

//设置时间回调函数 void TimerFunc(int value) { }

//设置键盘回调函数

void Keyboard(unsigned char key, int x, int y) {

if (key == '1') m_DrawMode = 1; }

int main(int argc, char* argv[]) { }

glutCreateWindow(\基本图元绘制程序\); glutDisplayFunc(ReDraw);

glutKeyboardFunc(Keyboard);//键盘响应回调函数 glutTimerFunc(500, TimerFunc, 1); // 窗口初始化

glutMainLoop(); //启动主GLUT事件处理循环 return 0;

glutInit(&argc, argv);

//初始化GLUT库OpenGL窗口的显示模式

glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(600,600); glutInitWindowPosition(100,100); m_PointNumber = 0; glutPostRedisplay();

if (key == '2') m_DrawMode = 2; if (key == '3') m_DrawMode = 3; if (key == '4') m_DrawMode = 4; glutPostRedisplay();

glutTimerFunc(500, TimerFunc, value+1); m_PointNumber = value; if(m_PointNumber == 0)

value = 1;

glutReshapeFunc(ChangeSize);

Initial();


计算机图形学实验报告模板(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:-信息提示

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: