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