freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

計(jì)算機(jī)圖形學(xué)第1-5章課后習(xí)題參考答案(參考版)

2025-06-21 18:58本頁面
  

【正文】 closegraph()。 clipdraw(x1,y1,a,x2,y2,b)。 rectangle(w1,w3,w2,w4)。 //清除屏幕 getch()。 //畫出裁剪之前的直線 getch()。 //畫出窗口 setcolor(3)。 //圖形初始化 setcolor(4)。driver,amp。 //分別初始化兩個(gè)端點(diǎn)的編碼數(shù)組 int driver=VGA, mode=VGAHI。039。039。039。039。}。,39。,39。,39。 //讀入直線兩個(gè)端點(diǎn)的坐標(biāo) char a[4]={39。x2,amp。x1,amp。 //說明第二個(gè)端點(diǎn)不在窗口內(nèi),第一個(gè)在,直線與窗口有一個(gè)交點(diǎn) }}void main(){ int x1,y1,x2,y2。amp。s2==0) line(x11,y11,x2,y2)。 //說明兩個(gè)端點(diǎn)均不在窗口內(nèi),直線與窗口有兩個(gè)交點(diǎn) if(s1==1amp。amp。 s2=1。039。amp。039。amp。039。amp。039。 s1=1。039。amp。039。amp。039。amp。039。) line(x1,y1,x2,y2)。 *(b+3)==39。 amp。 *(a+3)==39。 amp。 *(b+2)==39。 amp。 *(a+2)==39。 amp。 *(b+1)==39。 amp。 *(a+1)==39。 amp。 *b==39。 amp。 //得到直線第二個(gè)端點(diǎn)的編碼 if(*a==39。 code(x1,y1,a)。}void clipdraw(int x1, int y1, char *a, int x2, int y2, char *b){ int x11,y11,x21,y21。139。139。139。139。 y=yt4。amp。amp。amp。 y=yt3。amp。amp。amp。 y=yt2。amp。amp。amp。 y=yt1。amp。amp。amp。 yt4=w4。139。 yt3=w3。139。 xt2=w2。139。 xt1=w1。139。y,int x1,int y1,int x2,int y2) //求出與區(qū)域中各個(gè)方向邊的交點(diǎn){ int xt1=0,yt1=0,xt2=0,yt2=0,xt3=0,yt3=0,xt4=0,yt4=0。 //定義窗口的幾個(gè)關(guān)鍵點(diǎn)坐標(biāo)void clipline(char *a,int amp。解:如圖所示,實(shí)線部分為原圖,虛線部分為變換后得到的圖形: Y 30 15 (1) (2)10 20 40 X(1) 原先坐標(biāo) 變換矩陣 變換后坐標(biāo) *=(2) 原先坐標(biāo) 變換矩陣 變換后坐標(biāo) *= 歸一化 (10,10),(10,30),(30,15),試對其進(jìn)行下列變換,寫出變換矩陣,畫出變換后的圖形。如果一旦出現(xiàn)了這種情況,fill()函數(shù)里面的諸多判斷也會出現(xiàn)問題,而且這個(gè)問題是隨著多邊形的端點(diǎn)數(shù)據(jù)的變化而難以捕捉。大家可以試試u=1,n=3,F(xiàn)(100, 100),G(100, 75),H(175, 135),如圖(a)所示;此時(shí)的問題在于種子的選取,計(jì)算出來的種子y坐標(biāo)為105,沒有問題,此時(shí)i從0開始向右搜索,遇到兩個(gè)邊界點(diǎn)分別記錄并在第二個(gè)邊界點(diǎn)停止搜索,那么記錄的應(yīng)該分別是A點(diǎn)(110, 105)和B點(diǎn)(, 105),然后種子的x坐標(biāo)就應(yīng)該是(110+)/2=123,結(jié)果程序運(yùn)行后居然是(110+111)/2=110,這個(gè)結(jié)果說明A點(diǎn)是邊界,A點(diǎn)緊右相鄰的點(diǎn)也是邊界點(diǎn),看這個(gè)圖就知道不可能啊,在理論上是絕不可能。}特別指出:該程序在理論上是沒有問題的,但是由于使用了line函數(shù),導(dǎo)致某些多邊形的端點(diǎn)數(shù)據(jù),會出現(xiàn)運(yùn)行未果或者錯(cuò)誤的問題。 getch()。//將種子點(diǎn)作為參數(shù)傳入fill()方法 delay(1000)。//第一個(gè)交點(diǎn)出棧,雖然覆蓋了Y值,但這不重要,我們要的是X值 i=(i+n)/2。//i是記錄當(dāng)前的X值 } pop(i,j)。 n=n+1。amp。 n=0。//依次畫線,畫出多邊形 } //畫完多邊形后,棧為空 //find the y value j=(ya+yi)/2。 delay(500)。 px0=px1。//記錄最后一個(gè)頂點(diǎn) //draw the plot while(stack != 0) { pop(px1,py1)。//輸入的最后一個(gè)頂點(diǎn)出棧 px=px0。 setcolor(4)。 } setbkcolor(0)。//ya是最大Y值 if(yipy) yi=py。py)。 scanf(%d,%d,amp。in。n)。k++) { printf(pleas input the number of the top points:)。//看看究竟有多少個(gè)多邊形(可能多邊形里包含了多邊形) for(int k=0。 scanf(%d,amp。 int ya=0,yi=getmaxy()。 int i,j。gdriver,amp。gmode)。/*顯示模式*/ detectgraph(amp。 } } } }}void main(){ void fill(int x,int y)。i=xr。go2==1)//如果找到最左和最右,則執(zhí)行 { push(xr,y0)。 } if(go==1amp。go2==0)//找下一條掃描線的最左像素 { if(getpixel(xl,y0)!=4) go2=1。 } while(xlxramp。go==0)//找下一條掃描線的最右像素 { if(getpixel(xr,y0)!=4) go=1。 while(xrxlamp。 xl=xlold。//go down 向下移一條掃描線 go=0。i++)//從最左到最右循環(huán),在每個(gè)連續(xù)區(qū)間上找一個(gè)種子點(diǎn)入棧 { if(getpixel(i,y0)!=4)//如果不是邊界點(diǎn),什么也不做 {} //這樣做的目的是如果出現(xiàn)ooBBooBBoooBooo的情況,其中o是未填充的點(diǎn),B是邊界點(diǎn) else if(getpixel(i1,y0)!=4)//如果是邊界點(diǎn),則看它左邊的點(diǎn)是不是邊界點(diǎn),如果不是,則入棧 { push(i1,y0)。//先將上一條線上的最右點(diǎn)作為種子點(diǎn)入棧 for(i=xl。amp。 //如果超出,則加1 else go2=1。amp。 //如果超出,則減1 else go=1。amp。//go up 向上移一條掃描線 go2=0。//記錄最左值 xlold=xl。 x0=x01。//再記錄一次最右值,以備后用 x0=x1。 } xr=x01。//取種子右邊的像素 while(getpixel(x0,y)!=4)//fill right 填充右邊像素 { putpixel(x0,y,4)。 //從棧中將棧頂元素彈出 putpixel(x,y,4)。//種子像素入棧 while(stack!=0)//如果棧不空則循環(huán),stack==0表示???{ go=0。 int i=0。}//fill the plotvoid fill(int x,int y){ int x0,y0,xl,xr,xlold,xrold。 stack=stacknext。 xx=stackx。yy){ link top。}//pop an elementvoid pop(int amp。 new_nodenext=stack。 new_nodex=xx。 //stack標(biāo)識棧頂指針//push an elementvoid push(int xx,int yy){ stack_list *new_node。typedef stack_list *link。}。 int y。BDEHFCGA該測試多邊形的各個(gè)端點(diǎn)坐標(biāo)分別為:A(50, 150),B(50, 100),C(100, 50),D(250, 50),E(200, 150);F(100, 100),G(100, 75),H(175, 135);/****************************************************************************本程序?qū)崿F(xiàn)區(qū)域填充功能,首先輸入多邊形頂點(diǎn)的個(gè)數(shù),回車,然后依次輸入各頂點(diǎn)的坐標(biāo)格式如下:100,123回車一定要在中間用逗號隔開噢,輸完最后一個(gè)點(diǎn)后,屏幕上會依次畫出各條邊,最后填充滿程序還不完善,比如顏色值應(yīng)該用變量表示以易于修改,畫多邊形和求種子點(diǎn)應(yīng)該做成獨(dú)立的函數(shù)等等,以后再做上吧,這是細(xì)節(jié)的問題掃描的次序:先上后下進(jìn)棧的次序:先右后左測試數(shù)據(jù):第一個(gè)多邊形:A(50, 150),B(50, 100),C(100, 50),D(250, 50),E(200, 150);第二個(gè)多邊形:F(100, 100),G(100, 75),H(175, 135);*****************************************************************************/include include include include include //creat a stackstruct stack_node{ //stack_node() {next=NULL。14. 已知多邊形各頂點(diǎn)坐標(biāo)為(2, 2)(2, 4)(8, 6)(12, 2)(8, 1)(6, 2)及(2, 2),在用多邊形區(qū)域填充時(shí),請寫出ET及全部AET內(nèi)容。 closegraph()。 //根據(jù)初始數(shù)據(jù)建立邊表 po_fill(et, e, color)。 (5,10,15,1)。 (2,5,8,4/3)。 int color=5。gmode,)。 initgraph(amp。 gdriver=DETECT。 } } //用xi+m來替代原有的xi } i++。 u=unext。 u=[0]。 s=1。 else [0]=wnext。 } if(!w) break。 wymax!=i) { z=w。 while(w amp。 w=[0]。 int s=1。j++) putpixel(j,i,color)。 for(int j=gxi。 while(fnext) { g=f。 } } //按照xi值的大小將當(dāng)前ET表中的記錄放置到AET表中 Enodeint *f,*g。 qnext=NULL。 rnext=q。 rnext) r=rnext。} else { while(qxirxi amp。} if(rxiqxi) {[0]=q。 rnext=q。 r=q。 while(p) { Enodeint *q=new Enodeint(pymax,pxi,pm,NULL)。 p=[i]。etp, int ep, int color) //多邊形填充函數(shù)的實(shí)現(xiàn){ int i=1。 return Success。 EnodeT *p=new EnodeT(ymax, xi, m, a[u])。 } } delete []a。 delete q。 q=p。in。 delete a[0]。i++) a[i]=0。 for(int i=0。 //定義了邊表類template class TETT::ET(int mSize){ n=mSize。 //覆蓋該多邊形的掃描線的總數(shù),從0開始計(jì)數(shù) EnodeT **a。 ResultCode Insert(int u, T ymax, float xi, float m)。 //定義了ET表和AET表中結(jié)點(diǎn)的結(jié)構(gòu)體template class Tclass ET{ public: ET(int mSize)。 //m表示斜率的倒數(shù) Enode *next。 } T ymax, xi。 m=pm。} Enode(T pymax, float pxi, float pm, Enode *pnext) { ymax=pymax。[注]邊關(guān)系的建立可通過鄰接矩陣的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn),權(quán)值可以為該矩陣行編號對應(yīng)點(diǎn)的y坐標(biāo)值,ET邊表采用鄰接表的數(shù)據(jù)結(jié)構(gòu)第2步:根據(jù)ET表構(gòu)建AET表,并逐行完成多邊形填充,具體的C++代碼如下:(1) ,主要是邊表結(jié)點(diǎn)結(jié)構(gòu)體和ET邊表類的實(shí)現(xiàn)enum ResultCode{Success, Failure}。解:
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1