本文主要是介绍OpenGL:中点直线算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
理论部分
中点直线算法是通过在像素中确定与理想直线最靠近的像素来进行扫描转换的。
在上图中,假设直线的斜率 0 ≤ m ≤ 1 0\le m \le 1 0≤m≤1。假设当前最近的像素已经确认为 P ( x k , y k ) P(x_k, y_k) P(xk,yk),由于 x x x位最大的位移方向,因此直线在 x x x方向上每次增加一个像素单位,而在 y y y方向上是否增加一个像素单位,即 P P P点的下一个点是选 P 1 ( x k + 1 , y k ) P_1(x_{k+1},y_k) P1(xk+1,yk)还是 P 2 ( x k + 1 , y k + 1 ) P_2(x_{k+1},y_k+1) P2(xk+1,yk+1),取决于两个备选像素哪一个离理想像素最近
设 M ( x k + 1 , y k + 0.5 ) M(x_k+1, y_k+0.5) M(xk+1,yk+0.5)位 P 1 P 2 P_1P_2 P1P2的中点, Q Q Q是理想直线与直线 x = x k + 1 x=x_k+1 x=xk+1的交点。在图中可以看出, P 2 P_2 P2离理想像素 Q Q Q更近,所以应该选择 P 2 P_2 P2作为下一个像素。
像素选择的方法:理想像素 Q Q
这篇关于OpenGL:中点直线算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!