Date from DOS(图形DDA算法TC实现)

      DOS(Disk Operating System)磁盘操作系统。

      让人怀恋的DOS年代,没有凌乱的API,只有经典的头文件,只是TC编辑器缺乏人性化设计,谁叫它出生于1987年呢!22年后C的传奇依然继续,ta的地位至今还没有种语言打破。记得大一时就恋上C,恋上更加的底层,似乎站在巨人肩膀上不是那个舒服,我讨厌束缚,追求强大的技术。但说来也惭愧,至今还未明白各个语言间的特性。

      由于图形学课实验,算法实验DDA直线,配置环境就够我受的:

      DOS常用头文件描述:

      头文件 头文件中所声明函数的功能描述
                 <assert.h> 在程序执行过程中设定插入点,便于程序员进行究错工作
                 <time.h> 处理时间,便于程序员使用到系统的时间
                 <string.h> 对字符串的各种处理
                 <ctype.h> 对字符的相关处理
                 <graphics.h> 与在图形界面作图有关的处理

 

 

       BGI是一个图形驱动文件。TURBO  C系统的图形库GRAPHICS.H GRAPHICS.LIB *.BGI(显示驱动程序),在系统编译源程序时,只是把GRAPHICS.H及GRAPHICS.LIB装入运行程序中,但并没有把相应的驱动程序装入到执行程序中,所以程序在运行时要根据DriverPath提供的路径查找驱动程序?这样所生成的执行程序就不能脱离驱动程序运行,如果在别的机器(没有相应的驱动程序)上运行时,就会出现下面信息:
BGI ERROR:GRAPHICS NOT INITALIZED(USE INITGRAPH)

1.把相应的驱动程序(*.BGI)转换成目标代码(*.OBJ)
      C:/TC>BGIOBJ EGAVGA EGAVGA                               

     (如果提示找不命令,设置一下TC的环境变量到操作系统path中例如:C:/Program Files/WINYES/TC201E/BIN)
2.把生成的目标代码加入到图形库(GRAPHICS.LIB)中
      c:/TC>TLIB GRAPHICS.LIB+EGAVGA.OBJ
3 登记驱动程序 要在initgraph()前运行:
      registerbgidriver(EGAVGA-driver)
例如:
      -------
      #include <graphics.h>
      int Drive,Mode=DETECT;
      initgraph(&Drive,&Mode,""); //图形显示器、显示模式、路径自动检测运行时需要在当前目录下存在 EGAVGA.BGI文件在TC/BGI目录下
      -------
如果编译后的.exe文件在另外一个目录(如编译后的.exe文件在D:/MyTc 目录下,而编译器的程序和.BGI文件在C:/Turboc/bin 目录下,则需要填上BGI文件的路径
例如:
      initgraph(&Drive,&Mode,"C://Turboc//bgi");


EGAVGA.BGI 要放到同一个目录 才能运行1.c  

 

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>

#include <math.h>
#include <conio.h>
#include <dos.h>

dda_line(float x1,float y1,float x2,float y2)
{

    float x,y,n,t,dx,dy;
    dx=x2-x1;
    dy=y2-y1;
    n=fabs(dx);
    t=fabs(dy);
    if(t>n)    n=t;
    if(n!=0.0){
        dx=dx/n;dy=dy/n;
    }
    n=(int)n;
    x=x1+0.5;y=y1+0.5;
    setcolor(1);
    putpixel(x,y,11);
    while(n>0){
        x=x+dx;y=y+dy;n--;putpixel(x,y,11);
    }
    putpixel(x2+0.5,y2+0.5,11);
        getch();
}
void main()
{
        int gdriver=DETECT,mode;
        registerbgidriver(EGAVGA_driver);
        initgraph(&gdriver,&mode,"");
    dda_line(0.0,0.0,100.0,25.0);
        clrscr();
        getch();
        closegraph();
}

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NeoChing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值