光栅图形学-画直线经典算法
发布时间
阅读量:
阅读量
光栅图形学算法-画直线算法
如果对这些算法感兴趣,可以去查阅算法的详细介绍,这里只是用伪代码来描述这些算法。
1.DDA算法
DDA算法依赖于直线的斜截式方程
n=x2 - x1; //像素点个数
k = (y2-y1)/(x2-x1); //直线斜率
for(int i=1;i<=n;i++)
{
x1 = x1 + 1;
y1 = y1 + k;
y = int(y + 0.5) //y的值才是点的纵坐标
}
2.中点画线算法
中点画线算法依赖直线的一般式方程
n= x2 - x1;
//直线的各个参数
A = y1 - y2;
B = x2 - x1;
C = x1 * y2 - x2 * y1;
d = 2 * (A * (x1+1) + B * (y1+0.5) + C);
for(int i=1; i<=n; i++)
{
x1 += 1;
if(d<0)
{
y1 += 1;
d += (A + B) * 2;
}
else
d += 2 * A;
}
3.Bresenham算法
Bresenham算法集合了以上两个算法的优点。
n=x2 - x1;
dx = x2 - x1;
dy = y2 - y1;
e = -1 * dx;
for(int i=1; i<=n; i++)
{
x1 += 1;
e += 2 * dy;
if(e > 0)
{
y1 += 1;
e -= 2 * dx;
}
}
全部评论 (0)
还没有任何评论哟~
