文章目录
中点算法原理
- 先讲最简单的一种情况,设直线斜率在区间 (0,1),其他情况可以类似推导。
- 当前像素点为P(xp,yp),下一像素点有两种选择P1或P2,P1,P2中点为M(xp+1,yp+0.5),Q为所画直线与x=xp+1交点,如图所示
- 当M在Q上方时,下一像素点取P1,M在Q下方时取P2
中点算法实现
-
令需画直线起点终点分别为(x1,y1),(x2,y2),直线方程为F(x,y)=ax+by+c=0,将点代入直线方程后化简可得a/b=-k(斜率k),所以令a=y1-y2,b=x2-x1(只要满足商为-k即可),c=x1y2-x2y1
-
可得点与直线的关系为:
- F(x,y)=0,在直线上
- F(x,y)>0,在直线上方
- F(x,y)<0,在直线下方
-
将中点M(xp+1,yp+0.5)代入直线方程:d=F(xp+1,yp+0.5)=a(xp+1)+b(yp+0.