资源简介
VC++6.0项目,运用DDA算法画线,直线的斜率为任意值,代码可以直接运行。
代码片段和文件信息
/*
DDA画线算法:方程y=kx+b
已知线段的起点(x0y0)和终点(x1y1);x0y0x1y1为int类型
计算出两端点间的水平和垂直的差值dx=x1-x0,dy=y1-y0
如果dx>dyx方向上的像素数目steps=fabs(dx)
x方向的增量xI=dx/stpes=1,y方向的增量yI=dy/stpes
设第P个点为(xpyp) 下一个点Q则为(xp+xIyp+yI)
每一步描点都要对y进行四舍五入取整,即Q(xp+xIround(yp+yI))
*/
#include
#include
void init(void);
int round(float a); //四舍五入
void setPixel(int xint y);//描点
void Algorithm(int x0int y0int x1int y1);//算法
void lineDDA(void);//数据测试
void init(void){
glClearColor(1.01.01.00.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0600.00.0400.0);
}
int round(float a){ //四舍五入
return int(a+0.5);
}
void setPixel(int xint y){ //描点
glBegin(GL_POINTS);
glVertex2i(xy);
glEnd();
}
void Algorithm(int x0int y0int x1int y1){ //算法
int dxdysteps;
float xIyIxy;
x=x0;
y=y0;
dx=x1-x0;
dy=y1-y0;
if(fabs(dx)>=fabs(dy)){ //0°-45° 45° 145° 145°-180°
steps=fabs(dx);
}else{ //45°-90° 90° 90°-145°
steps=fabs(dy);
}
xI=float(dx)/float(steps); //x的单位步进
yI=float(dy)/float(steps); //y的单位步进
setPixel(round(x)round(y)); //描起点
for(int i=0;i<=steps;i++){
x+=xI;
y+=yI;
setPixel(round(x)round(y));
}
}
void lineDDA(void){ //数据测试
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0f0.0f0.0f);
glPointSize(2);
Algorithm(15050450350); //45°斜上
Algorithm(45050150350); //45°斜下
Algorithm(150200450200); //横
Algorithm(30050300350); //竖
Algorithm(15050450200); //0°-45°
Algorithm(450350150200);
Algorithm(30050450350); //45°-90°
Algorithm(30035015050);
Algorithm(30035045050); //90°-145°
Algorithm(30050150350);
Algorithm(15020045050); //145°-180°
Algorithm(450200150350);
glFlush();
}
void main(int argcchar **argv){
glutInit(&argcargv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowPosition(350100);
glutInitWindowSize(600400);
glutCreateWindow(“DDA line drawing algorithm“);
init();
glutDisplayFunc(lineDDA);
glutMainLoop();
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-04-03 09:52 DDA画线算法\
文件 4340 2016-04-02 11:35 DDA画线算法\DDA画线算法.dsp
文件 530 2016-04-02 11:35 DDA画线算法\DDA画线算法.dsw
文件 41984 2016-04-03 09:50 DDA画线算法\DDA画线算法.ncb
文件 48640 2016-04-03 09:50 DDA画线算法\DDA画线算法.opt
文件 1317 2016-04-03 09:50 DDA画线算法\DDA画线算法.plg
目录 0 2016-04-03 09:52 DDA画线算法\Debug\
文件 196677 2016-04-03 09:50 DDA画线算法\Debug\DDA画线算法.exe
文件 252772 2016-04-03 09:50 DDA画线算法\Debug\DDA画线算法.ilk
文件 332816 2016-04-02 15:21 DDA画线算法\Debug\DDA画线算法.pch
文件 459776 2016-04-03 09:50 DDA画线算法\Debug\DDA画线算法.pdb
文件 7607 2016-04-03 09:50 DDA画线算法\Debug\lineDDA.obj
文件 33792 2016-04-03 09:50 DDA画线算法\Debug\vc60.idb
文件 45056 2016-04-03 09:50 DDA画线算法\Debug\vc60.pdb
文件 2242 2016-04-03 09:50 DDA画线算法\lineDDA.cpp
- 上一篇:超定方程组最小二乘法代码详解
- 下一篇:单片机c头文件at89X51/AT89X52
相关资源
- C++局域网文件传输
- 防火墙C++源码,测试可以运行
- 用c++自编的GPS单点定位程序源码
- 四叉树定义实现C++代码
- vc++简易图形编辑器MFC
- C++实现字符串求交集、并集、差集
- c++ 栈应用 使用标准库函数 源代码 原
- c++线性方程组求解源代码 原创
- 模拟卫星旋转和地球自转
- 一个简单的C++抽签程序
- 《The c++ programming language 》的习题答案
- sha256-512加密算法
- NTFS数据恢复的c++类代码
- 矩阵连乘问题C++代码
- 用Socket 实现http协议
- RC4在C++中运行的代码
- c++primerplus第六版源码
- 操作系统实验 循环首次适应算法C
- VC++ 串口实现双机互联 包含视窗加代
- C++面向对象程序设计第6版美Walter Sa
- Visual C++ MFC Web 浏览器
- 宇视科技2017C/C++开发笔试题
- c++字典列表
- linux下的C语言POSIX正则表达式头文件和
- C++源代码飞机订票系统
- VC++ MFC 如何用 CZip CUnzip类压缩解压缩
- C++课程设计选课系统
- 遗传算法C++实现若干
- Oracle 84%安装报错compat-libstdc++-33-3.2.
- c++实现的双向通信的socket小程序
评论
共有 条评论