第一次学绘图,后来发现书上的SetPixel函数在vc6.0中不能用。就去百度查找了,找了好久才找到easyx(包含graphics.h头文件)。最后又查找了easyx帮助文档找到putpixel(x,y,color)( 在指定位置画一像素)能够代替书上的SetPixel(x,y,color)。

       由于书本上只有斜率在0~1范围内的终点划线法,又根据书本上的方法找到了在其它斜率下的情况。

0<=k<=1

-1<=k<=0

k>1

k<-1

d=2a+b

d=2a-b

d=a+2b

d=a-2b

d>0:d2=d1+2a

d<=0:d2=d1+2a+2b

d>0:d2=d1+2a-2b

d<=0:d2=d1+2a

d>0:d2=d1+2a+2b

d<=0:d2=d1+2b

d>0:d2=d1-2a

d<=0:d2=d1+2a-2b

由于在graphics.h头文件中使用initgraph(x,y)建立绘图屏幕 只能是左上角为(0,0)

坐标,x坐标向右,y坐标向下的第一象限。所以在测试数据时候只能写起始坐标(x0,y0)终点坐标(x1,y1)在第一象限内的直线(即x0>=0,x1>=0,y0>=0,y1>=0);

Easyx下载地址:http://www.easyx.cn/downloads/

编程环境:vc6.0(安装了easyx)

运行:windows7旗舰版

至于源代码,等我的作业交上去了在贴上吧,先贴上运行结果

#include <stdio.h>
#include <graphics.h>
#include <conio.h>
//中点画线法斜率为0~1斜率为0~1
void MidPointLine1(int x0,int y0,int x1,int y1)
{//初始一个480*480的绘图屏幕initgraph(480, 480); int a,b,delta1,delta2,d,x,y;a=y0-y1;b=x1-x0;d=2*a+b;delta1=2*a;delta2=2*(a+b);x=x0;y=y0;//在对应的x,y像素点着色putpixel(x,y,GREEN);while(x<x1){if(d<0){x++;y++;d+=delta2;}else{x++;d+=delta1;}//在对应的x,y像素点着色putpixel(x,y,GREEN);//可以把下面这句取消注释,按回车看画线过程。//    system("pause");}//为了能够看到绘图效果 加了getch() 否则会直接关闭绘图屏幕getch();closegraph();
}
//斜率>1
void MidPointLine2(int x0,int y0,int x1,int y1)
{//初始一个480*480的绘图屏幕initgraph(480, 480); int a,b,delta1,delta2,d,x,y;a=y0-y1;b=x1-x0;d=a+2*b;delta1=2*(a+b);delta2=2*b;x=x0;y=y0;//在对应的x,y像素点着色putpixel(x,y,GREEN);while(y<y1){if(d<0){y++;d+=delta2;}else{y++;x++;d+=delta1;}//在对应的x,y像素点着色putpixel(x,y,GREEN);//可以把下面这句取消注释,按回车看画线过程。//    system("pause");}//为了能够看到绘图效果 加了getch() 否则会直接关闭绘图屏幕getch();closegraph();
}
//斜率为-1~0
void MidPointLine3(int x0,int y0,int x1,int y1)
{//初始一个480*480的绘图屏幕initgraph(480, 480); int a,b,delta1,delta2,d,x,y;a=y0-y1;b=x1-x0;d=2*a-b;delta1=2*a-2*b;delta2=2*a;x=x0;y=y0;//在对应的x,y像素点着色putpixel(x,y,GREEN);while(x<x1){if(d<0){x++;d+=delta2;}else{x++;y--;d+=delta1;}//在对应的x,y像素点着色putpixel(x,y,GREEN);//可以把下面这句取消注释,按回车看画线过程。//    system("pause");}//为了能够看到绘图效果 加了getch() 否则会直接关闭绘图屏幕getch();closegraph();
}//斜率<-1
void MidPointLine4(int x0,int y0,int x1,int y1)
{//初始一个480*480的绘图屏幕initgraph(480, 480); int a,b,delta1,delta2,d,x,y;a=y0-y1;b=x1-x0;d=a-2*b;delta1=-2*b;delta2=2*(a-b);x=x0;y=y0;//在对应的x,y像素点着色putpixel(x,y,GREEN);while(y>y1){if(d<0){x++;y--;d+=delta2;}else{y--;d+=delta1;}//在对应的x,y像素点着色putpixel(x,y,GREEN);//可以把下面这句取消注释,按回车看画线过程。// system("pause");}//为了能够看到绘图效果 加了getch() 否则会直接关闭绘图屏幕getch();closegraph();
}
int main()
{int x1,y1,x2,y2;printf("请输入起始点,终点坐标(用空格隔开,回车结束):");scanf("%d %d %d %d",&x1,&y1,&x2,&y2);//根据斜率范围判断对应函数float k=(float)(y2-y1)/(float)(x2-x1);if(k>=0&&k<=1)MidPointLine1(x1,y1,x2,y2);//斜率为0~1 测试数据0 0 320 100else if(k>1)MidPointLine2(x1,y1,x2,y2);//斜率为>1  测试数据0 0 100 320else if(k>=-1&&k<=0)MidPointLine3(x1,y1,x2,y2);//斜率为-1~0 测试数据0 100 200 0elseMidPointLine4(x1,y1,x2,y2);//斜率为<-1 测试数据0 200 100 0}

运行结果:

1.测试数据:0 0 320 100

 

运行结果:

 

2.测试数据:0 0 100 320

 

运行结果:

 

3.测试数据:0 100 200 0

 

运行结果:

 

4.测试数据:0 200 100 0

 

运行结果:

 

计算机图形学:中点划线法(任意斜率)相关推荐

  1. 计算机图形学--中点椭圆算法原理及代码实现

    目录 椭圆的几何特性: 算法原理: 代码实现: 说明,我们这里讨论的椭圆都是对称轴平行于坐标轴的椭圆,对于其他方程较为复杂的椭圆我们不做讨论. 椭圆的几何特性: 首先我们考虑椭圆的几何特性.椭圆是抽对 ...

  2. 中点画线法(计算机图形学)

    #include <graphics.h> #include <conio.h> #include <iostream.h>// 使用中点算法画任意斜率的直线(包括 ...

  3. 计算机图形学(三种画线算法)

    第二章:光栅图形学算法 1.光栅显示器:光栅扫描式图形显示器简称光栅显示器,是画点设备,可看作是一个点阵单元发生器,并可控制每个点阵单元的亮度 2.由来:随着光栅显示器的出现,为了在计算机上处理.显示 ...

  4. 计算机图形学 第四章 光栅图形学

    第四章 光栅图形学 计算机图形学 第四章 光栅图形学的相关内容,包括:直线段的扫描转换算法.圆弧的扫描转换算法.多边形区域填充.字符的生成.裁剪.反走样 等 Def 光栅显示器:一个像素矩阵(因此,要 ...

  5. 计算机图形学画图形,计算机图形学(三种画线算法)(示例代码)

    第二章:光栅图形学算法 1.光栅显示器:光栅扫描式图形显示器简称光栅显示器,是画点设备,可看作是一个点阵单元发生器,并可控制每个点阵单元的亮度 2.由来:随着光栅显示器的出现,为了在计算机上处理.显示 ...

  6. 计算机图形学画圆vc代码,计算机图形学实验--完整版-带结果--vc++实现.doc

    计算机图形学实验--完整版-带结果--vc实现 计算机图形学实验报告 信息学院计算机专业 20081060183 周建明 综括: 利用计算机编程语言绘制图形,主要实现以下内容: (1).中点算法生成任 ...

  7. c语言计算机图形来画八分画圆,计算机图形学:中点画圆算法

    在平面解析几何中,圆的方程可以描述为(x – x0)2 + (y – y0)2 = R2,其中(x0, y0)是圆心坐标,R是圆的半径,特别的,当(x0, y0)就是坐标中心点时,圆方程可以简化为x2 ...

  8. c语言 绘制任意斜率的直线,绘制任意斜率的直线

    <绘制任意斜率的直线>由会员分享,可在线阅读,更多相关<绘制任意斜率的直线(15页珍藏版)>请在人人文库网上搜索. 1.淮海工学院计算机工程学院 实验报告书 课程名: 计算机图 ...

  9. 【计算机图形学】中点画圆算法和Bresenham画圆算法

    在平面解析几何中,圆的方程可以描述为(x – x0)2 + (y – y0)2 = R2,其中(x0, y0)是圆心坐标,R是圆的半径,特别的,当(x0, y0)就是坐标中心点时,圆方程可以简化为x2 ...

  10. 计算机图形学05:中点BH算法对任意斜率的直线扫描转换方法

    作者:非妃是公主 专栏:<计算机图形学> 博客地址:https://blog.csdn.net/myf_666 个性签:顺境不惰,逆境不馁,以心制境,万事可成.--曾国藩 文章目录 专栏推 ...

最新文章

  1. MyISAM与InnoDB的索引实现
  2. php实现父子评论,关于php:将一系列父子关系转换为层次树?
  3. 使用SQL SERVER 2000的全文检索功能
  4. mysql limit的使用方法
  5. 漫画:什么是鸡尾酒排序
  6. Java锤子剪刀布大家应该都会玩“锤子剪刀布”的游戏: 现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。
  7. linux 通配符与正则表达式
  8. 转载:SharePoint技术资料
  9. postman的基础使用
  10. javascript高级程序设计pdf_JavaScript八张思维导图
  11. 【原创】 ES5高效封装WIN10系统教程2020系列(六)ES5封装
  12. python绘制缓和曲线_CAD中如何绘制缓和曲线
  13. 目前三大前端主流框架
  14. 别让西药毁了凉茶!盒马牵手平安堂,能放心喝的凉茶来了
  15. 编译出现错误:incomplete type ‘WebsocketSession’ used in nested name specifier。
  16. 部署搭建DNS服务器
  17. 基于 Spring SSM框架 开发的一套 进存销管理系统
  18. 应用签名不一致,该应用可能被篡改的问题
  19. 回忆数学老前辈孙元远先生
  20. Linux:TTY串口接收中断

热门文章

  1. 数字信号处理(自学篇)
  2. 没有人脉如何靠内推进大厂?内推真的那么神吗?带你搞透内推到底是什么
  3. 剑指offer第9题及扩展 斐波那契数列
  4. leetcode之Find All Numbers Disappeared in an Array(448)
  5. 【转】中控系统的概念、特点及功能
  6. PTA 4-4 查询水果价格
  7. ThreeJs DRACO压缩并加载gltf模型
  8. 电子密码锁的设计(Verilog HDL实现)
  9. C2 - Skyscrapers (hard version),Codeforces Round #622 (Div. 2),单调栈
  10. 从行业到技术,一位嵌入式er带你清晰总览嵌入式行业职业规划