前言


  在數(shù)學(xué)上,理想的直線是沒(méi)有寬度的,它是由無(wú)數(shù)個(gè)點(diǎn)構(gòu)成的集合。對(duì)直線進(jìn)行光柵化時(shí),只能在顯示器說(shuō)給定的有限個(gè)像素組成的矩陣中,確定最佳逼近于該直線的一組像素,并且按掃描線順序。

  本節(jié)介紹繪制線寬為一個(gè)像素的直線的三個(gè)常用算法:數(shù)值微分中點(diǎn)畫線Bresenham算法。

 

數(shù)值微分法


  已知過(guò)端點(diǎn) P0(x0, y0),P1(x1, y1) 的直線段 L(P0, P1);直線斜率為 k = (y1 - y0) / (x1 - x0)。

  于是 yi+1 = kxi+1 + b。

  于是,x每增加1,y就增加k。畫點(diǎn)的時(shí)候還需要判斷 int(y+0.5) 向下取整。

seo優(yōu)化培訓(xùn),網(wǎng)絡(luò)推廣培訓(xùn),網(wǎng)絡(luò)營(yíng)銷培訓(xùn),SEM培訓(xùn),網(wǎng)絡(luò)優(yōu)化,在線營(yíng)銷培訓(xùn)

 1 // 數(shù)值微分法,偽代碼 2 void DDAline(int x0, int y0, int x1, int y1) { 3     int dx, dy, x=x0, y=y0; 4     double k; 5     dx = x0 - x1;&
        
		

網(wǎng)友評(píng)論