zoukankan      html  css  js  c++  java
  • 《图形学》实验三:DDA算法画直线

    开发环境:

    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=0;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(200,100);    //设置窗口位置
    59     glutCreateWindow("画直线");    //创建窗口
    60 
    61     glutDisplayFunc(Display);    //注册显示函数
    62     Init();        //初始化
    63     glutMainLoop();    //进入程序循环
    64     return 0;
    65 }

    Freecode : www.cnblogs.com/yym2013

     

  • 相关阅读:
    [ABC142F] Pure
    [ABC141F] Xor Sum 3
    tarjan缩点
    LoadRunner录制:事务
    LoadRunner录制:脚本调试
    linux性能监控命令
    Python 3 解析 html
    Python 3 操作json 文件
    Python 数据驱动工具:DDT
    selenium 问题:OSError: [WinError 6] 句柄无效
  • 原文地址:https://www.cnblogs.com/yym2013/p/4619239.html
Copyright © 2011-2022 走看看