《计算机图形学》实验一:利用OpenGL实现直线光栅化的DDA算法
来源:互联网 发布:ie无法打开淘宝网 编辑:程序博客网 时间:2024/04/30 11:50
本博客计算机图形学系列文章索引:
地址:《计算机图形学系列相关文章索引(持续更新)》
参考教材:《计算机图形学》 机械工业出版社 ,徐文鹏主编。
#include <tchar.h>#include <GL/glut.h>#include <cstdlib>//链接必要的库文件#pragma comment( lib, "opengl32.lib" ) #pragma comment( lib, "glu32.lib" ) #pragma comment( lib, "glut32.lib" ) void LineDDA(int x1,int y1,int x2,int y2){float x, y, dx, dy;int k,i;if(abs(x2-x1)>=abs(y2-y1)){k=abs(x2-x1);}else{k=abs(y2-y1);}dx=(float)(x2-x1)/k;dy=(float)(y2-y1)/k;x=(float)(x1);y=(float)(y1); for(i=0;i<k; i++) {glPointSize(2);glBegin (GL_POINTS);glColor3f (1.0f, 0.0f, 0.0f); glVertex2i ((int)(x+0.5),(int)(y+0.5));glEnd (); x+=dx;y+=dy; } } void RenderScene(void){glClear(GL_COLOR_BUFFER_BIT);//画X轴glBegin(GL_LINES);glColor3f (0.0f, 0.0f, 0.0f);glVertex2f(-50.0f,0.0f);glVertex2f(50.0f,0.0f);glEnd();//画Y轴glBegin(GL_LINES);glColor3f (0.0f, 0.0f, 0.0f);glVertex2f(0.0f,-50.0f);glVertex2f(0.0f,50.0f);glEnd();//用DDA算法画两条线LineDDA(-50,-50,50,50);LineDDA(-50, 50, 50,-50);glFlush();}void ChangeSize(GLsizei w,GLsizei h){if(h==0){h=1;}//定义视口glViewport(0,0,w,h);glMatrixMode(GL_PROJECTION);glLoadIdentity();//定义正交视域体if(w<h){glOrtho(-150,150,-150*h/w,150*h/w,-150,150);}else{glOrtho(-150*w/h,150*w/h,-150,150,-150,150);}}void Init(void){//背景为白色glClearColor(1.0f,1.0f,1.0f,0.0f);}int _tmain(int argc, _TCHAR* argv[]){//设置为RGB颜色模式和单缓存窗口glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);glutCreateWindow("DDA算法画直线");Init();glutDisplayFunc(RenderScene);glutReshapeFunc(ChangeSize); glutMainLoop();return 0;}
实验结果:
- 《计算机图形学》实验一:利用OpenGL实现直线光栅化的DDA算法
- 计算机图形学 学习笔记(一):光栅图形学算法:直线扫描算法(DDA,中点画线算法,Bresenham算法)
- 计算机图形学——生成直线的DDA算法
- 光栅图形学之直线段扫描算法(DDA)
- 计算机图形学—DDA直线生成算法
- java画直线算法 DDA 计算机图形学
- 计算机图形学----DDA、Bresenham直线算法
- opengl DDA直线算法的实现
- [图形学]光栅直线算法
- 直线的DDA算法的C实现(opengl实现)
- 实验二 直线DDA生成算法的GDI实现
- 图形学算法--DDA画直线
- 计算机图形学-基于OpenGL的直线段的裁剪算法
- 计算机图形学基础实验二(DDA算法实现 稍加控制)
- 计算机图形学03一一OpenGL 线的形成解析 和 DDA算法
- 直线的光栅化算法
- 光栅图形学——直线段的扫描转换算法
- 计算机图形学作业——DDA算法实现
- 我的Android经历
- ISTQB AL高级认证系列03:ISTQB AL-TTA测试技术分析员学习目标
- 2011-9-22 15:41:21
- 网上购物要小心
- linux+nginx+tomcat负载均衡,实现session同步
- 《计算机图形学》实验一:利用OpenGL实现直线光栅化的DDA算法
- 转:解析json文件
- 启动模式"singleTask"和FLAG_ACTIVITY_NEW_TASK具有不同的行为!
- 文字走马灯效果
- Code::Blocks使用pc-lint
- 寄存器
- Good habit to read something every night The linux command line
- 进程&线程&死锁
- 黑马程序员_泛型总结(一个苹果是水果,一箱苹果不是水果)