编程语言
首页 > 编程语言> > Bresenham直线算法

Bresenham直线算法

作者:互联网

Bresenham直线算法

Bresenham概述

根据前一个已知坐标\((x_i,y_i)\)进行增量运算到\((x_{i+1},y_{i+1})\)主位移方向上每次递增一个单位,另一个方向的增量为0或者1,这里取0还是1由像素点与直线的距离决定的,距离称为误差项,用字母\(d\)表示。

\[ y_{i+1}=\left\{ \begin{array}{rcl} y_i+1 & & {e_{i+1} >= 0}\\ y_i & & {e_{i+1} < 0} \end{array} \right. \]

其中,\(e_{i+1}=d_{i+1}-0.5\)

缺点

会出现走向现象

反走样算法

像素点距离光栅交点越近,该像素点颜色与直线颜色越接近,亮度越小;越远颜色相差越大,亮度越大。

颜色插值原理

\[P=(1-t)P_0 +tP_1 \]

其中,\(x\)方向有:

\[x=(1-t)x_0+tx_1 \]

\[t=\frac{x-x_0}{x_1-x_0} \]

\(y\)方向有:

\[y=(1-t)y_0+ty_1 \]

\[t=\frac{y-y_0}{y_1-y_0} \]

颜色插值的表达式为:

\[c=(1-t)c_0+tc_1 \]

将\(x\)方向与\(y\)方向带入,得到:

\[c=\frac{x_1-x}{x_1-x_0}c_0+\frac{x-x_0}{x_1-x_0}c_1 \]

\[c=\frac{y_1-y}{y_1-y_0}c_0+\frac{y-y_0}{y_1-y_0}c_1 \]

人机交互——引力域技术

标签:直线,颜色,走样,Bresenham,算法,方向,frac,像素点
来源: https://www.cnblogs.com/brilliantM/p/14782158.html