基本圖形的掃描轉(zhuǎn)換_第1頁
基本圖形的掃描轉(zhuǎn)換_第2頁
基本圖形的掃描轉(zhuǎn)換_第3頁
基本圖形的掃描轉(zhuǎn)換_第4頁
基本圖形的掃描轉(zhuǎn)換_第5頁
已閱讀5頁,還剩123頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第三章基本圖形的掃描轉(zhuǎn)換

強(qiáng)調(diào)上課和上機(jī)紀(jì)律

?遲到三次作為曠課一次進(jìn)行處理,早退二

次作為曠課一次進(jìn)行處理

?曠課達(dá)三次者,不計(jì)平時(shí)成績(jī)(20%)

?實(shí)驗(yàn)作業(yè)兩次未交者,不計(jì)實(shí)驗(yàn)成績(jī)

(30%)

2of126

本章內(nèi)容

?3.1直線的掃描轉(zhuǎn)換

?3.2圓的掃描轉(zhuǎn)換

?3.3橢圓的掃描轉(zhuǎn)換

?3.4直線的反走樣技術(shù)

?本章小結(jié)

?習(xí)題

3of126

、r4、,

刖s

?光柵圖形顯示器是一個(gè)像素矩陣,如分辨

率為640X480,每個(gè)像素可以用一種或多種

顏色顯示,分別稱為單色顯示器或彩色顯

示器

?在光柵顯示器上顯示的任何一種圖形,實(shí)

際上都是具有一種或多種顏色的像素的集

4of126

圖形的掃描轉(zhuǎn)換

?圖形的掃描轉(zhuǎn)換:確定一個(gè)像素集合及其

顏色,用于顯示一個(gè)圖形的過程,稱為圖

形的掃描轉(zhuǎn)換或光柵化,也叫圖形的生成

5of126

圖形生成

?圖形生成是根據(jù)圖形的幾何信息和屬性信

息,結(jié)合圖形生成算法,計(jì)算出要顯示的

中間像素,而不像圖像生成是保存了圖像

的每一像素點(diǎn)的信息

■基本圖形的生成,首先要根據(jù)基本圖形的

特征找出它的幾何信息,然后根據(jù)一定的

生成算法實(shí)時(shí)地在顯示器上顯示出完整的

圖形

6of126

圖形掃描轉(zhuǎn)換步驟

?一般分為兩個(gè)步驟:先確定有關(guān)像素,再

用圖形的顏色或其它屬性對(duì)象素進(jìn)行某種

寫操作。后者通常是通過調(diào)用設(shè)備驅(qū)動(dòng)程

序來實(shí)現(xiàn)的。所以掃描轉(zhuǎn)換的主要任務(wù)就

是確定最佳逼近于圖形的像素集的生成算

7of126

理想直線

用一系列的象素點(diǎn)來逼近直線

8of126

?在一個(gè)圖形系統(tǒng)中,基本圖形(也稱為圖

元、圖素等)的生成技術(shù)是最基本的,任

何復(fù)雜的圖形都是由基本圖形組成的,基

本圖形生成的質(zhì)量直接影響該圖形系統(tǒng)繪

圖的質(zhì)量。所以,需要設(shè)計(jì)出精確的基本

圖形生成算法,以確保圖形系統(tǒng)繪圖的精

確性

9of126

3.1直線的掃描轉(zhuǎn)換

?3.1.1概述

?3.1.2數(shù)值微分DDA直線生成算法

?3.1.3中點(diǎn)直線生成算法

?3.1.4Bresenham直線生成算法

10of126

3.1.1概述

?直線的掃描轉(zhuǎn)換:確定最佳逼近于該直線的

一組象素,并且按掃描線順序,對(duì)這些象

素進(jìn)行寫操作

11of126

概述

?生成直線一般的準(zhǔn)則是:

-(1)線條應(yīng)該顯得筆直

?由連續(xù)點(diǎn)組成的直線要顯示在離散網(wǎng)格的平面上,

一定會(huì)有不經(jīng)過網(wǎng)格的點(diǎn),如左下圖。在這種情況

下,必須選擇靠近直線的網(wǎng)格點(diǎn)來逼近這條直線。

若選擇的好,線就顯得較直;否則就會(huì)較彎曲,如

概述

-(2)直線端點(diǎn)位置應(yīng)該準(zhǔn)確

?畫出的線段如果不準(zhǔn)確,往往會(huì)使兩條線之間不能

很好的鑲接,如下圖。

-(3)直線濃度應(yīng)該均勻

?線段的濃度與單位線段中所顯示的點(diǎn)數(shù)成正比。要

保持線段的濃度均勻端點(diǎn)應(yīng)該等距分布。只有平行

和成45。的線才能做到。,

13of126

概述

-(4)直線濃度應(yīng)該與線段的長(zhǎng)度和斜率無關(guān)

?要取得均勻的線段濃度,應(yīng)該保持每單位長(zhǎng)度的點(diǎn)

數(shù)是個(gè)常數(shù)。一般,采用線段的近似長(zhǎng)度,以及生

成直線的算法,使在線段近似長(zhǎng)度范圍內(nèi)保持線段

濃度均勻。

-(5)顯示線段的速度應(yīng)快

?生成直線可用軟件和硬件來實(shí)現(xiàn),一般情況下,硬

件要比軟件實(shí)現(xiàn)得快。

14of126

3.1.2數(shù)值微分DDA直線生成算法

?數(shù)值微分法,DDA(DigitalDifferential

Analyzer)是根據(jù)數(shù)學(xué)上直線的微分方程來設(shè)計(jì)

?設(shè)A(Xo,y()),B(Xi,yJ是直線的端點(diǎn)坐標(biāo),首先計(jì)

算出直線的斜率

k=dy/dx=Ay/Ax=(y1-y0)/(x1-x0)

宜線方程為:y=kx+B或x=1/k*y+T

15of126

-作為最底層的光柵圖形算法,在通常的

CAD圖形系統(tǒng)中,會(huì)被大量應(yīng)用,因此,

哪怕節(jié)約一個(gè)加法或減法,也是很了不起的

改進(jìn)。

?由此出發(fā)點(diǎn),導(dǎo)致增量算法的思想

根據(jù)k值做不同處理

?當(dāng)|k日時(shí),讓x每步增加1,y最多增加1,

然后用舍掉尾數(shù)的方法來確定直線上的像

素位置為(x,round(y))

?設(shè)當(dāng)前點(diǎn)為(4yj,則下一個(gè)像素Xj+i=%

+1,則

yi+i=kxi+1+B=k(x.+1)+B=(kXj+B)+k=1+k

即當(dāng)x每遞增1時(shí),y遞增斜率k

17of126

根據(jù)k值做不同處理

?當(dāng)|k|>l時(shí),應(yīng)當(dāng)讓y每步遞增1,這時(shí)x最多

增加1,然后然后用舍掉尾數(shù)的方法來確定

直線上的像素位置為(round(xby)

?設(shè)當(dāng)前點(diǎn)為(4yj,則下一個(gè)像素yi+i=x+l

,則

Xi+i=l/k*yi+i+T=l/k*(yi+l)+T=(l/k*yj+T)+l/k

=x.+l/k

即當(dāng)y每遞增1時(shí),x遞增斜率1/k

18of126

輸出坐標(biāo)求整

?由于屏幕上的坐標(biāo)為整數(shù)坐標(biāo),則真正作

為輸出顯示為:y輸出=ROUND(yJ,其中函

數(shù)ROUND()是指會(huì)尾的整數(shù)

?因此y輸出和丫門之間的量化誤差最大為1。

為了改善這方面的誤差,使x和y的值增加

0.5,使量化誤差在(?0?5,0,5)范圍之間

x=x0+0.5

y=y0+0.5

?ROUND(a)=(int)(a+0.5)

19of126

DDA直線生成舉例

?例:畫直線段Po(O,O)“Pi(5,2)k=0.4

xint(y+0.5)y+0.5

Line:P(O,0)—(5,2)

000+0.5o

100.4+0.5

210.8+0.5

311.2+0.5

421.6+0.5

522.0+0.5

20of126

DDA直線生成算法描述

1.if|Xi-XoF|y「yo|then

計(jì)算直線在y方向上的增量:length=|yi-y0|

2.else計(jì)算直線在x方向上的增量:length=M-Xo|

3.計(jì)算x方向的單位增量:dx=(x1-x0)/length//即1或1/k

4.計(jì)算y方向的單位增量:dy=(y1-y0)/length//BP1°Jck

5.置初值:x=x0,y=y0

6.fori=1tolengthdo

begin

7.輸出點(diǎn)(ROUND(x),ROUND(y))

8.計(jì)算下一個(gè)點(diǎn)坐標(biāo)x=x+dx,y=y+dy

end

9.endofalgorithm21of126

DDA直線生成算法程序

voidCTestView::OnDdaline()

{

CDC*pDC=GetDC();

COLORREFc=RGB(255,0,0);

intlength,i;

floatx,y,dx,dy;

length=abs(xb-xa);

if(abs(yb-ya)>length)

(

length=abs(yb-ya);

}

dx=(float)(xb-xa)/length;dy=(float)(yb-ya)/length;

x=(float)xa;y=(float)ya;

for(i=1;i<=length;i++)

(

pDC->SetPixel(ROUND(x),ROUND(y),c);

x=x+dx;y=y+dy;

}

ReleaseDC(pDC);

}22of126

DDA直線生成算法小結(jié)

?優(yōu)點(diǎn):

一在同一坐標(biāo)上,不可能連續(xù)停留兩次。

?缺點(diǎn):

-開始需要執(zhí)行一個(gè)除法△¥/△*或Ax/^y來確

定增量,用硬件來實(shí)現(xiàn)比較復(fù)雜和昂貴,用軟

件實(shí)現(xiàn)相對(duì)容易些,但效率較低

-浮點(diǎn)增量的連續(xù)迭加中取整誤差的積累會(huì)使長(zhǎng)

線段鎖計(jì)算的像素位置偏離實(shí)際線段

-取整操作和浮點(diǎn)運(yùn)算十分耗時(shí)

3.1.3中點(diǎn)直線生成算法

?采用增量思想的DDA算法,每計(jì)算一個(gè)象

素,只需計(jì)算一個(gè)加法,是否最優(yōu)?

?如非最優(yōu),如何改進(jìn)?

?目標(biāo):進(jìn)一步將一個(gè)加法改為一個(gè)整數(shù)加

法。

?新思路一>DDA算法采用點(diǎn)斜式,可否采

用其他的直線表示方式?

?隱式表示:F(x,y)=ax+by+c=O

24of126

3.1.3中點(diǎn)直線生成算法

?假定直線斜率0<K<1,且

已確定點(diǎn)亮象素點(diǎn)P(Xi,y),

則下一個(gè)與直線最接近的

像素只能是Pi(x+1,yj點(diǎn)或

「2(%+1?+1)點(diǎn)。設(shè)

1\/1(玉+1邛+0.5)為中點(diǎn),Q

為交點(diǎn)

?問題:如何確定下一個(gè)點(diǎn)

亮的象素?

中點(diǎn)畫線算法示意圖

25of126

1.原理

?M在Q的下方:P2離直

線更近,取P2

?M在Q的上方:離直

線更近,取

?M與Q重合:PvP2任

取一點(diǎn)

?問題:如何判斷M與Q

點(diǎn)的關(guān)系?

26of126

2.算法

?假設(shè)直線的起點(diǎn)和終點(diǎn)分別為(Xo,yo)和(xi,y]),則直

線方程為:F(x,y)=ax+by+c=O,看

?Srjqa=yo.yijb=xrx0,c=xoy1-x1yo

?由常識(shí)知:

「尸(x,y)=0點(diǎn)與直線重合

I/、

《尸(],F)>0點(diǎn)在直線上方

/(x,y)<0點(diǎn)在直線下方

?結(jié)論:欲判斷中點(diǎn)M點(diǎn)是在Q點(diǎn)上方還是在Q點(diǎn)下方,只

需把M代入F(x,y),并檢查它的符號(hào)。

27of126

構(gòu)造判別式

?將中點(diǎn)坐標(biāo)M(Xj+1,yi+0.5)代

入F(x,y)方程中,并判斷它

的符號(hào)

-構(gòu)造判別式

d=F(M)=F(xi+1,yi+0.5)=

a(Xj+1)+b(yj+0.5)+c

-當(dāng)d〈0時(shí),表示M在直線(Q

點(diǎn))下方,則取P2為下一點(diǎn);

-當(dāng)d>0時(shí),表示M在直線(Q

點(diǎn))上方,則取〕為下一點(diǎn);

P問題:能否采用增

-當(dāng)d=0時(shí),表示M在直線中,

取Pl或P2均可,約定取Py量算法呢?

28of126

增量算法

?d=F(M)=F(Xj+1,yj+0.5)=a(Xj+1)+b(yj+0.5)+c

?這樣做,每一個(gè)象素的計(jì)算量是4個(gè)加法,

兩個(gè)乘法

?“山窮水盡疑無路”

?如果也采用增量算法呢?

?d是與y的線性函數(shù),因此可采用增量計(jì)

算,提高運(yùn)算效率

29of126

遞推式子

?(1)當(dāng)d>=0時(shí),取Pi為下一個(gè)像素點(diǎn),欲判斷

再下一個(gè)像素,應(yīng)計(jì)算

d1=F(M1)=F(xi+2,yi+0.5)=a(Xj+2)+b(yi+0.5)+c=d+a

注:d=F(M)=F(xi+1,yi+0.5)=a(xi+1)+b(yi+0.5)+c

?即d的增量△d=a

30of126

遞推式子(續(xù))

?(2)當(dāng)d<0時(shí),取P2為下一個(gè)像素點(diǎn),欲判斷再

下一個(gè)像素,應(yīng)計(jì)算

d2=F(M2)=F(xj+2,yj+1.5)=a(xj+2)+b(yj+1.5)+c=d+a+b

注:d=F(M)=F(xi+1,yi+0.5)=a(Xj+1)+b(yj+0.5)+C

?即d的增量△d=a+b

31of126

遞推式子(續(xù))

?(3)求d的初始值

-第一個(gè)像素點(diǎn)為起點(diǎn)(x0,y0),則Mo(Xo+1,yo+O.5)

d0=F(x0+1,yo+O.5)=a(xo+1)+b(yo+O.5)+c

=(axo+byo+c)+a+O.5b

=F(xo,yo)+a+O.5b

-由于起點(diǎn)(x0,y0)在直線上,即F(x°,yo)=O,所以

do=a+O.5b

32of126

算法改進(jìn)

?至此,至少新算法可以和DDA算法一樣好

?能否再做改進(jìn)?

?能否實(shí)現(xiàn)整數(shù)運(yùn)算?

33of126

算法改進(jìn)

?由于在整個(gè)算法中只考慮d的符號(hào),而且d

的增量都是整數(shù),只是初始值包含小數(shù),

因此,在算法中可以用2d代替d,從而去掉

小數(shù)

d0'=2d0=2a+b

d/=2d1=2(d+a)=2d+2a,即=2a

d2'=2d2=2(d+a+b)=2d+2a+2b,BPAd

=2(a+b)

34of126

中點(diǎn)直線生成算法舉例

?用中點(diǎn)畫線法Po(O,O)Pi(5,2)k=O.4

?a=y()?y產(chǎn)2b=x1-x0=5

?d0=2a+b=1d1=2a=-4d2=2(a+b)=6

XiYid

1001d>0,取P1,增量為d1

210-3CKO,取P2,增量為d2

3213

431-1

5425

6521

中點(diǎn)直線生成算法程序

voidCTestView::OnMidline()

{

CDC*pDC=GetDC();

COLORREFc=RGB(0,255,0);

〃基于中點(diǎn)算法畫斜率在0和1之間的直線,如xa=0,ya=0,xb=500,yb=200

inta,b,d1,d2,d,x,y;

a=ya-yb;b=xb-xa;

d=2*a+b;d1=2*a;d2=2*(a+b);

x=xa;y=ya;

pDC->SetPixel(x,y,c);

while(x<=xb)

(

if(d<0)

{y++;d+=d2;〃取P2,并且計(jì)算下一點(diǎn)的d值}

else

{d+=d1;〃取P1,并且計(jì)算下一點(diǎn)的d值}

x++;

pDC->SetPixel(x,y,c);

)

ReleaseDC(pDC);36of126

}

voidCTestView::OnRandomkmidline()

{

CDC*pDC=GetDC();COLORREFc=RGB(0,0,255);

intx=xa,y=ya;

inta=ya-yb,b=xb-xa;

intex=(b>=0?1:(b=-b,-1));

intcy=(a<=0?1:(a=-a,-1));

pDC->SetPixel(x,y,c);

intd,d1,d2;

if(-a<=b)II斜率絕對(duì)值v=1

(

d=2*a+b;d1=2*a;d2=2*(a+b);

while(x!=xb)

{

if(d<0)

y+=cy,d+=d2;

else

d+=d1;

x+=ex;

pDC->SetPixel(x,y,c);

)

}

elseII斜率絕對(duì)值>1

(

d=2*b+a;d1=2*b;d2=2*(a+b);

while(y!=yb)

(

if(d<0)

d+=d1;

else

x+=ex,d+=d2;

y+=cy;

pDC->SetPixel(x,y,c);

)

}

ReleaseDC(pDC);

)

3.1.4Bresenham直線生成算法

?問題

-DDA算法采用點(diǎn)斜式,中點(diǎn)法采用隱式表示

-中點(diǎn)法可以有整數(shù)算法

-其他表示可以推出整數(shù)算法嗎?

38of126

3.1.4Bresenham直線生成算法

?Bresenham(布雷森漢姆)算法是計(jì)算機(jī)圖

形學(xué)領(lǐng)域中使用最廣泛的直線生成技術(shù)。

該算法適合于光柵圖形顯示器、數(shù)字化儀

等設(shè)備

Bresenham直線算法描繪的直線

39of126

1.算法思想

?Bresenham算法也是通過在每列像素中確定與理

想直線最近的像素來進(jìn)行直線的掃描轉(zhuǎn)換的。通

過各行、各列像素中心構(gòu)造一組虛擬網(wǎng)格線,按

直線從起點(diǎn)到終點(diǎn)的順序計(jì)算直線與各垂直網(wǎng)格

線的交點(diǎn),然后確定該列像素中與此交點(diǎn)最近的

像素

of126

算法思想

?Bresenham算法與DDA算法類似,只是不

再采用舍去尾數(shù)的辦法,而是巧妙地采用

了增量計(jì)算,使得對(duì)于每一列,只要檢查

一個(gè)誤差項(xiàng)的符號(hào),就可以確定該列所求

的像素

P二(4o,y°)1

41of126

M

2.遞推公式

?設(shè)直線的起始點(diǎn)為(Xo,yo),終點(diǎn)為(乂外必),

則直線的斜率

?k=Ay/Ax=(y1-y0)/(x1.x0)

?由DDA算法可知:產(chǎn)y+k

?判斷d=yg-ROUND(yi),可判定下一像素點(diǎn)選取

?考慮OSkR的情況:

一起始點(diǎn)(Xo/y。)在像素中心,所以誤差項(xiàng)初值d=0;

-確定下一個(gè)像素點(diǎn)時(shí),當(dāng)x遞增定由,誤差項(xiàng)d的值增加

一個(gè)斜率k的值,即€1=€1+1<1

2.遞推公式(續(xù))

?⑴當(dāng)曲0.5時(shí),取點(diǎn)(x+1,y+1),且d=d?1

(一旦dNl,就把它減去1,這樣保證d在0、

1之間);

?(2)當(dāng)dv0.5時(shí),取點(diǎn)(x+1,y),誤差d值不變;

?為方便計(jì)算,令誤差e=d-0.5,則有

-(1)e=e+k,并且誤差e的初值,e=?0.5;

-(2)當(dāng)eNO時(shí),取點(diǎn)(x+1,y+1),>e=e-1;

-(3)當(dāng)evO時(shí),取(x+1,y),誤差e值不變;

43of126

算法步驟

?1,輸入直線的兩端點(diǎn)Po(x0,yo)和PEy)。

?2.計(jì)算初始值A(chǔ)x、Ay>e=-0.5>x=x0>

V=Vo。

?3.繪制點(diǎn)(x,y)。

?4念更新為e+k,判斷e的符號(hào)。若e>0,貝U

(x,y)更薪為(x+1,y+1),同時(shí)將e更新為e-1;

否貝辰y(tǒng))匣薪為(x+1,y)。

?5.當(dāng)直線沒有畫完時(shí),重復(fù)步驟3和4。否則

結(jié)束。

44of126

Bresenham直線生成算法程序W

voidCTestView::OnBresenhamline()

{

CDC*pDC=GetDC();

COLORREFc=RGB(0,255,0);

〃基于Bresenham算法畫斜率在0和1之間的直線,如xa=0,ya=0,xb=500,yb=200

intx,y,dx,dy,i;

floatk,e;

dx=xb-xa;dy=yb-ya;

k=(float)dy/dx;e=-0.5;x=xa;y=ya;

for(i=0;i<=dx;i++)

{

pDC->SetPixel(x,y,c);

x=x+1;e=e+k;

if(e>=0)

{y=y+1;e=e-1;}

}

ReleaseDC(pDC);

}

算法舉例

?設(shè)直線的起點(diǎn)為(0,0),終點(diǎn)為(5,

3),按Bresenham算法計(jì)算并確定個(gè)像

素點(diǎn)位置

?計(jì)算dx=5,dy=3,k=3/5=0.6,誤差e=?0,5

46of126

算法舉例■步驟

?x=0,y=0

?(1)i=0:輸出像素(0,0)

-x=1,e=e+k=-0.5+0,6=0.1>0,貝Ll有y=y+1=1,e=e-1=0.1-

1=-0.9

?(2)i=1:輸出像素(1,1)

-x=2,e=e+k=-0.9+0.6=-0,3v0,貝Ll有y和e不變,即

y=1,e=-0.3

?(3)i=2:輸出像素(2,1)

-x=3,e=e+k=-0.3+0.6=0,3>0,貝Ll有y=y+1=2,e=e-

1=0.3-1=-0.7

47of126

算法舉例-步驟

?(4)i=3:輸出像素(3,2)

-x=4,e=e+k=-0.7+0.6=-0.1<0,貝ll有y和e不變,

即y=2,e=-0.1;

?(5)i=4:輸出像素(4,2)

-x=5,e=e+k=-0,1+0.6=0,5>0,貝ll有y=y+1=3,e=

e-1=0.5-1=-0.5;

?(6)i=5:輸出像素(5,3)

一x=6,e=e+k=-0.5+0.6=0,1>0,貝有y=y+1=4,e=

e-1=0.1-1=-0.9;

?程序結(jié)束48of126

算法改進(jìn)1

?在每次計(jì)算e值時(shí)得到都是小數(shù),為了便于

硬件計(jì)算,去掉小數(shù)。由于算法只需要用

到誤差項(xiàng)e的符號(hào),所以可以兩邊乘2作如

下替換:

-誤差e'的初值e'=-1

-e=e+k替換為e'=e'+2k

-e=e-1替換為為=e'-2

49of126

算法改進(jìn)程序1

voidCTestView::OnBresenhamline()

{

CDC*pDC=GetDC();

COLORREFc=RGB(0,255,0);

〃基于Bresenham算法畫斜率在0和1之間的直線,如xa=0,ya=0,xb=500,yb=200

intx,y,dx,dy,i;

floatk,e;

dx=xb-xa;dy=yb-ya;

k=(float)dy/dx;e=-1;x=xa;y=ya;

for(i=0;i<=dx;i++)

{

pDC->SetPixel(x,y,c);

x=x+1;e=e+2*k;

if(e>=0)

{y=y+1;e=e-2;}

}

ReleaseDC(pDC);

}

算法改進(jìn)2

?由于只需判斷e的符號(hào),K涉及到除法,所

以式子e=e+k=e+/Xy/4x兩邊同乘2Zkx,

這樣可以不做除法和去掉小數(shù)

-誤差e'的初值e'=-Ax

-e=e+k替換為e'=e?+2Ay

-e=e-1替換為為=e'-2Ax

51of126

算法改進(jìn)程序2

voidCTestView::OnBresenhamline()

{

CDC*pDC=GetDC();

COLORREFc=RGB(0,255,0);

〃基于Bresenham算法畫斜率在0和1之間的直線,如xa=0,ya=0,xb=500,yb=200

intx,y,dx,dy,i,e;

dx=xb-xa;dy=yb-ya;

e="dx;x=xa;y=ya;

for(i=0;i<=dx;i++)

(

pDC->SetPixel(x,y,c);

x=x+1;e=e+2*dy;

if(e>=0)

{y=y+1;e=e-2dx;}

)

ReleaseDC(pDC);

}

Bresenham直線生成算法程序(任意

斜率K)

?見程序

53of126

上機(jī)實(shí)踐1

?1.將10個(gè)像素作為步距單位,編出DDA算

法的演示示例

(100J00]

h

y\9—

>■ck

f-

f

L

■'■)

-(■

UI

,s

yJ

M*

■■r-

■Uk

JLr-

,U|

■Js9-

f

r?V

---L-

?、r

.--lJ

c--

r八卜

--x

q-1

?MhjJ

、

.?

r*?■h

八L

--

F9k

f

11八ir-

f、/k

r,?Vr-

i

--

(■-

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論