直线方程
- 场景中的直线段由其两端点的坐标位置来定义。图形系统必须先将两端点投影到屏幕坐标,并确定离两个端点间的直线路径最近的像素位置。接下来将颜色值装入帧缓存相应的像素坐标处。
- 坐标值舍入到整数,引起除水平和垂直以外所有线段的阶段效应。光栅线段特有的阶梯现象在低分辨率系统中特别容易看出来,而在高分辨率系统中可以得到改善。
- 对于具有斜率绝对值|m|<1的直线,可以设定一个较小的水平偏转电压
,对应的垂直偏转电压则可以使用上述的第一个公式计算出来
设定。而对于斜率值|m|>1的直线,则设定一个较小的垂直偏转电压
,对应的水平偏转电压由上述的第二个公式计算出来的
来设定。对于斜率m=1的直线,
=
,因此,水平偏转和垂直偏转电压相同。
- 数字微分分析仪(DDA)方法是一种线段扫描转化算法。在一个坐标轴上以单位间隔对线段取样,从而确定另一个坐标轴上最靠近线路径的对应整数值。
- 这个算法可以概括如下:端点位置间水平和垂直的差值赋给参数
和
。绝对值大的参数确定参数steps的值。该值也是在即将画出的这条线段上的像素数目。按照这个数值,沿着线段路径计算每一步的下个像素位置。先绘制起始位置(
,
)的像素,然后调整每一步的x和y,获得并逐一绘制余下的像素。假如
的绝对值大于
的绝对值,且
小于
。那么x和y的方向的增量分别是1和m。假如x方向的变化较大,但
小于
,那么就采用减量-1和-m来生成线段上的每个点。其他情况下,y方向使用单位增量(或减量),x方向使用1/m的增量(后哦减量)。
- Bresenham提出了一种精确而有效的光栅线生成算法,该算法仅仅使用增量整数计算。另外,Bresenham算法可以应用于显示圆和其他曲线。Bresenham算法通过对正比于两像素与实际线段之间偏移比值的整型参数进行符号检测来确定下一个像素的位置。
-
-
转载于:https://my.oschina.net/liyangke/blog/2396322