----------------解决方案--------------------------------------------------------
你把那个DDA算法写一下,大家才能帮你啊!
你连算法都不写,现在,编程的人,可不一定都是数学相当好?(别人可能不学那一种算法!)
这样,谁能给编出源代码啊?
----------------解决方案--------------------------------------------------------
//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(数字微分分析器)算法就是基本增量算法。算法如下:
void line(int x0,int y0,int x1,int y1,int value)//-1<=m<=1,x0<x1
{
int x; //x以单位步长从x0增长到x1
float dy,dx,y,m;
dy=y1-y0;
dx=x1-x0;
m=dy/dx;
y=y0;
for(x=x0;x<x1;x++)
{
writePixxel(x,(int)floor(y+0.5),value);//像素值为value
y+=m; //y移动的步长是斜率m
}
}
建议使用更优的中点线算法!
----------------解决方案--------------------------------------------------------
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/
----------------解决方案--------------------------------------------------------
说得我很不好意思了.呵.呵.谢谢大家,我已经做完了.
----------------解决方案--------------------------------------------------------