您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 计算机图形学第三次实验报告
.计算机图形学第三次实验报告姓名所使用的语言Java学号完成日期16/12/3实验任务11、已知第55页Bresenham可以绘制1/4圆,请利用旋转变换绘制完整圆importjava.applet.*;importjava.awt.*;importjava.awt.geom.*;importjavax.swing.*;publicclassBresenhamextendsApplet{publicvoidpaint(Graphicsg){Graphics2Dg2=(Graphics2D)g;g2.setPaint(Color.red);intr=100,x,y,e,x1,y1;doublexx,yy;x=0;y=r;e=1-r;while(xy){g.setColor(Color.RED);if(e0).{e=e+2*x+3;x++;}else{e=e+2*(x-y)+5;x++;y=y-1;}g.fillRect(x+200,y+200,1,1);xx=0.7071*x+0.7071*y;yy=-0.7071*x+0.7071*y;x1=(int)(xx);y1=(int)(yy);g.fillRect(x1+200,y1+200,1,1);x1=y;y1=-x;g.fillRect(x1+200,y1+200,1,1);x1=-y;y1=x;g.fillRect(x1+200,y1+200,1,1);xx=0.7071*x-0.7071*y;yy=0.7071*x+0.7071*y;x1=(int)(xx);y1=(int)(yy);g.fillRect(x1+200,y1+200,1,1);xx=-0.707*x+0.707*y;yy=-0.707*x-0.707*y;x1=(int)(xx);y1=(int)(yy);g.fillRect(x1+200,y1+200,1,1);x1=-x;y1=-y;g.fillRect(x1+200,y1+200,1,1);xx=-0.707*x-0.707*y;yy=0.707*x-0.707*y;.x1=(int)(xx);y1=(int)(yy);g.fillRect(x1+200,y1+200,1,1);}}}2、已知第57页中点算法可以绘制1/4椭圆,请利用旋转变换绘制完整椭圆importjava.applet.*;importjava.awt.*;importjava.awt.geom.*;importjavax.swing.*;publicclassmid_circleextendsApplet{publicvoidpaint(Graphicsg){Graphics2Dg2=(Graphics2D)g;g2.setPaint(Color.red);intr=100,x,y,e,x1,y1;doublexx,yy;x=0;y=r;e=2*(1-r);while(xy){g.setColor(Color.RED);if(e0){e=e+2*x+3;x++;}.Else{e=e+2*(x-y)+5;x++;y=y-1;}g.fillRect(x+200,y+200,1,1);xx=0.7071*x+0.7071*y;yy=-0.7071*x+0.7071*y;x1=(int)(xx);y1=(int)(yy);g.fillRect(x1+200,y1+200,1,1);x1=y;y1=-x;g.fillRect(x1+200,y1+200,1,1);x1=-y;y1=x;g.fillRect(x1+200,y1+200,1,1);xx=0.7071*x-0.7071*y;yy=0.7071*x+0.7071*y;x1=(int)(xx;y1=(int)(yy);g.fillRect(x1+200,y1+200,1,1);xx=-0.707*x+0.707*y;yy=-0.707*x-0.707*y;x1=(int)(xx);y1=(int)(yy);g.fillRect(x1+200,y1+200,1,1);x1=-x;y1=-y;g.fillRect(x1+200,y1+200,1,1);xx=-0.707*x-0.707*y;yy=0.707*x-0.707*y;x1=(int)(xx);y1=(int)(yy);g.fillRect(x1+200,y1+200,1,1);}.}}实验任务2:将一矩形平移x=200,y=200,并将x缩小1/5的程序importjava.awt.Color;importjava.awt.Graphics;importjava.awt.Graphics2D;importjava.awt.geom.Rectangle2D;importjavax.swing.JApplet;publicclassaextendsJApplet{publicvoidpaint(Graphicsg){Graphics2Dg2=(Graphics2D)g;intx[]={20,220,220,20,20},y[]={100,100,200,200,100};g2.drawPolyline(x,y,5);for(inti=0;ix.length;i++){x[i]=x[i]+200;.y[i]=y[i]+200;g2.setColor(Color.RED);}for(inti=0;ix.length;i++){x[i]=x[i]/5;g2.setColor(Color.blue);}g2.drawPolyline(x,y,5);}}实验任务3:将一矩形完成以下变换矩阵工作importjava.awt.Color;importjava.awt.Graphics;importjava.awt.Graphics2D;importjavax.swing.JApplet;publicclassjihebianhuanextendsJApplet{publicvoidpaint(Graphicsg){.Graphics2Dg2=(Graphics2D)g;intx[]={40,100,100,40,40},y[]={80,80,140,140,80};g2.drawPolyline(x,y,5);for(inti=0;ix.length;i=i+5){x[i]=x[i]/2-y[i]+200;x[i+1]=x[i+1]/2-y[i+1]+200;x[i+2]=x[i+2]/2-y[i+2]+200;x[i+3]=x[i+3]/2-y[i+3]+200;x[i+4]=x[i+4]/2-y[i+4]+200;y[i]=x[i]*2/3+y[i]*2+200;y[i+1]=x[i+1]*2/3+y[i+1]*2+200;y[i+2]=x[i+2]*2/3+y[i+2]*2+200;y[i+3]=x[i+3]*2/3+y[i+3]*2+200;y[i+4]=x[i+4]*2/3+y[i+4]*2+200;g2.setColor(Color.RED);}g2.drawPolyline(x,y,5);}}.实验任务4:给出任意三角形进行几何变换importjava.awt.Color;importjava.awt.Graphics;importjava.awt.Graphics2D;importjavax.swing.JApplet;publicclasssanjiaoxingextendsJApplet{publicvoidpaint(Graphicsg){Graphics2Dg2=(Graphics2D)g;intx[]={15,60,30,15},y[]={30,30,60,30};g2.drawPolyline(x,y,4);for(inti=0;ix.length;i=i+4){x[i]=x[i]*2-y[i]+20;x[i+1]=x[i+1]*2-y[i+1]+20;x[i+2]=x[i+2]*2-y[i+2]+20;x[i+3]=x[i+3]*2-y[i+3]+20;y[i]=x[i]/3+y[i]*2-10;y[i+1]=x[i+1]/3+y[i+1]*2-10;y[i+2]=x[i+2]/3+y[i+2]*2-10;y[i+3]=x[i+3]/3+y[i+3]*2-10;g2.setColor(Color.RED);}.g2.drawPolyline(x,y,4);}}实验任务5:完成下面几何变换为一单位正方形,对由(0,0)和(1,1)两点构成的对角线方向实施比例变换(1,2).importjava.awt.Color;importjava.awt.Graphics;importjava.awt.Graphics2D;importjavax.swing.JApplet;publicclasszhengfangxingextendsJApplet{publicvoidpaint(Graphicsg){Graphics2Dg2=(Graphics2D)g;intx[]={100,200,200,100,100},y[]={100,100,200,200,100};g2.drawPolyline(x,y,5);for(inti=0;ix.length;i=i+5){x[i]=(int)(x[i]*0.707-y[i]*0.707)+100;x[i+1]=(int)(x[i+1]*0.707-y[i+1]*0.707)+100;x[i+2]=(int)(x[i+2]*0.707-y[i+2]*0.707)+100;.x[i+3]=(int)(x[i+3]*0.707-y[i+3]*0.707)+100;x[i+4]=(int)(x[i+4]*0.707-y[i+4]*0.707)+100;y[i]=(int)(x[i]*0.707+y[i]*0.707)+100;y[i+1]=(int)(x[i+1]*0.707+y[i+1]*0.707)+100;y[i+2]=(int)(x[i+2]*0.707+y[i+2]*0.707)+100;y[i+3]=(int)(x[i+3]*0.707+y[i+3]*0.707)+100;y[i+4]=(int)(x[i+4]*0.707+y[i+4]*0.707)+100;g2.setColor(Color.RED);}g2.drawPolyline(x,y,5);}}实验任务6:对于四边形ABCD顶点坐标为A(0,0),B(20,0),C(20,15),D(0,15)1)沿x轴方向缩小一半,y轴增长一倍绘图;importjava.awt.Color;importjava.awt.Graphics;.importjava.awt.Graphics2D;importjavax.swing.JApplet;publicclassjuxing1extendsJApplet{publicvoidpaint(Graphicsg){Graphics2Dg2=(Graphics2D)g;intx[]={100,200,200,100,100},y[]={100,100,150,150,100};g2.drawPolyline(x,y,5);g2.drawPolyline(x,y,5);}2)将四边形ABCD沿x轴平移100,y轴平移100,然后旋转450绘图;importjava.awt.Color;importjava.awt.Graphics;importjava.awt.Graphics2D;importjavax.swing.JApplet;publicclassjuxing2extendsJApplet{publicvoidpaint(Graphicsg){Graphics2Dg2=(Graphics2D)g;intx[]={100,200,200,100,100},y[]={100,100,150,150,1
本文标题:计算机图形学第三次实验报告
链接地址:https://www.777doc.com/doc-8570281 .html