- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《计算机图形学》实验2实验报告
实验题目:多视图绘图程序
实验内容:掌握多视图绘图的概念,掌握二维统计图的绘制方法。调用实验1中自己编写的基本包,绘制自己所设计的统计图形(饼图、直方图以及折线)。编写程序调用验证之。
参考程序:有一个示范程序MultiViewport.java
基本概念:
多视图:就是将多个绘制好的图形按照一定的规则,排列组成一个具有特定意义的图形,然后在一个视图中显示出来。
算法设计:
本程序功能:实现饼图、直方图和折线对学生成绩的统计。
饼图:饼图显示一个数据系列中各项的大小与各项所占总和的比例。饼图中的数据点显示为整个饼图的百分比。本程序中的饼图统计的是学生成绩状况。
饼图算法:根据各个类别所占总统计数的比例来确定其在饼图中所占的比例大小,每一个类别就是一个扇形,扇形的大小是根据所占比例确定的。假设在中等成绩段的学生人数是m人,统计的总人数是n人,那么中等成绩段在饼图中的比例就是m/n,其在饼图中的大小是m/n*360。
直方图:又称柱状图、质量分布图。是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。本程序使用矩形的填充来实现柱状图形。程序中横轴表示成绩分段,纵轴表示人数分布。
直方图算法:根据每个类别占总调查人数的比例来确定柱状图的高低,每一个类别所占的比例就是一个矩形在直方图中的相对高度,一个类别就是用一个矩形表示,矩形的宽度就是成绩分布段。如果在图中绘制出来就是按照每个类别所占的比例扩大或缩小多少倍,在图形中较好的表现出来。如果人数多,则柱状就会高,反之则低。
折线:以折线的上升或下降来表示统计数量的增减变化的统计图,叫作折线统计图。可以反应事物的变化趋势。本程序是统计学生成绩趋势,折线的转折点就是某个等级的人数所占总人数的比例。
折线算法:以折线的上升或下降来表示统计数量的增减变化的统计图,叫作折线统计图。在本程序中的折线的每一段都是一条线段。简单的说,就是将直方图的柱状的最高点改为一个点,然后将不同类别的点连接起来,就形成了折线图。折线的转折点就是某个等级的人数所占总人数的比例。
代码:
//画圆饼统计图(成绩统计)
public void paintPIGraph_1(MyCanvas m) {
double r=0.8; //外圆半径
double cr=0.3; //内圆半径
/*利用三基色构造颜色*/
m.setColor(new Color((float)0.95,(float)0.75,(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.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*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 Co
原创力文档


文档评论(0)