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

正文內(nèi)容

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

2025-06-03 18:58 本頁面


【正文】 (y2y1))length=abs(x2x1)。elselength=abs(y2y1)。increx=(x2x1)/length。 increy=(y2y1)/length。 x=x1。y=y1。for(i=1。i=length。i++){putpixel(x,y,1)。 x=x+increx。y=y+increy。} }void main(){int driver=DETECT,mode=0。initgraph(amp。driver,amp。mode,””)。int x1=0,y1=0,x2=4,y2=12。int x3=12,y3=4。DDA_Line(x1,y1,x2,y2)。DDA_Line(x1,y1,x3,y3)。getch()。}3. 根據(jù)逐點(diǎn)比較法編一程序畫一段圓弧,其圓心為(0,0),圓弧兩點(diǎn)為A(5,0)、B(0,5)方法1:順4象限include include include void ZDBJ_ARC(float x0,float y0,float x1,float y1,float x2,float y2)。void main(){ int gdriver=CGA,mode=CGAC0。 initgraph(amp。gdriver,amp。mode, )。 ZDBJ_ARC(0,0,25,0,0,25)。 getch()。 closegraph()。}void ZDBJ_ARC(float x0,float y0,float x1,float y1,float x2,float y2){ float f=,F。 float dx=1,dy=1。 while(abs(x1x2)1) { if(f=0) { x1=x1dx。 y1=y1。 putpixel(x1,y1,1)。 f=f2*dx*(x1x0)+dx*dx。 } else { x1=x1。 y1=y1+dy。 putpixel(x1,y1,1)。 f=f+2*dy*(y1y0)+dy*dy。 } }}方法2:逆4象限include include include void ZDBJ_ARC(float x0,float y0,float x1,float y1,float x2,float y2)。void main(){ int gdriver=CGA,mode=CGAC0。 initgraph(amp。gdriver,amp。mode, )。 ZDBJ_ARC(0,0,0,25,25,0)。 getch()。 closegraph()。}void ZDBJ_ARC(float x0,float y0,float x1,float y1,float x2,float y2){ float f=,F。 float dx=1,dy=1。 while(abs(y1y2)1) { if(f0) { x1=x1。 y1=y1dy。 putpixel(x1,y1,1)。 f=f2*dy*abs(y1y0)+dy*dy。 } else { x1=x1+dx。 y1=y1。 putpixel(x1,y1,1)。 f=f+2*dx*abs(x1x0)+dx*dx。 } }}方法3:順1象限include“” //省略了圖形初始化的步驟ABinclude“”include “”void main(){int x1=5,y1=0,x2=0,y2=5。int x0=0,y0=0。int R=sqrt((x2x0)* (x2x0)+(y2y0)* (y2y0))。int dx=abs(x2x1)。int dy=abs(y2y1)。int n=dx+dy。putpixel(x2,y2,1)。int f。int x=x2,y=y2。for(int i=0。in。i++){f=(xx0)* (xx0)+(yy0)* (yy0)R*R。if(f=0)putpixel(x,y,1)。elseputpixel(x++,y,1)。}getch()。closegraph()。} //4. 編一程序用角度DDA法畫一圓 //以圓點(diǎn)為圓心,半徑為20的圓include “” //省略了圖形初始化的步驟include “”include “”void main(){int x0=0,y0=0,R=20。int x1,y1,xi,yi。int N=R*8。float a=2*。x1=20,y1=0。for(int i=1。i=N。i++){xi=x0+R*cos(i*a)yi=y0+R*sin(i*a)。line(x1,y1,xi,yi)。x1=xi。y1=yi。}getch()。closegraph()。}5. 如果線段端點(diǎn)坐標(biāo)值不是整數(shù),采用DDA算法產(chǎn)生的直線和將端點(diǎn)坐標(biāo)值先取整后再用Bressenham算法產(chǎn)生的直線是否完全相同?為什么?能否擴(kuò)充整數(shù)Bressenham算法使之能夠處理當(dāng)線段端點(diǎn)坐標(biāo)值不是整數(shù)的情況。答:不相同。因?yàn)镈DA算法總是選擇△x或者△y中的較大者作為步進(jìn)的方向,不失一般性,假設(shè)選擇x方向,則x方向每前進(jìn)一個(gè)像素點(diǎn),y方向前進(jìn)的像素點(diǎn)個(gè)數(shù)應(yīng)該在[0, 1]區(qū)間,但是由于采用了(向上或者向下或者四舍五入)取整運(yùn)算,必然會(huì)導(dǎo)致某些像素點(diǎn)偏在了真實(shí)直線的一側(cè)。而Bressenham算法每一步都會(huì)根據(jù)實(shí)際直線與網(wǎng)格的距離來決定下一個(gè)像素點(diǎn)的選擇,因此所選像素點(diǎn)更加貼近于真實(shí)的直線??梢詳U(kuò)充整數(shù)Bressenham算法使之能夠處理當(dāng)線段端點(diǎn)坐標(biāo)值不是整數(shù)的情況。6. 若采用Bresenham算法實(shí)現(xiàn)畫圓,寫出算法實(shí)現(xiàn)的具體流程(包括判別公式推導(dǎo)等等)。答:給定圓心在原點(diǎn),半徑為R的圓,其方程為x2+y2=R2,構(gòu)造函數(shù)F(x, y)= x2+y2R2,對(duì)于圓上的點(diǎn),有F(x, y)=0;對(duì)于圓外的點(diǎn),F(xiàn)(x, y)0;而對(duì)于圓內(nèi)的點(diǎn),F(xiàn)(x, y)0。YXPPdPuM1/8圓弧PuPdM此處僅考慮如圖所示的第一象限內(nèi)x∈的1/8圓弧,此時(shí)中點(diǎn)Bresenham畫圓算法要從(0, R)到()順時(shí)針地確定最佳逼近于該圓弧的像素序列。由于最大位移方向?yàn)閤,因此其基本原理:每次x方向上走一步,而y方向上或減1或減0。假定當(dāng)前與圓弧最近者已確定,為P(xi, yi),那么下一候選像素只能是正右方的Pu(xi +1, yi)和右下方的Pd(xi +1, yi1)。到底選取哪一個(gè)候選點(diǎn)依舊用中點(diǎn)進(jìn)行判別。假設(shè)M是Pu和Pd的中點(diǎn),即有M(xi +1, ),則當(dāng)F(xM, yM)0,M在圓內(nèi),這說明Pu離圓弧更近,應(yīng)取其為下一個(gè)像素點(diǎn);當(dāng)F(xM, yM)0,M在圓外,說明Pd離圓弧更近;當(dāng)F(xM, yM)=0,則約定取Pd。構(gòu)造判別式di=F(xM, yM)= F(xi +1, )=(xi +1)2+()2 R2(1) 當(dāng)di0,取Pu(xi +1, yi),計(jì)算下一步的的判別式 di+1=F(xu, yu)= F(xi +2, )= (xi +2)2+()2 R2= di+2xi+3 所以沿正右方向,di的增量為2xi+3。(2) 當(dāng)di0,取Pd(xi +1, yi+1),計(jì)算下一步的的判別式 di+1=F(xd, yd)= F(xi +2, )= (xi +2)2+()2 R2= di+2(xiyi)+5所以沿右下方向,di的增量為2(xiyi)+5。顯然,所繪制圓弧段的第一個(gè)像素為P0(0, R),可以令d’=,則判別式di0對(duì)應(yīng)于di,由于d始終是整數(shù),di0。7. 已知4個(gè)型值點(diǎn)(,),(,),(,),(,),求各段三次樣條曲線。Si(X)(i=1,2,3),設(shè)邊界條件為拋物線端(, )(, )(, )(, )解:m1=x2x1=, m2=x3x2=, m3=x4x3=1。λ2=m2/(m2+m1)=。u2=m1/(m1+m2)=。λ3=m3/(m2+m3)=。u3=m2/(m2+m3)=。R2=3*[u2*(y3y2)/m2+λ2*(y2y1)/m1]=。R3=3*[u3*(y4y3)/m3+λ3*(y3y2)/m2]=。于是有+2b2+= …………(1)+2b3+= …………(2)又邊界拋物線端b1+b2=2 …………………………(3)b3+b4=1 …………………………(4)由(1),(2),(3),(4)得b1=39/38, b2=37/38, b3=3/38, b4=41/38從而c1=1/57。d1=0。c2=1/57。d2=64/513。c3=11/19。d3=0。故可得s1(x)=2+39/38(x1)1/57(x1)2 x[, ]s2(x)=+37/38()1/57()264/513()3 x[, ]s3(x)=+3/38(x4)11/19(x4)2 x[, ]8. 已知4個(gè)型值點(diǎn)坐標(biāo)值P0(5,5)、P1(10,15)、P2(15,10)、P3(10,5),繪一個(gè)三次貝塞爾曲線。解:用矩陣表示為p(t)=[t3 t2 t 1]P[p0 p1 p2 p3]TP= 1 3 3 1 3 6 3 0 3 3 0 0 1 0 0 0p(0)=[5, 5]p()=[, ]p()=[, ]p()=[, ]p()=[, ]p()=[, ]p(1)=[10, 5]將上面各點(diǎn)相連可以畫出三次貝塞爾曲線。9. 編寫一個(gè)繪制Bezier曲線的程序。該程序根據(jù)以下數(shù)據(jù)點(diǎn)[x, y]:[50, 100] [80, 230] [100, 270] [140, 160] [180, 50] [240, 65] [270, 120] [330, 230] [380, 230] [430, 150]計(jì)算出結(jié)果,并實(shí)現(xiàn)三段首尾相接的三次貝塞爾曲線在屏幕上顯示的功能,采用了C++語言實(shí)現(xiàn);include include include typedef struct{ double x,y。} DPOINT。 //定義結(jié)構(gòu)體class Bezier //定義Bezier類{ private: DPOINT* bP。 int m_maxIndex。 void drawFrame()。 void drawCurve()。 void drawCurve(int p0,int p1,int p2,int p3)。 public: Bezier(DPOINT* p,int len)。 //定義構(gòu)造函數(shù) void draw()。}。Bezier::Bezier(DPOINT* p,int len) //構(gòu)造函數(shù)的實(shí)現(xiàn){ this bP=p。 m_maxIndex=len1。}void Bezier::draw() //通過公有函數(shù)調(diào)用私有函數(shù){ drawFrame()。 drawCurve()。}void Bezier::drawFrame() //其功能是繪制出多邊形和各個(gè)端點(diǎn){ setcolor(12)。 for(int i=0。im_maxIndex。i++) { line( bP[i].x, bP[i].y, bP[i+1].x, bP[i+1].y )。 //繪制多邊形 circle(bP[i].x, bP[i].y,5)。 //繪制各個(gè)端點(diǎn) } circle(bP[m_maxIndex].x,bP[m_maxIndex].y,5)。}void Bezier::drawCurve() //實(shí)現(xiàn)多段Bezier曲線繪制的功能{ for(int i=0。i=m_maxIndex3。i+=3) { drawCurve(i,i+1,i+2,i+3)。 }}void Bezier::drawCurve(int p0,int p1,int p2,int p3) //實(shí)現(xiàn)繪制某一段Bezier曲線的功能{ double tmpx=。 double tmpy=。 double t=。 for(。t=。t+=) { tmpx=(bP[p0].x+3*bP[p1].x3*bP[p2].x+bP[p3].x)*t*t*t+(3*bP[p0].x6*bP[p1].x+3*bP[p2].x)*t*t+(3*bP[p0].x+3*bP[p1].x)*t+bP[p0].x。 tmpy=(bP[p0].y+3*bP[p1].y3*bP[p2].y+bP[p3].y)*t*t*t+(3*bP[p0].y6*bP[p1].y+3*bP[p2].y)*t*t+(3*bP[p0].y+3*bP[p1].y)*t+bP[p0].y。 putpixel(tmpx,tmpy,3)。 }}
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1