數值微分dda(digital differential analyzer)演算法中點畫線演算法
bresenham演算法
// 來自知乎
char pic[50]
[50]=
;void
show_pic()
printf
("\n");
}}void
drawline_old
(int x0,
int y0,
int x1,
int y1)
}// 使用 bresenham 演算法畫任意斜率的直線(包括起始點,不包括終止點)
void
line_bresenham
(int x1,
int y1,
int x2,
int y2)
int p =
2* dy - dx;
for(
int i =
0; i < dx; i++)if
(!interchange)
x += s1;
// 當斜率 < 1 時,選取 x 為步長
else
y += s2;
// 當斜率 > 1 時,選取 y 為步長
p +=2
* dy;}}
intmain
(void
)
實際測試了兩個函式,easyx給出的方法可靠考慮的比較全面,可以拿過來移植。最近工作收穫挺多的,也不知道未來會深入到哪乙個方向,先記下來,圖形學還是蠻好玩的。最後推薦一下easyx ,看他文章雖然比較老了,但是都是精華。
easyx library for c++ 是針對 vc 的一套繪相簿,介面簡單易用,用起來很像 tc 的 graphics.h 繪圖。Bresenham快速畫直線演算法
一 演算法原理簡介 演算法原理的詳細描述及部分實現可參考 假設以 x,y 為繪製起點,一般情況下的直觀想法是先求m dy dx 即x每增加1,y的增量 然後逐步遞增x,設新的點為x1 x j,則y1 round y j m 可以看到,這個過程涉及大量的浮點運算,效率上是比較低的 特別是在嵌入式應用中...
直線掃瞄 Bresenham演算法
計算機掃瞄直線原理 直線方程 y kx b y kx b 0 在第一象限畫線 x0,y0 x1,y1 當前點pi xi yi 則下一點必為p1 xi 1,yi 或 p2 xi 1,yi 1 理想直線靠近哪個點,就取那個點。推導 令f x,y y kx b,那麼理想直線上方有f 0,下方f 0.取p1...
Bresenham直線演演算法
法,它會算出一條線段在 n 維光柵上最接近的點。這個演演算法只會用到較為快速的整數加法 減法和位元移位,常用於繪製電腦畫面中的直線。是計算機圖形學中最先發展出來的演演算法。經過少量的延伸之後,原本用來畫直線的演演算法也可用來畫圓。且同樣可用較簡單的算術運算來完成,避免了計算二次方程式或三角函式,或遞...