zoukankan      html  css  js  c++  java
  • 《图形学》实验五:改进的Bresenham算法画直线

    开发环境:

    VC++6.0,OpenGL

    实验内容:

    使用改进的Bresenham算法画直线。

    实验结果:

    代码:

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

    Freecode : www.cnblogs.com/yym2013

  • 相关阅读:
    用C#开发.NET CF 蓝牙通信模块
    记录台湾民众生活:一起来看看台湾的物价
    .NET Socket开发之同步Socket实现两例
    SOA和BPM结合的三种方法
    Why we chose ASP.NET to run our startup
    用JScript.net写.net应用程序
    Linux至少有五大点比Vista更好
    Windows 窗体的.Net 框架绘图技术
    优化增强您的Visual C++应用程序
    VS 2008和.NET 3.5 Beta2新特性介绍
  • 原文地址:https://www.cnblogs.com/yym2013/p/4619269.html
Copyright © 2011-2022 走看看