圖形學(xué)實(shí)驗(yàn)報告畫直線,圓,剪裁_第1頁
圖形學(xué)實(shí)驗(yàn)報告畫直線,圓,剪裁_第2頁
圖形學(xué)實(shí)驗(yàn)報告畫直線,圓,剪裁_第3頁
圖形學(xué)實(shí)驗(yàn)報告畫直線,圓,剪裁_第4頁
圖形學(xué)實(shí)驗(yàn)報告畫直線,圓,剪裁_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

圖形學(xué)實(shí)驗(yàn)報告一.實(shí)驗(yàn)?zāi)康模?.理解并掌握中點(diǎn)畫線算法的基本思想和算法實(shí)現(xiàn)在面板隨意位置畫線。2.理解并掌握中點(diǎn)畫圓算法的基本思想和算法實(shí)現(xiàn)在面板以任意位置為圓心畫半徑任意的圓。3.理解并掌握裁剪直線的基本思想和算法實(shí)現(xiàn)在任意繪制的矩形中裁剪所畫直線。實(shí)驗(yàn)內(nèi)容:中點(diǎn)畫線1.1基本原理:假定直線斜率|k|<=1,且已確定當(dāng)前象素點(diǎn)P(Xp,Yp),然后確定下一個象素點(diǎn),即T或B之一。M為T,B中點(diǎn),Q為理想直線與柵格線的交點(diǎn)。若M在Q的下方,選T,否則選B。使用直線的正負(fù)劃分性來判斷M和Q的位置關(guān)系(即:F(x,y)=a*x+b*y+c=0)。然后構(gòu)造判別式:d=F(M)=F(xp+1,yp+0.5)=a(xp+1)+b(yp+0.5)+c其中a=y0-y1,b=x1-x0,c=x0y1-x1y0當(dāng)d<0,M在L(Q點(diǎn))下方,取右上方T為下一個象素;當(dāng)d>0,M在L(Q點(diǎn))上方,取右方B為下一個象素;當(dāng)d=0,選T或B均可,約定取B為下一個象素判斷了M的位置之后則可以依次的畫出各個點(diǎn),從而得到一條直線。但是上面的這個算法存在浮點(diǎn)運(yùn)算,所以將其乘以2去掉浮點(diǎn)運(yùn)算,實(shí)現(xiàn)整數(shù)運(yùn)算,提高效率。而對于|k|>1的情況,只需將x與y的位置對調(diào)考慮則很容易得到正確的算法實(shí)現(xiàn)。并且在本次的中點(diǎn)算法中可以繪制任意斜率的直線。1.2函數(shù)流程直線方程:a*x+b*y+c=0,p1(x1,y1),p2(x2,y2)==>a=y1-y2;b=x2-x1.點(diǎn)到直線的距離:distance=|a*x0-b*y0+c|/sqrt(a*a+b*b)

設(shè)directionX,directionY分別為從(x1,y1)==>(x2,y2)的單位變化量(+/-1)當(dāng)直線偏向X軸時,當(dāng)前象素為(xk,yk),下一個象素可能為:(xk+directionX,yk)或者(xk+directionX,yk+directionY)這兩點(diǎn)到直線的距離分別為:

d1=|a*xk+b*yk+c+a*directionX|/sqrt(a*a+b*b);

d2=|a*xk+b*yk+c+a*directionX+b*directonY|/sqrt(a*a+b*b);

便于運(yùn)算,定義:f(xk,yk)=d2*d2-d1*d1(將d1和d2的分母去掉了的)

=b*b+*b*directonY*(a*xk+b*yk+c+a*directionX);

當(dāng)f(xk,yk)<0的時候,下一個點(diǎn)為(xk+directionX,yk+directionY):

f(xk+directionX,yk+directionY)=f(xk,yk)+2*b*b+2*a*b*directionX*directionY;

當(dāng)f(xk,yk)>=0的時候,下一個點(diǎn)為(xk+directionX,yk):

f(xk+directionX,yk)=f(xk,yk)+2*a*b*directionX*directionY;當(dāng)直線偏向Y軸時,當(dāng)前象素為(xk,yk),下一個象素可能為:(xk,yk+directionY)或者(xk+directionX,yk+directionY)這兩點(diǎn)到直線的距離分別為:d1=|a*xk+b*yk+c+b*directionY|/sqrt(a*a+b*b);

d2=|a*xk+b*yk+c+b*directionY+a*directonX|/sqrt(a*a+b*b);

便于運(yùn)算,定義:f(xk,yk)=d2*d2-d1*d1(將d1和d2的分母去掉了的)

=a*a+*a*directonX*(a*xk+b*yk+c+b*directionY);

當(dāng)f(xk,yk)<0的時候,下一個點(diǎn)為(xk+directionX,yk+directionY):

f(xk+directionX,yk+directionY)=f(xk,yk)+2*a*a+2*a*b*directionX*directionY;

當(dāng)f(xk,yk)>=0的時候,下一個點(diǎn)為(xk+directionX,yk):

f(xk+directionX,yk)=f(xk,yk)+2*a*b*directionX*directionY;1.3截圖中點(diǎn)畫圓2.1基本原理:對于圓上的點(diǎn),F(xiàn)(x,y)=0;對于圓外的點(diǎn),F(xiàn)(x,y)>0;而對于圓內(nèi)的點(diǎn),F(xiàn)(x,y)<0。假設(shè)M是P1和P2的中點(diǎn),即M=(xp+1,yp-0.5)。那么,當(dāng)F(M)<0時,M在圓內(nèi),這說明P1距離圓弧更近,應(yīng)取P1作為下一像素。而當(dāng)F(M)>0時,P2離圓弧更近,應(yīng)取P2。當(dāng)F(M)=0時,在P1與P2之中隨便取一個即可,我們約定取P2。與中點(diǎn)畫線法一樣,構(gòu)造判別式d=F(M)=F(xp+1,yp-0.5)=(xp+1)2+(yp-0.5)2-R2若d<0,則應(yīng)取P1為下一像素,而且再下一個像素的判別式為d=F(xp+2,yp-0.5)=(xp+2)2+(yp-0.5)2-R2=d+2xp+3所以,沿正右方向,d的增量為2xp+3。而若d≥0,則P2是下一像素,而且下一像素的判別式為d'=F(xp+2,yp–1.5)=(xp+2)2+(yp–1.5)2–R2=d+(2xp+3)+(–2yp+2)所以,沿右下方向,判別式d的增量為2(xp–yp)+5。由于我們這里討論的是按順時針方向生成第二個8分圓,因此,第一像素是(0,R),判別量d的初始值為:d0=F(l,R–0.5)=1+(R–0.5)2–R2=1.25–R設(shè)則判別量的初值為遞推公式中其他與d有管的獅子可以直接換成所以圓心位于原點(diǎn)的圓有四條對稱軸x=0、y=0、x=y和x=-y。從而若已知圓弧上一點(diǎn)P(x,y),就可以得到其關(guān)于四條對稱軸的七個對稱點(diǎn),這種性質(zhì)稱為八分對稱性。因此只要能畫出八分之一的圓弧,就可以利用對稱性的原理得到整個圓弧。2.2截圖直線剪裁3.1基本原理:裁剪窗口:矩形區(qū)域若線段兩端點(diǎn)均落在窗口內(nèi):線段可見;.若線段兩端點(diǎn)分別落在窗口的內(nèi)外兩側(cè):計算線段與窗口邊界的交點(diǎn)(1個),確定可見部分線段;.若線段兩端點(diǎn)均落在窗口外:計算線段與窗口交點(diǎn)(0個或2個),若無交點(diǎn),則線段不可見,否則線段部分可見。分別記線段端點(diǎn)P1,P2的編碼為code1,code2,當(dāng)P1,P2均在窗口內(nèi):code1=0000且code2=0000;P1,P2在同一邊框線外:code1[i]=code2[i]=1,i=1,2,3,4;即code1&code2!=0000,其它c(diǎn)ode1&code2=0000;code1!=0000或code2!=0000利用中點(diǎn)分割法并采用迭代方法找到距端點(diǎn)最近的可見點(diǎn)進(jìn)行剪裁3.2流程圖3.3截圖附錄

:代碼:MAINFRAMEimportjava.awt.*;importjavax.swing.*;importjava.awt.event.*;importjavax.swing.event.*;importjavax.swing.border.*;publicclassMainFrameextendsJFrame{ MainFrame(){ Containerc=getContentPane(); drawPanel=newPanelEX(this,730,540); mainPanel=newJPanel(); mainPanel.setLayout(newGridBagLayout()); ctrlPanel=newJPanel(); ctrlPanel.setLayout(newBoxLayout(ctrlPanel,BoxLayout.Y_AXIS)); initButtonPanel(); ctrlPanel.add(buttonPanel);gridBagConstraints=newGridBagConstraints();mainPanel.add(ctrlPanel,gridBagConstraints);gridBagConstraints.insets=newInsets(5,5,15,5);add(mainPanel,BorderLayout.WEST); add(drawPanel,BorderLayout.CENTER); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);setTitle("畫線圓剪裁——ZXJ");setSize(885,572);show(); } voidinitButtonPanel(){ buttonPanel=newJPanel();JPanelt=newJPanel(newGridLayout(6,1,6,6)); ButtonGroupbg=newButtonGroup(); line=newJToggleButton(); line.setFont(newFont("Dialog",0,30)); line.setSelected(true); line.setText("畫線"); line.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ drawPanel.setOperate(PanelEX.DrawLine); } }); bg.add(line); t.add(line);clip=newJToggleButton(); clip.setFont(newFont("Dialog",0,30)); clip.setText("裁剪"); clip.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ drawPanel.setOperate(PanelEX.SegmentClip); } }); bg.add(clip); t.add(clip);circle=newJToggleButton(); circle.setFont(newFont("Dialog",0,30)); circle.setText("畫圓"); circle.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ drawPanel.setOperate(PanelEX.drawcircle); } }); bg.add(circle); t.add(circle); clear=newJButton(); clear.setFont(newFont("Dialog",0,30)); clear.setText("清屏"); clear.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ drawPanel.clear(); } }); t.add(clear);buttonPanel.add(t); } publicstaticvoidmain(Stringargs[]){ try{ UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); }catch(Exceptione){ e.printStackTrace(); } newMainFrame(); } JPanelmainPanel; JPanelctrlPanel; JPanelbuttonPanel; JToggleButtonline; JToggleButtoncircle; JToggleButtonclip; JButtonclear; GridBagConstraintsgridBagConstraints; PanelEXdrawPanel;}PANELEX

:importjava.awt.*;importjava.awt.image.*;importjavax.swing.*;importjava.awt.event.*;importjavax.swing.event.*;importjavax.swing.border.*;importjava.math.*;publicclassPanelEXextendsJPanelimplementsMouseMotionListener,MouseListener{PanelEX(MainFramemf,intwidth,intheight)//繪制畫圖面板{this.mf=mf;xmin=ymin=0;xmax=width;ymax=height;resetSize(width,height);circle=newCircleOP(this);clip=newClipOP(this);clip.setClipRect(0,0,width,height);line=newLineOP(this,clip);addMouseListener(this);addMouseMotionListener(this);}publicvoidmousePressed(MouseEvente)//鼠標(biāo)壓下獲取當(dāng)前位置{if(e.getButton()==MouseEvent.BUTTON1){xstart=xcurrent=e.getX();ystart=ycurrent=e.getY();}}publicvoidmouseDragged(MouseEvente)//鼠表拖動,根據(jù)不同情況有不同處理方式{switch(currentOperate){caseDrawLine://畫線鼠標(biāo)拖動過程中獲取坐標(biāo)并且將拖動過程顯示line.pushBack(xstart,ystart,xcurrent,ycurrent);xcurrent=e.getX();ycurrent=e.getY();line.pushForward(xstart,ystart,xcurrent,ycurrent);break;casedrawcircle://畫圓鼠標(biāo)拖動過程中獲取坐標(biāo)計算半徑并且將拖動過程顯示intradix=(int)Math.sqrt((xstart-xcurrent)*(xstart-xcurrent)+(ystart-ycurrent)*(ystart-ycurrent));circle.pushBack(xstart,ystart,radix);xcurrent=e.getX();ycurrent=e.getY();radix=(int)Math.sqrt((xstart-xcurrent)*(xstart-xcurrent)+(ystart-ycurrent)*(ystart-ycurrent));circle.pushForward(xstart,ystart,radix);break;caseSegmentClip://剪裁由于剪裁的為直線,所以類似直線clip.pushBack(xstart,ystart,xcurrent,ycurrent);xcurrent=e.getX();ycurrent=e.getY();clip.pushForward(xstart,ystart,xcurrent,ycurrent);break;}}publicvoidmouseReleased(MouseEvente)//松開鼠標(biāo){if(e.getButton()!=MouseEvent.BUTTON1){return;}if(currentOperate==DrawLine)//根據(jù)中點(diǎn)畫線方法畫線{line.pushBack(xstart,ystart,xcurrent,ycurrent);line.MidPoint(xstart,ystart,e.getX(),e.getY());}if(currentOperate==drawcircle)//根據(jù)中點(diǎn)畫圓方法畫圓{intradix=(int)Math.sqrt((xcurrent-xstart)*(xcurrent-xstart)+(ycurrent-ystart)*(ycurrent-ystart));circle.pushBack(xstart,ystart,radix);radix=(int)Math.sqrt((e.getX()-xstart)*(e.getX()-xstart)+(e.getY()-ystart)*(e.getY()-ystart));circle.MidPoint(xstart,ystart,radix);}if(currentOperate==SegmentClip)//剪裁{clip.pushBack(xstart,ystart,xcurrent,ycurrent);if(xstart>e.getX())//獲取xmin,xmax,ymin,ymax繪制剪裁矩形{xmin=e.getX();xmax=xstart;}else{xmin=xstart;xmax=e.getX();}if(ystart>e.getY()){ymin=e.getY();ymax=ystart;}else{ymin=ystart;ymax=e.getY();}if(xmin<0){xmin=0;}if(xmax>width){xmax=width;}if(ymin<0){ymin=0;}if(ymax>height){ymax=height;}clip.drawRectBoth(xmin,ymin,xmax,ymax);clip.setClipRect(xmin,ymin,xmax,ymax);}}publicvoidmouseMoved(MouseEvente){}voidresetSize(intwidth,intheight){//繪圖面板if(this.width==width&&this.height==height){return;}this.width=width;this.height=height;bi=newBufferedImage(width,height,BufferedImage.TYPE_INT_RGB);g2=(Graphics2D)bi.getGraphics();g2.setColor(Color.white);g2.fillRect(0,0,width,height);g2.dispose();setSize(width,height);}publicvoidclear()//清屏{g2=(Graphics2D)bi.getGraphics();g2.setColor(Color.white);g2.fillRect(0,0,width,height);g2.dispose();paint(getGraphics());}publicvoidpaint(Graphicsg){g.drawImage(bi,0,0,width,height,this);}publicvoidupdate(Graphicsg){paint(g);}publicvoidstop(){}publicvoidsetOperate(intop){currentOperate=op;needConnectPoint=false;}publicvoidmouseClicked(MouseEvente){}publicvoidmouseEntered(MouseEvente){}publicvoidmouseExited(MouseEvente){}MainFramemf;BufferedImagebi;LineOPline;ClipOPclip;CircleOPcircle;Graphics2Dg2;intxstart;intystart;intxcurrent;intycurrent;intxend;intyend;privateintxmin;privateintymin;privateintxmax;privateintymax;intwidth=0;intheight=0;intcurrentOperate=DrawLine;Colorcolor;booleanneedConnectPoint=false;publicstaticfinalintDrawLine=1;publicstaticfinalintdrawcircle=2;publicstaticfinalintSegmentClip=4;}DRAWOP

:importjava.awt.*;importjava.awt.image.*;importjavax.swing.*;importjava.awt.event.*;importjavax.swing.event.*;importjavax.swing.border.*;importjava.math.*;publicclassDrawOP{ PanelEXp; intDelayTime; booleanDelay; Colorcolor; Colort; BufferedImagebi; Graphicsg; booleanstop; Graphics2Dg2; intmask=0; intRGB; publicstaticfinalintPUSHBACK=1; publicstaticfinalintXOR=2; publicstaticfinalintONSCREEN=4; publicstaticfinalintBOTH=8; DrawOP(PanelEXp) {this.p=p; stop=false; DelayTime=0; color=Color.black;} publicvoidinitGraphics(){ g=p.getGraphics(); bi=p.bi; g2=(Graphics2D)bi.getGraphics(); g.setColor(color); g2.setColor(color); } publicintgetPixel(intx,inty){ returnbi.getRGB(x,y); } publicvoidsetMask(intm){ mask=m; } publicvoidsetDelay(){ Delay=true; } publicvoidclrDelay(){ Delay=false; } publicvoidsetColor(Colorc){ color=c; } publicvoidsetDelayTime(intt){ DelayTime=t; } publicvoidstop(){ stop=true; } publicvoidstart(){ stop=false; } voidsetPixel(intx,inty){ if(x>=p.width||x<=0||y>=p.height||y<=0)return; if(mask==ONSCREEN){ g.drawLine(x,y,x,y); } elseif(mask==PUSHBACK){ RGB=bi.getRGB(x,y); t=newColor(RGB); g.setColor(t); g.drawLine(x,y,x,y); } elseif(mask==XOR){ intti; RGB=bi.getRGB(x,y); ti=color.getRGB(); t=newColor(ti^RGB); g.setColor(t); g.drawLine(x,y,x,y); g2.setColor(t); g2.drawLine(x,y,x,y); } else{ g.drawLine(x,y,x,y) ; g2.drawLine(x,y,x,y); } if(Delay==false)return; try{ Thread.sleep(DelayTime); }catch(InterruptedExceptione){} }}LIENEX

:publicclassLineEX{ intys,ye; doublexs,ki;//ki為斜率 publicintx1,y1,x2,y2; LineEXnext; LineEX(){ } LineEX(intx1,inty1,intx2,inty2){ this.x1=x1; this.x2=x2; this.y1=y1; this.y2=y2; if(y1<y2) {ys=y1; ye=y2; xs=x1; ki=(double)(x1-x2)/(y1-y2);} elseif(y1>y2){ ys=y2; ye=y1; xs=x2; ki=(double)(x1-x2)/(y1-y2); } Else{ ys=-1; ki=0; } next=null; }}LINEOPimportjava.awt.*; importjava.awt.image.*; importjavax.swing.*;importjava.awt.event.*; importjavax.swing.event.*; importjavax.swing.border.*;importjava.math.*;publicclassLineOPextendsDrawOP{ ClipOPclip; LineEXclipSeg; LineEXl; LineOP(PanelEXp,ClipOPclip){ super(p); this.clip=clip; } publicvoidMidPoint(intx1,inty1,intx2,inty2){ l=clip.clip(x1,y1,x2,y2); if(l==null)return; else{ x1=l.x1; y1=l.y1; x2=l.x2; y2=l.y2; } setDelay(); setMask(LineOP.BOTH); initGraphics(); drawLineM(x1,y1,x2,y2); } publicvoidpushBack(intx1,inty1,intx2,inty2){ clrDelay(); setMask(LineOP.PUSHBACK); initGraphics(); drawLineM(x1,y1,x2,y2); } publicvoidpushForward(intx1,inty1,intx2,inty2){ clrDelay(); setMask(LineOP.ONSCREEN); initGraphics(); drawLineM(x1,y1,x2,y2); } publicvoiddrawLineM(intstartX,intstartY,intendX,intendY){inta,b; a=startY-endY; b=endX-startX; intiDirectionX,iDirectionY; iDirectionX=iDirectionY=1; if(b<0) iDirectionX=-1;//iDirectionX,iDirectionY分別為從(x1,y1)==>(x2,y2)的單位變化量(+/-1) if(a>0) iDirectionY=-1; intiDistance;//distance為點(diǎn)到直線的距離intiDeltaSmall,iDeltaBig,iCurrX,iCurrY; intiStep; iDeltaSmall=2*a*b*iDirectionX*iDirectionY;//2ab iCurrX=startX; iCurrY=startY; if(Math.abs(b)>Math.abs(a))//abs:求絕對值 { iDeltaBig=2*b*b+iDeltaSmall; iDistance=b*b+iDeltaSmall; iStep=Math.abs(b); while(iStep-->0) { setPixel(iCurrX,iCurrY); iCurrX+=iDirectionX; if(iDistance<0) {iCurrY+=iDirectionY; iDistance+=iDeltaBig; } else { iDistance+=iDeltaSmall; } } } else { iDeltaBig=2*a*a+iDeltaSmall; iDistance=a*a+iDeltaSmall; iStep=Math.abs(a); while(iStep-->0) { setPixel(iCurrX,iCurrY); iCurrY+=iDirectionY; if(iDistance<0) { iCurrX+=iDirectionX; iDistance+=iDeltaBig; } else { iDistance+=iDeltaSmall; } } } setPixel(iCurrX,iCurrY); }} CIRCLEOPimportjava.awt.*; importjava.awt.image.*; importjavax.swing.*;importjava.awt.event.*; importjavax.swing.event.*; importjavax.swing.border.*;importjava.math.*;publicclassCircleOPextendsDrawOP{ CircleOP(PanelEXp){ super(p); }publicvoidpushBack(intx,inty,intr){ clrDelay(); setMask(CircleOP.PUSHBACK); initGraphics();drawCircleM(x,y,r); }publicvoidpushForward(intx,inty,intr){ clrDelay(); setMask(CircleOP.ONSCREEN); initGraphics(); drawCircleM(x,y,r); } publicvoidMidPoint(intx,inty,intr){ setDelay(); setMask(CircleOP.BOTH); initGraphics(); drawCircleM(x,y,r); }publicvoiddrawCircleM(intox,intoy,intr){ doubled=1-r; intx=0,y=r; while(x<y){ setPixel(x+ox,y+oy);//用來顯示P(x,y)及其七個對稱點(diǎn)。 setPixel(x+ox,-y+oy); setPixel(-x+ox,y+oy); setPixel(-x+ox,-y+oy); setPixel(y+ox,x+oy); setPixel(y+ox,-x+oy); setPixel(-y+ox,x+oy); setPixel(-y+ox,-x+oy); if(d<0){ x++; d=d+2*x+1; } Else{ x++; y--; d=d+2*x+1-2*y; } }}}CLIPOPimportjava.awt.*; importjava.awt.image.*; importjavax.swing.*;importjava.awt.event.*; importjavax.swing.event.*; importjavax.swing.border.*;importjava.math.*;publicclassClipOPextendsDrawOP{ intxmin,ymin,xmax,ymax; privatefinalintxminmask=8; privatefinalintxmaxmask=2; privatefinalintyminmask=4; privatefinalintymaxmask=1;publicstaticfinalintMidPoint=3; ClipOP(PanelEXp){ super(p); } publicLineEXclip(intx1,inty1,intx2,inty2){ returnclipMidPoint(x1,y1,x2,y2); } privateintgetCode(intx,inty)//完成對線段端點(diǎn)的編碼過程。{ intcode=0; if(x>xmax) code|=xmaxmask; elseif(x<xmin) code|=xminmask; if(y>ymax)code|=ymaxmask; elseif(y<ymin)code|=yminmask; returncode; } privateLineEXclipPart(intx1,inty1,intx2,inty2)//利用中點(diǎn)分割法并采用迭代方法找到距端點(diǎn)最近的可見點(diǎn){ intxm,ym,codem; intxt=x1,yt=y1; xm=(x1+x2)/2;//m為線段的中點(diǎn) ym=(y1+y2)/2; codem=getCode(xm,ym);//獲取線段中點(diǎn)m的編碼 while(true){ if(codem!=0)//線段中點(diǎn)m在剪裁區(qū)域外{ x2=xm;//把中點(diǎn)m賦為終點(diǎn)P2 y2=ym; xm=(x1+x2)/2;//再重新取終點(diǎn)m ym=(y1+y2)/2; codem=getCode(xm,ym);//獲取線段中點(diǎn)m的編碼 if((xm==x2)&&(ym==y2))returnnewLineEX(xt,yt,x1,y1); } else//線段中點(diǎn)m在剪裁區(qū)域內(nèi){ x1=xm;//把中點(diǎn)m賦為起點(diǎn)P1 y1=ym; xm=(x1+x2)/2;//再重新取終點(diǎn)m ym=(y1+y2)/2; codem=getCod

溫馨提示

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

評論

0/150

提交評論