- 使用Bresenham算法(只使用integer arithmetic)画一个三角形边框
算法的主要思想就是当前一个点确定的时候,这时候下一个点由于一定要在格点地上,所以只会有两种选择,(下图是当斜率小于1且方向为正向的情况),要么是(x+1,y)的点,要么是(x+1,y+1)的点,然后直线上真实的点应该是(x+1, m(x+1)+b),这时候就看这个真实点距离哪个格点比较近就行了。
两个距离的计算公式如下:
又由于我们只需要知道哪个大,就直接求差看正负符号
M是斜率,要用到除法,为了减少计算量,我们可以乘以dx(这里假设dx是正的,负的就是换一个方向而已,后面会讲到),乘dx不改变符号
然后就是要找出p的递推式减少计算量,如下