实验三Java3D的三角网格与四边网格定义与生成.docVIP

实验三Java3D的三角网格与四边网格定义与生成.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验三Java3D的三角网格与四边网格定义与生成

实验三 Java 3D的三角网格与四边网格定义与生成 二、目的及要求 (1)掌握一个平面法向量的概念与计算; (2)熟练掌握PolygonAttributes类的功能与各参数的含义; (3)掌握三角网格类TriangleArray类的几何数据定义方式; (4)掌握TriangleStripArray类的定义格式与使用; (5)掌握TriangleFanArray类的定义格式与使用; (6)掌握IndexedTriangleArray类的定义格式与使用; (7)掌握QuadArray类的定义格式与使用; (8)掌握线型数据、平面型数据与三维层状立体数据的多维数组定义; (9)掌握几何数据的多维数组表示与Java 3D中各种类所使用的一维数组的转换方法; (10)掌握一个体或者一个面的三角网格、四边网格表示与显示技术; (11)掌握三角网格面或四边网格面的颜色等属性设置与图形显示。 三、实验内容 (1)用IndexedTriangleStripArray创建连续的三角形面,在顶点坐标数组中,前三个点将创建一个三角形面,从第4个顶点开始,每个顶点和前一个三角形面的后两个顶点组成一个三角形面。这里我们用IndexedTriangleStripArray创建一个皇冠,先用50个顶点创建皇冠下部的圆环,然后在圆环的上边沿挑选24个顶点,与顶点数组中后12个顶点组成12个三角片面,形成皇冠上的三角形装饰物。因此顶点数组中一共有62个元素,期中有24个顶点用了2次,共生成13组三角形面。 关键代码: BranchGroup createSceneGraph() { BranchGroup objRoot=new BranchGroup(); int n=24; int i; float x1,x2,y1,y2,z1,z2; //创建Point3f类型的顶点数组和Color3f类型的颜色数组,用于存放点的顶点坐标和颜色值,数组的大小为62,前50个为半径大小相同,高度不同的点;后12个点为半径略大,位置较高的顶点。 Point3f[] vert=new Point3f[62]; Color3f[] colors=new Color3f[62]; for(i=0;in;i++) { x1=(float)(0.6f*Math.cos(i*2*Math.PI/24)); y1=0.1f;; z1=(float)(0.6f*Math.sin(i*2*Math.PI/24)); vert[i*2]=new Point3f(x1,y1,z1); x2=(float)(0.6f*Math.cos(i*2*Math.PI/24)); y2=0.1f;; z2=(float)(0.6f*Math.sin(i*2*Math.PI/24)); vert[i*2+1]=new Point3f(x2,y2,z2); } vert[48]=new Point3f(0.6f,0.1f,0.0f); vert[49]=new Point3f(0.6f,-0.1f,0.0f); for(i=50;i62;i++) { x1=(float)(0.65f*Math.cos((i-50)*2*Math.PI/12)); y1=0.35f; z1=(float)(0.65f*Math.sin((i-50)*2*Math.PI/12)); vert[i]=new Point3f(x1,y1,z1); } for(i=0;i62;i++)colors[i]=new Color3f(1f,0f,1f); //创建索引数组index,因为有24个点要使用2次,因此index数组的大小为62+24=86,数组中每3个顶点组成一个三角形面 int[] index=new int[62+24]; for(i=0;i50;i++)index[i]=i; for(i=0;i12;i++) { index[i*3+50]=i*4; index[i*3+1+50]=i*4+4; index[i*3+2+50]=i+50; } //定义创建13组三角形面,前50个顶点为一组三角形面,后36个顶点每3个顶点为一组三角形面 int[] StripCount=new int[13]; StripCount[0]=50; for(i=1;i13;i++) { StripCount[i]=3; } 图形显示如下: (2)用TriangleFanArray来绘制一把伞,它由两组三角形面做成,第一组是

文档评论(0)

youshen + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档