绘制直线算法(计算机图形学)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_43679333/article/details/100348653

1.数值微分法(DDA):
原理:
直线斜率:k=(y1-y0)/(x1-x0);
则直线方程:y = kx + B;
y(i+1) = kx(i+1)+B = kx1+B+k△x = yi+k△x;

注意:此算法只适用于k<=1。当k>1时必须把xy换位,即y每增加1,x增加1/k
2.中点画线法:
在这里插入图片描述
原理:
有直线如图所示,X = Xp+1(Xp为p点的x坐标)交于一点Q,M为P1、P2两个像素点的交点,若Q在M上方,则P2为下一个像素点,相反P1为下一个像素点。当Q与M重合时,两点均可。

3.Bresenham算法:
算法思想:
(1)确定点(x1,y1),dx = x2-x1,dy=y2-y1,计算误差初值P1=2dy-dx,i=1;
(2) 求细线下一点位置,x(i+1)=xi +1,如果Pi>0,则y(i+1) = yi +1;否则y(i+1) = yi ;
(3)画点(x(i+1),y(i+1));
(4)求下一个误差P(i+1),如果Pi>0,P(i+1) = Pi + 2dy-2dx,否则P(i+1) = Pi+2dy;
(5)i = i+1,如果i<dx+1,则转步骤2;否则结束操作

猜你喜欢

转载自blog.csdn.net/qq_43679333/article/details/100348653