开发环境:

VC++6.0,OpenGL

实验内容:

使用DDA算法画直线。

实验结果:

代码:

  1. #include <gl/glut.h>
  2. #include <math.h>
  3.  
  4. #define WIDTH 500 //窗口宽度
  5. #define HEIGHT 500 //窗口高度
  6.  
  7. #define DRAWLINE1 DDALine(100,200,200,100); //画直线
  8. #define DRAWLINE2 DDALine(200,100,450,400); //画直线
  9.  
  10. #pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"") //取消控制台
  11.  
  12. void Init() //初始化
  13. {
  14. glClearColor(1.0f,1.0f,1.0f,1.0f); //设置背景颜色,完全不透明
  15. glColor3f(1.0f,0.0f,0.0f); //设置画笔颜色
  16.  
  17. glMatrixMode(GL_PROJECTION); //设置投影
  18. gluOrtho2D(0.0, WIDTH, 0.0, HEIGHT); //设置投影区域
  19. }
  20.  
  21. void DDALine(int x0,int y0,int x1,int y1) //DDA算法画线
  22. {
  23. int dx,dy,eps1,i;
  24. float x,y,xIncre,yIncre;
  25. dx = x1-x0;
  26. dy = y1-y0;
  27. x = x0,y = y0;
  28. if(abs(dx)>abs(dy))
  29. eps1 = abs(dx);
  30. else
  31. eps1 = abs(dy);
  32. xIncre = (float)dx / float(eps1);
  33. yIncre = (float)dy / float(eps1);
  34. for(i=;i<=eps1;i++){
  35. glBegin(GL_POINTS);
  36. glVertex2i(int(x+0.5),int(y+0.5));
  37. glEnd();
  38. x+=xIncre;
  39. y+=yIncre;
  40. }
  41. }
  42.  
  43. void Display() //显示函数
  44. {
  45. glClear(GL_COLOR_BUFFER_BIT); //清空颜色堆栈
  46.  
  47. DRAWLINE1
  48. DRAWLINE2
  49.  
  50. glFlush(); //清空缓冲区指令
  51. }
  52.  
  53. int main(int argc,char** argv)
  54. {
  55. glutInit(&argc,argv);
  56. glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); //初始化显示模式
  57. glutInitWindowSize(WIDTH,HEIGHT); //设置窗口尺寸
  58. glutInitWindowPosition(,); //设置窗口位置
  59. glutCreateWindow("画直线"); //创建窗口
  60.  
  61. glutDisplayFunc(Display); //注册显示函数
  62. Init(); //初始化
  63. glutMainLoop(); //进入程序循环
  64. return ;
  65. }

Freecode : www.cnblogs.com/yym2013

《图形学》实验三:DDA算法画直线的更多相关文章

  1. 《图形学》实验五:改进的Bresenham算法画直线

    开发环境: VC++6.0,OpenGL 实验内容: 使用改进的Bresenham算法画直线. 实验结果: 代码: //中点Bresenham算法生成直线 #include <gl/glut.h ...

  2. 《图形学》实验四:中点Bresenham算法画直线

    开发环境: VC++6.0,OpenGL 实验内容: 使用中点Bresenham算法画直线. 实验结果: 代码: //中点Bresenham算法生成直线 #include <gl/glut.h& ...

  3. Python使用DDA算法和中点Bresenham算法画直线

    title: "Python使用DDA算法和中点Bresenham算法画直线" date: 2018-06-11T19:28:02+08:00 tags: ["图形学&q ...

  4. 基于Bresenham和DDA算法画线段

    直线:y=kx+b 为了将他在显示屏上显示出来,我们需要为相应的点赋值,那么考虑到计算机的乘法执行效率,我们肯定不会选择用Y=kx+b这个表达式求值,然后进行画线段. 我们应当是将它转化为加法运算. ...

  5. opencv利用hough概率变换拟合得到直线后,利用DDA算法得到直线上的像素点坐标

    图片霍夫变换拟合得到直线后,怎样获得直线上的像素点坐标? 这是我今天在图像处理学习中遇到的问题,霍夫变换采用的概率霍夫变换,所以拟合得到的直线信息其实是直线的两个端点的坐标,这样一个比较直接的思路就是 ...

  6. Bresenham’s algorithm( 布兰森汉姆算法)画直线

    Bresenham直线算法是用来描绘由两点所决定的直线的算法,它会算出一条线段在 n 维光栅上最接近的点.这个算法只会用到较为快速的整数加法.减法和位元移位,常用于绘制电脑画面中的直线.是计算机图形学 ...

  7. 基于Bresenham算法画圆

    bresenham算法画圆思想与上篇 bresenham算法画线段 思想是一致的 画圆x^2+y^2=R^2 将他分为8个部分,如上图 1. 只要画出1中1/8圆的圆周,剩下的就可以通过对称关系画出这 ...

  8. 《图形学》实验七:中点Bresenham算法画椭圆

    开发环境: VC++6.0,OpenGL 实验内容: 使用中点Bresenham算法画椭圆. 实验结果: 代码: #include <gl/glut.h> #define WIDTH 50 ...

  9. 《图形学》实验六:中点Bresenham算法画圆

    开发环境: VC++6.0,OpenGL 实验内容: 使用中点Bresenham算法画圆. 实验结果: 代码: #include <gl/glut.h> #define WIDTH 500 ...

随机推荐

  1. 分治法避免定义多个递归函数,应该使用ResultType

    总结:对二叉树应用分治法时,应避免定义多个递归函数,当出现需要递归求解多种的结果时,尽量使用ResultType来让一次递归返回多种结果. 题目:Binary Tree Maximum Path Su ...

  2. 获取客户端IP

    function getIP(){ $ip = ""; if (getenv("HTTP_CLIENT_IP") && strcasecmp(g ...

  3. 5.6---交换整数的奇数位和偶数位(CC150)

    这道题要利用101010来&. 如下答案: public class Exchange { public int exchangeOddEven(int x) { // write code ...

  4. PHP模拟登录并获取数据

    cURL 是一个功能强大的PHP库,使用PHP的cURL库可以简单和有效地抓取网页并采集内容,设置cookie完成模拟登录网页,curl提供了丰富的函数,开发者可以从PHP手册中获取更多关于cURL信 ...

  5. neutron 同一虚拟网卡的多个IP设置

    neutron port-update <端口ID> --fixed-ip subnet_id=<子网ID/子网名>,ip_address=<IP地址> --fix ...

  6. ConsoleApplication 添加对于 System.ServiceModel.Web 引用失败(出现黄色感叹号)的解决办法

    今天在写一个WebHttpBinding的demo,再创建一个Console应用程序后,发现无法添加System.ServiceModel.Web,如图

  7. python: extend (扩展) 与 append (追加) 的差别

    >>> li = ['a', 'b', 'c'] >>> li.extend(['d', 'e', 'f']) >>> li ['a', 'b', ...

  8. ios NSString 转 float的注意

    今天有一个字符串 “33.3”,用想用[valueString floatValue];得到33.3000这个值,结果得到了33.2999这个值,取前3位一个是33.3,一个是33.2,产生了错误,应 ...

  9. lists删除

    List<Map<String, Object>> trackList = bizFollowRepo.findList("trackFindPageList&quo ...

  10. js的json转换

    静态页面是: data:[{ value:2.5, itemStyle:{ normal:{color:'#4a90e2'} } },{ value:2.5, itemStyle:{ normal:{ ...