ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:138.92KB ,
资源ID:3486146      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3486146.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(《计算机图形学》实验2实验报告.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

《计算机图形学》实验2实验报告.docx

1、计算机图形学实验2实验报告实验2实验报告格式计算机图形学实验2实验报告实验题目:多视图绘图程序实验内容:掌握多视图绘图的概念,掌握二维统计图的绘制方法。调用实验1中自己编写的基本包,绘制自己所设计的统计图形(饼图、直方图以及折线)。编写程序调用验证之。参考程序:有一个示范程序MultiViewport.java基本概念:(详细叙述自己对实验内容的理解) 多视图绘图:就是将若干个绘制好的图形按照一定的规则,组成一个具有特定意义的图形,在同一个视图中显示出来。 算法设计:(详细叙述自己设计的多视图统计图以及程序的功能、算法及实现) 饼图:仅排列在工作表的一列或一行中的数据可以绘制到饼图中。饼图显示

2、一个数据系列中各项的大小与各项总和的比例。饼图中的数据点显示为整个饼图的百分比。本程序中的饼图统计的是学生成绩状况。 直方图:又称柱状图、质量分布图。是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。本程序使用矩形的填充来实现柱状图形。程序中横轴表示成绩分段,纵轴表示人数分布。 折线:以折线的上升或下降来表示统计数量的增减变化的统计图,叫作折线统计图。可以反应事物的变化趋势。本程序是统计学生成绩趋势,折线的转折点就是某个等级的人数所占总人数的比例。 本程序功能:实现饼图、直方图和折线对学生成绩的统计。 饼图算法:根据各个类别所占总统计数的比例来确定其在饼图中所占的比例大小,

3、每一个类别就是一个扇形,扇形的大小是根据所占比例确定的。假设在中等成绩段的学生人数是m人,统计的总人数是n人,那么中等成绩段在饼图中的比例就是m/n,其在饼图中的大小是m/n*360。 直方图算法:根据每个类别占总调查人数的比例来确定柱状图的高低,每一个类别所占的比例就是一个矩形在直方图中的相对高度,一个类别就是用一个矩形表示,矩形的宽度就是成绩分布段。如果在图中绘制出来就是按照每个类别所占的比例扩大或缩小多少倍,在图形中较好的表现出来。如果人数多,则柱状就会高,反之则低。 折线算法:以折线的上升或下降来表示统计数量的增减变化的统计图,叫作折线统计图。在本程序中的折线的每一段都是一条线段。简单

4、的说,就是将直方图的柱状的最高点改为一个点,然后将不同类别的点连接起来,就形成了折线图。折线的转折点就是某个等级的人数所占总人数的比例。代码:(给出主要的Java程序和注解)(1)画圆饼统计图 package 实验2;/MultiViewport.java/多视图程序import java.awt.*; /绘图基于java AWT包import java.applet.Applet;/定义多视图类public class MultiViewport extends Applet MyCanvas m; /定义MyCanvas类的对象 final static int idealSizeX=60

5、0; /窗口宽度 final static int idealSizeY=600; /窗口高度 /Applet程序的自动初始化方法init public void init() this.setSize(700,600); m=new MyCanvas(this); /生成MyCanvas类的对象 /画圆饼统计图(成绩统计) public void paintPIGraph_1(MyCanvas m) double r=0.8; /外圆半径 double cr=0.3; /内圆半径 /*利用三基色构造颜色*/ m.setColor(new Color(float)0.95,(float)0.7

6、5,(float)0.6); double excellent=0.15*360; /优秀占15%对应的扇形角 m.fillArc(0,0,r,r,0,excellent); /从0度起画优秀对应的扇形 /* 扇弧终止点的坐标 */ double excellentX=r*Math.sin(excellent*Math.PI/180); double excellentY=r*Math.cos(excellent*Math.PI/180); double sum=excellent; /从0度起已经画出的扇弧角度 m.setColor(new Color(float)0.80,(float)0

7、.80,(float)0.50); double good=0.25*360; /良好占25%对应的扇形角 m.fillArc(0,0,r,r,sum,good); /从sum度起画良好对应的扇形 sum+=good; /从0度起已经画出的扇弧角度 /* 扇弧终止点的坐标 */ double goodX=r*Math.sin(sum*Math.PI/180); double goodY=r*Math.cos(sum*Math.PI/180); m.setColor(new Color(float)0.65,(float)0.85,(float)0.40); double medium=0.35

8、*360; /中等占35%对应的扇形角 m.fillArc(0,0,r,r,sum,medium); /从sum度起画中等对应的扇形 sum+=medium; /从0度起已经画出的扇弧角度 double mediumX=r*Math.sin(sum*Math.PI/180); /扇弧终止点的坐标 double mediumY=r*Math.cos(sum*Math.PI/180); m.setColor(new Color(float)0.50,(float)0.90,(float)0.30); double pass=0.20*360; /及格占20%对应的扇形角 m.fillArc(0,0

9、,r,r,sum,pass); /从sum度起画及格对应的扇形 sum+=pass; /从0度起已经画出的扇弧角度 double passX=r*Math.sin(sum*Math.PI/180); /扇弧终止点的坐标 double passY=r*Math.cos(sum*Math.PI/180); m.setColor(new Color(float)0.35,(float)0.95,(float)0.2); double fail=0.05*360; /优秀占5%对应的扇形角 m.fillArc(0,0,r,r,sum,fail); /从sum度起画不及格对应的扇形 sum+=fail;

10、 /从0度起已经画出的扇弧角度 double failX=r*Math.sin(sum*Math.PI/180); /扇弧终止点的坐标 double failY=r*Math.cos(sum*Math.PI/180); m.setColor(Color.black); /当前颜色 m.drawOval(0,0,r,r); /画(椭)圆 m.drawLine(0,0,0,r); /画起点方位半径 m.drawLine(0,0,excellentX,excellentY); /画扇形分界线半径 m.drawLine(0,0,goodX,goodY); m.drawLine(0,0,mediumX,

11、mediumY); m.drawLine(0,0,passX,passY); m.drawLine(0,0,failX,failY); /* 定义字体,标准大小 */ Font f0=m.MyFont(m.getFont().getName(),m.getFont().getStyle(),1.0); m.setFont(f0); /设定字体 m.drawString(优秀,0.1,0.47); /写字符串 m.drawString(15%,0.1,0.30); m.drawString(良好,0.25,0.0); /写字符串 m.drawString(25%,0.25,-0.15); m.d

12、rawString(中等,-0.28,-0.3); /写字符串 m.drawString(35%,-0.28,-0.45); m.drawString(及格,-0.5,0.17); /写字符串 m.drawString(20%,-0.5,0.02); m.drawLine(-0.1,0.47,-0.2,1.0); /画引线 m.drawString(不及格,-0.2,1.15); /写字符串 m.drawString(5%,-0.2,1.0); Font f1=m.MyFont(m.getFont().getName(),m.getFont().getStyle(),1.5); /字体放大 m

13、.setFont(f1); m.drawString(成绩统计图,-0.4,-1.2); /写字符串 /圆饼统计图结束 /Applet程序的描绘方法paint public void paint(Graphics g) m.setBackground(Color.white); /当前背景色 m.setWindow(-1,1,-1,1); /用户坐标系范围 /视图定义(第一个圆饼统计图在窗口的位置) m.setViewport(0.5,1.0,0.25,0.75); /窗口右半面,上下居中 paintPIGraph_1(m); /画饼统计图 m.setViewport(0.0,0.5,0.25

14、,0.75); /窗口左半面,上下居中 paintPIGraph_1(m); /再画圆饼统计图 m.resetViewport(); /视图复位 Font f2=m.MyFont(m.getFont().getName(),m.getFont().getStyle(),2.0); /字体放大 m.setFont(f2); m.drawString(多视图演示程序,-0.4,-0.9); /写字符串 /描绘方法paint结束 /显式曲线描绘类结束(2)画折线统计图package 实验2;/MultiViewport.java/多视图程序import java.awt.*; /绘图基于java A

15、WT包import java.applet.Applet;/定义多视图类public class MultiViewport2 extends Applet MyCanvas m; /定义MyCanvas类的对象 final static int idealSizeX=600; /窗口宽度 final static int idealSizeY=600; /窗口高度 /Applet程序的自动初始化方法init public void init() m=new MyCanvas(this); /生成MyCanvas类的对象 /画折线图 public void paintPIGraph_1(MyC

16、anvas m) m.setColor(Color.BLACK); /设定前景色为黑色 m.setWindow(-1,1,-1,1); /设定用户坐标系范围 /缺省的视图为m.setViewport(0,1,0,1)和Java AWT窗口大小一样 m.drawLine(-0.9,-2.9,4.9,-2.9); /画X轴 double x1=4.9,5.0,4.9; /箭头三个点的X坐标 double y1=-2.8,-2.9,-3.0; /箭头三个点的Y坐标 m.fillPolygon(x1,y1,3); /填充箭头 m.drawString(X轴,4.0,-5.0); /X轴写字符串 m.d

17、rawLine(-0.9,-2.9,-0.9,1.8); /画Y轴 double x2=-0.8,-0.9,-1.0; /箭头三个点的X坐标 double y2=1.8,1.9,1.8; /箭头三个点的Y坐标 m.fillPolygon(x2,y2,3); /填充箭头 m.drawString(Y轴,-0.7,1.8); /Y轴写字符串 /优秀占15%,良好占25%,中等占35%,及格占20%,不及格占5% /画出Y轴上的刻度线与距离 m.drawString(0,-1.1, -3.0); /Y轴上的距离0 m.drawString(10,-1.3, -2.0); m.drawLine(-0.

18、9, -1.9, -0.8, -1.9) ;/刻度线 m.drawString(20,-1.3, -1.0); m.drawLine(-0.9, -0.9, -0.8, -0.9) ;/刻度线 m.drawString(30,-1.3, 0); m.drawLine(-0.9, 0.1, -0.8, 0.1) ;/刻度线 m.drawString(40,-1.3, 1.0); m.drawLine(-0.9, 1.1, -0.8, 1.1) ;/刻度线 /画出X轴上的刻度线与距离 m.drawString(100,-0.6, -3.3); m.drawLine(-0.1, -2.9, -0.1

19、, -2.8) ;/刻度线 m.drawString(85,0.3, -3.3); m.drawLine(0.5, -2.9, 0.5, -2.8) ;/刻度线 m.drawString(75,0.9, -3.3); m.drawLine(1.1, -2.9, 1.1, -2.8) ;/刻度线 m.drawString(60,1.5, -3.3); m.drawLine(1.7, -2.9, 1.7, -2.8) ;/刻度线 m.drawString(0分,2.3, -3.3); m.drawLine(2.3, -2.9, 2.3, -2.8) ;/刻度线 /画出折线 m.setColor(C

20、olor.RED);/设置颜色 m.drawLine(-0.1,-1.5,0.5,-0.5) ;/画线 m.setColor(Color.BLUE); m.drawLine(0.5,-0.5,1.1,0.5) ; m.setColor(Color.GREEN); m.drawLine(1.1,0.5,1.7,-1.0) ; m.setColor(Color.ORANGE); m.drawLine(1.7,-1.0,2.3,-2.5) ; /对折线图进行说明 m.setColor(Color.blue) ; m.drawString(深红色代表优秀到良好的趋势,2.6, 0.6); m.draw

21、String(蓝色代表良好到中等的趋势,2.6, 0.2); m.drawString(绿色代表中等到及格的趋势,2.6, -0.2); m.drawString(橘色代表及格到不及格的趋势,2.6, -0.6); m.drawString(X轴代表成绩,2.6, -1.0); m.drawString(Y轴代表在成绩段的人数,2.6, -1.4); m.setColor(Color.RED); m.drawString(折线图演示, 0.3,-3.9);/折线图结束 /Applet程序的描绘方法paint public void paint(Graphics g) m.setBackgrou

22、nd(Color.white); /当前背景色 m.setWindow(-1,1,-1,1); /用户坐标系范围 /视图定义(第一个圆饼统计图在窗口的位置) m.setViewport(2.9,3.4,0.15,0.65); /窗口右半面,上下居中 paintPIGraph_1(m); /画饼统计图 m.setViewport(0.2,0.7,0.15,0.65); /窗口左半面,上下居中 paintPIGraph_1(m); /再画圆饼统计图 m.resetViewport(); /视图复位 Font f2=m.MyFont(m.getFont().getName(),m.getFont()

23、.getStyle(),2.0); /字体放大 m.setFont(f2); m.drawString(多视图演示程序,-0.4,-0.9); /写字符串 /描绘方法paint结束 /显式曲线描绘类结束(3)画直方图统计图 package 实验2;/MultiViewport.java/多视图程序import java.awt.*; /绘图基于java AWT包import java.applet.Applet;/定义多视图类public class MultiViewport2 extends Applet MyCanvas m; /定义MyCanvas类的对象 final static i

24、nt idealSizeX=600; /窗口宽度 final static int idealSizeY=600; /窗口高度 /Applet程序的自动初始化方法init public void init() m=new MyCanvas(this); /生成MyCanvas类的对象 /画直方统计图 public void paintPIGraph_1(MyCanvas m) m.setColor(Color.BLACK); /设定前景色为黑色 m.setWindow(-1,1,-1,1); /设定用户坐标系范围 /缺省的视图为m.setViewport(0,1,0,1)和Java AWT窗口

25、大小一样 m.drawLine(-0.9,-2.9,4.9,-2.9); /画X轴 double x1=4.9,5.0,4.9; /箭头三个点的X坐标 double y1=-2.8,-2.9,-3.0; /箭头三个点的Y坐标 m.fillPolygon(x1,y1,3); /填充箭头 m.drawString(X轴,4.9,-2.7); /X轴写字符串 m.drawLine(-0.9,-2.9,-0.9,1.8); /画Y轴 double x2=-0.8,-0.9,-1.0; /箭头三个点的X坐标 double y2=1.8,1.9,1.8; /箭头三个点的Y坐标 m.fillPolygon(

26、x2,y2,3); /填充箭头 m.drawString(Y轴,-0.7,1.8); /Y轴写字符串 /优秀占15%,良好占25%,中等占35%,及格占20%,不及格占5% /画出Y轴上的刻度线与距离 m.drawString(0,-1.1, -3.0); /Y轴上的距离0 m.drawString(100,-1.3, -2.0); /Y轴上的距离0.1 m.drawLine(-0.9, -1.9, -0.8, -1.9) ;/刻度线 m.drawString(200,-1.3, -1.0); /Y轴上的距离0.2 m.drawLine(-0.9, -0.9, -0.8, -0.9) ;/刻度

27、线 m.drawString(300,-1.3, 0); /Y轴上的距离0.3 m.drawLine(-0.9, 0.1, -0.8, 0.1) ;/刻度线 m.drawString(400,-1.3, 1.0); /Y轴上的距离0.4 m.drawLine(-0.9, 1.1, -0.8, 1.1) ;/刻度线/ /画出矩形条 m.setColor(Color.yellow);/设置矩形条的颜色 m.fillRect(-0.6, -2.9, 1.0, -1.5);/画出矩形条 m.setColor(Color.BLUE); /设置矩形条的颜色 m.fillRect(0.1, -2.9, 0.

28、8, -0.5); /画出矩形条 m.setColor(Color.red); /设置矩形条的颜色 m.fillRect(0.8, -2.9, 1.6, 0.5); /画出矩形条 m.setColor(Color.green); /设置矩形条的颜色 m.fillRect(1.6, -2.9, 2.2, -1.0); /画出矩形条 m.setColor(Color.orange); /设置矩形条的颜色 m.fillRect(2.2, -2.9, 2.8, -2.5); /画出矩形条 m.setColor(Color.black); /设置矩形条的颜色 /对直方图进行说明 m.drawString

29、(优秀,-0.9, -3.4); m.drawString(良好,0.0, -3.4); m.drawString(中等,0.8, -3.4); m.drawString(及格,1.6, -3.4); m.drawString(不及格,2.3, -3.4); m.drawString(黄色代表优秀占15%, 2.6, 0.6); m.drawString(蓝色代表良好占25%, 2.6, 0.2); m.drawString(红色代表中等占35%, 2.6, -0.2); m.drawString(绿色代表及格占20%, 2.6, -0.6); m.drawString(橘色代表不及格占5%, 2.6, -1.0); m.drawString(X轴代表成绩分布段, 2.6, -1.4); m.drawString(Y轴代表在成绩段的人数, 2.6, -1.8); m.setColor(Color.RED); m.drawString(直方统计图

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1