C語言畫直線 Bresenham方法

2021-09-02 01:49:55 字數 1034 閱讀 6978

數值微分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 維光柵上最接近的點。這個演演算法只會用到較為快速的整數加法 減法和位元移位,常用於繪製電腦畫面中的直線。是計算機圖形學中最先發展出來的演演算法。經過少量的延伸之後,原本用來畫直線的演演算法也可用來畫圓。且同樣可用較簡單的算術運算來完成,避免了計算二次方程式或三角函式,或遞...