//DDA算法绘制直线,以前学过一点,不知道楼主是不是要这个
void DDALine(int x0,int y0,int x1,int y1,int color)
{
int x;
float dx,dy,y,k;
dx=x1-x0 ;
dy=y1-y0;
k=dy/dx;
y=y0;
for(x=x0;x<=x1;x++)
{ putpixel(x,(int)(y+0.5),color); //在屏幕上画一个点
y=y+k;
}
}
DDA算法如下:
设直线的起点为(x1,y1)终点为(xn,yn).则斜率K=DY/DX
直线的各个像素点可以用以下简单语句表示
第一点:起点(x1,y1)
第二点:x2=x1+1, y2=取整[y1+k+0.5]
第三点:x3=x2+1, y3=取整[y2+k+0.5]
.
.
.
终点:xn=x(n-1) +1,yn=取整[yn-1 +k+0.5]
也就是是X轴上的增量:X++
Y轴上的增量:INT(y+k+0.5)
以上确定了显示屏上各个像素的算法
怎么用C实现?
其实最终就是画一条直线在屏幕上
谢谢,
是不是很有主函数没有写啊.帮人帮到底哈,感激
谢谢,
是不是很有主函数没有写啊.帮人帮到底哈,感激
帮你帮到底是不是你就不用打代码直接抄一份交了?还需要不需要把程序都调试好啊?
如果你觉得那个函数写的没错,了解清楚算法以后你就自己打代码
by 雨中飞燕 QQ:78803110 QQ讨论群:5305909
[url=http://bbs.bc-cn.net/viewthread.php?tid=163571]请大家不要用TC来学习C语言,点击此处查看原因[/url]
[url=http://bbs.bc-cn.net/viewthread.php?tid=162918]C++编写的Windows界面游戏[/url]
[url=http://yzfy.org/]C/C++算法习题(OnlineJudge):[/url] http://yzfy.org/