本文主要是介绍关于斜率大于1的中点画线的公式推导,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
首先还是假设直线L的一般公式为:Ax+By+C=0,并且斜率大于1,那么这个时候代表x变化慢,y变化快,那么这时我们应该让y每次递增1,x是否递增,需要判断,判断方法如下:
首先假设直线的起点(x1,y1),终点为(x2,y2),那么从起点开始,起点的下一个点的坐标应该是(x_next,y_next),因为y每次递增1,所以y_next = y1+1,那么x_next应该取哪个点呢?
设起点的正上方的点为V1(x1,y1+1),起点的右上方顶点V2(x1+1,y1+1),这两个点的中间点M(x1+0.5,y1+1),假设直线L与y+1的交点Q(x_q,y_q),那么Ax_q+By_q+C=0成立,因为点Q在直线上,那么点M带入直线L方程得到:
Ax_m + By_m+C = ?
假设x_m = x_q + dx,因为y_m = y_q,所以Ax_m + By_m + C = A(x_q + dx) + By_q + C = (Ax_q + By_q + C) + Adx,假设直线方程L的A>0,那么如果中点M在Q的右侧,则Adx > 0,否则Adx <=0。
那么我们可以这样:
当A>0时,
x_next = x_prev(L(x_m,y_m) > 0)
x_next =x_prev + 1 (Adx <=0)<
这篇关于关于斜率大于1的中点画线的公式推导的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!