计算机三维动态图形设计——八倍镜模型代码实现

计算机三维动态图形设计——八倍镜模型代码实现

利用双三次Bezier曲面拼接构建三维复杂模型,并在此基础上增加环境光、为目镜和物镜设置透明度。


侧视图
从目镜看
俯视图
从物镜看


import java.applet.Applet;
import java.awt.*;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.universe.*;
import javax.media.j3d.*;
import javax.vecmath.*;
import com.sun.j3d.utils.behaviors.mouse.*;
public class BezierSurfaceMerging extends Applet
{public BranchGroup createBranchGroupSceneGraph()
	{BranchGroup BranchGroupRoot =new BranchGroup();
		BoundingSphere bounds=new BoundingSphere(new Point3d(0.0,0.0,0.0),100.0);
		Color3f bgColor=new Color3f(0.42f,0.42f,0.42f);
		Background bg=new Background(bgColor);
		bg.setApplicationBounds(bounds);
		BranchGroupRoot.addChild(bg);
		Color3f directionalColor=new Color3f(0.9f,0.9f,1f);
		Vector3f vec=new Vector3f(0.f,0.f,-1.0f);
		DirectionalLight directionalLight=new DirectionalLight(directionalColor,vec);
		directionalLight.setInfluencingBounds(bounds);
		BranchGroupRoot.addChild(directionalLight);
		Transform3D tr=new Transform3D();
		tr.setScale(0.85);
		TransformGroup transformgroup=new TransformGroup(tr);
		transformgroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
		transformgroup.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
		BranchGroupRoot.addChild(transformgroup);
		MouseRotate mouserotate = new MouseRotate();
		mouserotate.setTransformGroup(transformgroup);
		BranchGroupRoot.addChild(mouserotate);
		mouserotate.setSchedulingBounds(bounds);
		MouseZoom mousezoom = new MouseZoom();
		mousezoom.setTransformGroup(transformgroup);
		BranchGroupRoot.addChild(mousezoom);
		mousezoom.setSchedulingBounds(bounds);
		MouseTranslate mousetranslate = new MouseTranslate();
		mousetranslate.setTransformGroup(transformgroup);
		BranchGroupRoot.addChild(mousetranslate);
		mousetranslate.setSchedulingBounds(bounds);

//定义第一个Bezier曲面的16个控制顶点
		float[][][] P1={{{-0.98f, 0.125f, 0f, 1.f},
		{-0.85f, 0.125f, 0.f, 1.f},
		{-0.68f, 0.125f, 0.f,1.f},
		{-0.51f, 0.125f, 0f, 1.f}},
		{{-0.98f, 0.125f, 0.165f, 1.f},
		{-0.85f, 0.125f, 0.165f, 1.f},
		{-0.68f, 0.125f, 0.165f,1.f},
		{-0.51f, 0.125f, 0.165f, 1.f}},
		{{-0.98f, -0.125f, 0.165f, 1.f},
		{-0.85f, -0.125f, 0.165f, 1.f},
		{-0.68f, -0.125f, 0.165f,1.f},
		{-0.51f, -0.125f, 0.165f, 1.f}},
		{{-0.98f, -0.125f, 0f, 1.f},
		{-0.85f, -0.125f, 0.f, 1.f},
		{-0.68f, -0.125f, 0.f,1.f},
		{-0.51f, -0.125f, 0f, 1.f}}};
//定义第一个Bezier曲面外观属性
		Appearance app1 = new Appearance();
		Material material1 = new Material();
		material1.setDiffuseColor(new Color3f(.0f,.0f,.0f));
		PolygonAttributes polygona1=new PolygonAttributes();
		polygona1.setBackFaceNormalFlip(true);
		polygona1.setCullFace(PolygonAttributes.CULL_NONE);
		polygona1.setPolygonMode(PolygonAttributes.POLYGON_FILL);
		app1.setPolygonAttributes(polygona1);
		ColoringAttributes color1=new ColoringAttributes();
		color1.setColor(0.f,0.f,0.f);
		app1.setColoringAttributes(color1);
		app1.setMaterial(material1);
//定义第二个Bezier曲面的16个控制顶点
		float[][][] P2={{{-0.51f, 0.125f, 0.f, 1.f},
		{-0.494f, 0.117f, 0.f, 1.f},
		{-0.477f, 0.1085f, 0.f,1.f},
		{-0.46f, 0.1f, 0.f, 1.f}},
		{{-0.51f, 0.125f, 0.165f, 1.f},
		{-0.494f, 0.117f, 0.1545f, 1.f},
		{-0.477f, 0.1085f, 0.1432f,1.f},
		{-0.46f, 0.1f, 0.132f, 1.f}},
		{{-0.51f, -0.125f, 0.165f, 1.f},
		{-0.494f, -0.117f, 0.1545f, 1.f},
		{-0.477f, -0.1085f, 0.1432f,1.f},
		{-0.46f, -0.1f, 0.132f, 1.f}},
		{{-0.51f, -0.125f, 0.f, 1.f},
		{-0.494f, -0.117f, 0.f, 1.f},
		{-0.477f, -0.1085f, 0.f,1.f},
		{-0.46f, -0.1f, 0.f, 1.f}}};
//定义第二个Bezier曲面外观属性
		Appearance app2 = new Appearance();
		Material material2 = new Material();
		material2.setDiffuseColor(new Color3f(0.05f,.0f,0.f));
		PolygonAttributes polygona2=new PolygonAttributes();
		polygona2.setBackFaceNormalFlip(true);
		polygona2.setCullFace(PolygonAttributes.CULL_NONE);
		polygona2.setPolygonMode(PolygonAttributes.POLYGON_FILL);
		app2.setPolygonAttributes(polygona2);
		app2.setMaterial(material2);
//定义第三个Bezier曲面的16个控制顶点
		float[][][] P3={{{-0.46f, 0.1f, 0.f, 1.f},
		{-0.444f, 0.1f, 0.f, 1.f},
		{-0.427f, 0.1f, 0.f,1.f},
		{-0.41f, 0.11f, 0.f, 1.f}},
		{{-0.46f, 0.1f, 0.132f, 1.f},
		{-0.444f, 0.1f, 0.132f, 1.f},
		{-0.427f, 0.1f, 0.132f,1.f},
		{-0.41f, 0.11f, 0.1452f, 1.f}},
		{{-0.46f, -0.1f, 0.132f, 1.f},
		{-0.444f, -0.1f, 0.132f, 1.f},
		{-0.427f, -0.1f, 0.132f,1.f},
		{-0.41f, -0.11f, 0.1452f, 1.f}},
		{{-0.46f, -0.1f, 0.f, 1.f},
		{-0.444f, -0.1f, 0.f, 1.f},
		{-0.427f, -0.1f, 0.f,1.f},
		{-0.41f, -0.11f, 0.f, 1.f}}};
//定义第三个Bezier曲面外观属性color3.setColor(0.8196f,0.9019f,0.9529f);
		Appearance app3 = new Appearance();
		Material material3 = new Material();
		material3.setDiffuseColor(new Color3f(0.8196f,0.9019f,0.9529f));
		PolygonAttributes polygona3=new PolygonAttributes();
		polygona3.setBackFaceNormalFlip(true);
		polygona3.setCullFace(PolygonAttributes.CULL_NONE);
		polygona3.setPolygonMode(PolygonAttributes.POLYGON_FILL);
		app3.setPolygonAttributes(polygona3);
		app3.setMaterial(material3);
		TransparencyAttributes transparence = new TransparencyAttributes(1,.2f);
		app3.setTransparencyAttributes(transparence);
//定义第四个Bezier曲面的16个控制顶点
		float[][][] P4={{{-0.41f, 0.11f, 0.f, 1.f},
		{-0.394f, 0.11f, 0.f, 1.f},
		{-0.377f, 0.11f, 0.f,1.f},
		{-0.36f, 0.11f, 0.f, 1.f}},
		{{-0.41f, 0.11f, 0.1452f, 1.f},
		{-0.394f, 0.11f, 0.1452f, 1.f},
		{-0.377f, 0.11f, 0.1452f,1.f},
		{-0.36f, 0.11f, 0.1452f, 1.f}},
		{{-0.41f, -0.11f, 0.1452f, 1.f},
		{-0.394f, -0.11f, 0.1452f, 1.f},
		{-0.377f, -0.11f, 0.1452f,1.f},
		{-0.36f, -0.11f, 0.1452f, 1.f}},
		{{-0.41f, -0.11f, 0.f, 1.f},
		{-0.394f, -0.11f, 0.f, 1.f},
		{-0.377f, -0.11f, 0.f,1.f},
		{-0.36f, -0.11f, 0.f, 1.f}}};
//定义第四个Bezier曲面外观属性
		Appearance app4 = new Appearance();
		Material material4 = new Material();
		material4.setDiffuseColor(new Color3f(0.f,0.04f,0.f));
		PolygonAttributes polygona4=new PolygonAttributes();
		polygona4.setBackFaceNormalFlip(true);
		polygona4.setCullFace(PolygonAttributes.CULL_NONE);
		polygona4.setPolygonMode(PolygonAttributes.POLYGON_FILL);
		app4.setPolygonAttributes(polygona4);
		app4.setMaterial(material4);
//定义第五个Bezier曲面的16个控制顶点
		float[][][] P5={{{-0.36f, 0.11f, 0.f, 1.f},
		{-0.277f, 0.08f, 0.f, 1.f},
		{-0.194f, 0.08f, 0.f,1.f},
		{-0.11f, 0.08f, 0.f, 1.f}},
		{{-0.36f, 0.11f, 0.1452f, 1.f},
		{-0.277f, 0.08f, 0.1056f, 1.f},
		{-0.194f, 0.08f, 0.1056f,1.f},
		{-0.11f, 0.08f, 0.1056f, 1.f}},
		{{-0.36f, -0.11f, 0.1452f, 1.f},
		{-0.277f, -0.08f, 0.1056f, 1.f},
		{-0.194f, -0.08f, 0.1056f,1.f},
		{-0.11f, -0.08f, 0.1056f, 1.f}},
		{{-0.36f, -0.11f, 0.f, 1.f},
		{-0.277f, -0.08f, 0.f, 1.f},
		{-0.194f, -0.08f, 0.f,1.f},
		{-0.11f, -0.08f, 0.f, 1.f}}};
//定义第五个Bezier曲面外观属性
		PolygonAttributes polygona5=new PolygonAttributes();
		polygona5.setBackFaceNormalFlip(true);
		polygona5.setCullFace(PolygonAttributes.CULL_NONE);
		polygona5.setPolygonMode(PolygonAttributes.POLYGON_LINE);
//定义第六个Bezier曲面的16个控制顶点
		float[][][] P6={{{-0.11f, 0.1f, 0.1f, 1.f},
		{-0.0377f, 0.1f, 0.1f, 1.f},
		{0.0377f, 0.1f, 0.1f,1.f},
		{0.11f, 0.1f, 0.1f, 1.f}},
		{{-0.11f, 0.055f, 0.1f, 1.f},
		{-0.0377f, 0.055f, 0.1f, 1.f},
		{0.0377f, 0.055f, 0.1f,1.f},
		{0.11f, 0.055f, 0.1f, 1.f}},
		{{-0.11f, -0.055f, 0.1f, 1.f},
		{-0.0377f, -0.055f, 0.1f, 1.f},
		{0.0377f, -0.055f, 0.1f,1.f},
		{0.11f, -0.055f, 0.1f, 1.f}},
		{{-0.11f, -0.1f, 0.1f, 1.f},
		{-0.0377f, -0.1f, 0.1f, 1.f},
		{0.0377f, -0.1f, 0.1f,1.f},
		{0.11f, -0.1f, 0.1f, 1.f}}};
//定义第六个Bezier曲面外观属性
		PolygonAttributes polygona6=new PolygonAttributes();
		polygona6.setBackFaceNormalFlip(true);
		polygona6.setCullFace(PolygonAttributes.CULL_NONE);
		polygona6.setPolygonMode(PolygonAttributes.POLYGON_LINE);
//定义第七个Bezier曲面的16个控制顶点
		float[][][] P7={{{0.11f, 0.1f, 0.f, 1.f},
		{0.24f, 0.1f, 0.f, 1.f},
		{0.38f, 0.1f, 0.f,1.f},
		{0.51f, 0.1f, 0.f, 1.f}},
		{{0.11f, 0.1f, 0.132f, 1.f},
		{0.24f, 0.1f, 0.132f, 1.f},
		{0.38f, 0.1f, 0.132f,1.f},
		{0.511f, 0.1f, 0.132f, 1.f}},
		{{0.11f, -0.1f, 0.132f, 1.f},
		{0.24f, -0.1f, 0.132f, 1.f},
		{0.38f, -0.1f, 0.132f,1.f},
		{0.511f, -0.1f, 0.132f, 1.f}},
		{{0.11f, -0.1f, 0.f, 1.f},
		{0.24f, -0.1f, 0.f, 1.f},
		{0.38f, -0.1f, 0.f,1.f},
		{0.51f, -0.1f, 0.f, 1.f}}};
//定义第七个Bezier曲面外观属性
		PolygonAttributes polygona7=new PolygonAttributes();
		polygona7.setBackFaceNormalFlip(true);
		polygona7.setCullFace(PolygonAttributes.CULL_NONE);
		polygona7.setPolygonMode(PolygonAttributes.POLYGON_LINE);
//定义第八个Bezier曲面的16个控制顶点
		float[][][] P8={{{0.51f, 0.1f, 0.f, 1.f},
		{0.593f, 0.1166f, 0.f, 1.f},
		{0.676f, 0.135f, 0.f,1.f},
		{0.76f, 0.15f, 0.f, 1.f}},
		{{0.51f, 0.1f, 0.132f, 1.f},
		{0.593f, 0.1166f, 0.1539f, 1.f},
		{0.676f, 0.135f, 0.1782f,1.f},
		{0.76f, 0.15f, 0.198f, 1.f}},
		{{0.51f, -0.1f, 0.132f, 1.f},
		{0.593f, -0.1166f, 0.1539f, 1.f},
		{0.676f, -0.135f, 0.1782f,1.f},
		{0.76f, -0.15f, 0.198f, 1.f}},
		{{0.51f, -0.1f, 0.f, 1.f},
		{0.593f, -0.1166f, 0.f, 1.f},
		{0.676f, -0.135f, 0.f,1.f},
		{0.76f, -0.15f, 0.f, 1.f}}};
//定义第八个Bezier曲面外观属性
		PolygonAttributes polygona8=new PolygonAttributes();
		polygona8.setBackFaceNormalFlip(true);
		polygona8.setCullFace(PolygonAttributes.CULL_NONE);
		polygona8.setPolygonMode(PolygonAttributes.POLYGON_LINE);
//定义第九个Bezier曲面的16个控制顶点
		float[][][] P9={{{0.76f, 0.15f, 0.f, 1.f},
		{0.86f, 0.15f, 0.f, 1.f},
		{0.96f, 0.15f, 0.f,1.f},
		{1.06f, 0.15f, 0.f, 1.f}},
		{{0.76f, 0.15f, 0.198f, 1.f},
		{0.86f, 0.15f, 0.198f, 1.f},
		{0.96f, 0.15f, 0.198f,1.f},
		{1.06f, 0.15f, 0.198f, 1.f}},
		{{0.76f, -0.15f, 0.198f, 1.f},
		{0.86f, -0.15f, 0.198f, 1.f},
		{0.96f, -0.15f, 0.198f,1.f},
		{1.06f, -0.15f, 0.198f, 1.f}},
		{{0.76f, -0.15f, 0.f, 1.f},
		{0.86f, -0.15f, 0.f, 1.f},
		{0.96f, -0.15f, 0.f,1.f},
		{1.06f, -0.15f, 0.f, 1.f}}};
//定义第九个Bezier曲面外观属性
		PolygonAttributes polygona9=new PolygonAttributes();
		polygona9.setBackFaceNormalFlip(true);
		polygona9.setCullFace(PolygonAttributes.CULL_NONE);
		polygona9.setPolygonMode(PolygonAttributes.POLYGON_LINE);
//定义第十个Bezier曲面的16个控制顶点
		float[][][] P10={{{1.06f, 0.15f, 0.f, 1.f},
		{1.09f, 0.15f, 0.f, 1.f},
		{1.12f, 0.15f, 0.f,1.f},
		{1.13f, 0.15f, 0.f, 1.f}},
		{{1.06f, 0.15f, 0.198f, 1.f},
		{1.00f, 0.15f, 0.198f, 1.f},
		{1.0f, 0.15f, 0.198f,1.f},
		{1.00f, 0.15f, 0.198f, 1.f}},
		{{1.06f, -0.15f, 0.198f, 1.f},
		{1.12f, -0.15f, 0.1989f, 1.f},
		{1.15f, -0.15f, 0.198f,1.f},
		{1.15f, -0.15f, 0.198f, 1.f}},
		{{1.06f, -0.15f, 0.f, 1.f},
		{1.06f, -0.15f, 0.f, 1.f},
		{1.06f, -0.15f, 0.f,1.f},
		{1.06f, -0.15f, 0.f, 1.f}}};
//定义第十个Bezier曲面外观属性
		PolygonAttributes polygona10=new PolygonAttributes();
		polygona10.setBackFaceNormalFlip(true);
		polygona10.setCullFace(PolygonAttributes.CULL_NONE);
		polygona10.setPolygonMode(PolygonAttributes.POLYGON_LINE);
		Shape3D BezierSurfaceface1=new BezierThreeOrderSurfaceface(P1,app4);
		transformgroup.addChild(BezierSurfaceface1);
		Shape3D BezierSurfaceface2=new BezierThreeOrderSurfaceface(P2,app2);
		transformgroup.addChild(BezierSurfaceface2);
		Shape3D BezierSurfaceface3=new BezierThreeOrderSurfaceface(P3,app2);
		transformgroup.addChild(BezierSurfaceface3);
		Shape3D BezierSurfaceface4=new BezierThreeOrderSurfaceface(P4,app4);
		transformgroup.addChild(BezierSurfaceface4);
		Shape3D BezierSurfaceface5=new BezierThreeOrderSurfaceface(P5,app1);
		transformgroup.addChild(BezierSurfaceface5);
		Shape3D BezierSurfaceface6=new BezierThreeOrderSurfaceface(P6,app1);
		transformgroup.addChild(BezierSurfaceface6);
		Shape3D BezierSurfaceface7=new BezierThreeOrderSurfaceface(P7,app1);
		transformgroup.addChild(BezierSurfaceface7);
		Shape3D BezierSurfaceface8=new BezierThreeOrderSurfaceface(P8,app4);
		transformgroup.addChild(BezierSurfaceface8);
		Shape3D BezierSurfaceface9=new BezierThreeOrderSurfaceface(P9,app4);
		transformgroup.addChild(BezierSurfaceface9);
		Shape3D BezierSurfaceface10=new BezierThreeOrderSurfaceface(P10,app2);
		transformgroup.addChild(BezierSurfaceface10);
/*Shape3D BezierControlPoints1=new BezierSurfaceControlPoints(P1,app2);
transformgroup.addChild(BezierControlPoints1);
Shape3D BezierControlPoints2=new BezierSurfaceControlPoints(P2,app2);
transformgroup.addChild(BezierControlPoints2);
Shape3D BezierControlPoints3=new BezierSurfaceControlPoints(P3,app2);
transformgroup.addChild(BezierControlPoints3);
Shape3D BezierControlPoints4=new BezierSurfaceControlPoints(P4,app2);
transformgroup.addChild(BezierControlPoints4);
Shape3D BezierControlPoints5=new BezierSurfaceControlPoints(P5,app2);
transformgroup.addChild(BezierControlPoints5);
Shape3D BezierControlPoints6=new BezierSurfaceControlPoints(P6,app2);
transformgroup.addChild(BezierControlPoints6);
Shape3D BezierControlPoints7=new BezierSurfaceControlPoints(P7,app2);
transformgroup.addChild(BezierControlPoints7);
Shape3D BezierControlPoints8=new BezierSurfaceControlPoints(P8,app2);
transformgroup.addChild(BezierControlPoints8);
Shape3D BezierControlPoints9=new BezierSurfaceControlPoints(P9,app2);
transformgroup.addChild(BezierControlPoints9);
Shape3D BezierControlPoints10=new BezierSurfaceControlPoints(P10,app2);
transformgroup.addChild(BezierControlPoints10);*/
//定义第11个Bezier曲面的16个控制顶点
		float[][][] P11={{{-0.98f, 0.125f, 0f, 1.f},
		{-0.85f, 0.125f, 0.f, 1.f},
		{-0.68f, 0.125f, 0.f,1.f},
		{-0.51f, 0.125f, 0f, 1.f}},
		{{-0.98f, 0.125f, -0.165f, 1.f},
		{-0.85f, 0.125f, -0.165f, 1.f},
		{-0.68f, 0.125f, -0.165f,1.f},
		{-0.51f, 0.125f, -0.165f, 1.f}},
		{{-0.98f, -0.125f, -0.165f, 1.f},
		{-0.85f, -0.125f, -0.165f, 1.f},
		{-0.68f, -0.125f, -0.165f,1.f},
		{-0.51f, -0.125f, -0.165f, 1.f}},
		{{-0.98f, -0.125f, 0f, 1.f},
		{-0.85f, -0.125f, 0.f, 1.f},
		{-0.68f, -0.125f, 0.f,1.f},
		{-0.51f, -0.125f, 0f, 1.f}}};
//定义第11个Bezier曲面外观属性
		Appearance app11 = new Appearance();
		PolygonAttributes polygona11=new PolygonAttributes();
		polygona11.setBackFaceNormalFlip(true);
		polygona11.setCullFace(PolygonAttributes.CULL_NONE);
		polygona11.setPolygonMode(PolygonAttributes.POLYGON_FILL);
//定义第12个Bezier曲面的16个控制顶点
		float[][][] P12={{{-0.51f, 0.125f, 0.f, 1.f},
		{-0.494f, 0.117f, 0.f, 1.f},
		{-0.477f, 0.1085f, 0.f,1.f},
		{-0.46f, 0.1f, 0.f, 1.f}},
		{{-0.51f, 0.125f, -0.165f, 1.f},
		{-0.494f, 0.117f, -0.1545f, 1.f},
		{-0.477f, 0.1085f, -0.1432f,1.f},
		{-0.46f, 0.1f, -0.132f, 1.f}},
		{{-0.51f, -0.125f, -0.165f, 1.f},
		{-0.494f, -0.117f, -0.1545f, 1.f},
		{-0.477f, -0.1085f, -0.1432f,1.f},
		{-0.46f, -0.1f, -0.132f, 1.f}},
		{{-0.51f, -0.125f, 0.f, 1.f},
		{-0.494f, -0.117f, 0.f, 1.f},
		{-0.477f, -0.1085f, 0.f,1.f},
		{-0.46f, -0.1f, 0.f, 1.f}}};
//定义第12个Bezier曲面外观属性
		Appearance app12 = new Appearance();
		PolygonAttributes polygona12=new PolygonAttributes();
		polygona12.setBackFaceNormalFlip(true);
		polygona12.setCullFace(PolygonAttributes.CULL_NONE);
		polygona12.setPolygonMode(PolygonAttributes.POLYGON_LINE);
		app2.setPolygonAttributes(polygona2);
		ColoringAttributes color12=new ColoringAttributes();
		color12.setColor(0.f,0.f,1.f);
		app12.setColoringAttributes(color12);
//定义第13个Bezier曲面的16个控制顶点
		float[][][] P13={{{-0.46f, 0.1f, 0.f, 1.f},
		{-0.444f, 0.1f, 0.f, 1.f},
		{-0.427f, 0.1f, 0.f,1.f},
		{-0.41f, 0.11f, 0.f, 1.f}},
		{{-0.46f, 0.1f, -0.132f, 1.f},
		{-0.444f, 0.1f, -0.132f, 1.f},
		{-0.427f, 0.1f, -0.132f,1.f},
		{-0.41f, 0.11f, -0.1452f, 1.f}},
		{{-0.46f, -0.1f, -0.132f, 1.f},
		{-0.444f, -0.1f, -0.132f, 1.f},
		{-0.427f, -0.1f, -0.132f,1.f},
		{-0.41f, -0.11f, -0.1452f, 1.f}},
		{{-0.46f, -0.1f, 0.f, 1.f},
		{-0.444f, -0.1f, 0.f, 1.f},
		{-0.427f, -0.1f, 0.f,1.f},
		{-0.41f, -0.11f, 0.f, 1.f}}};
//定义第13个Bezier曲面外观属性
		PolygonAttributes polygona13=new PolygonAttributes();
		polygona13.setBackFaceNormalFlip(true);
		polygona13.setCullFace(PolygonAttributes.CULL_NONE);
		polygona13.setPolygonMode(PolygonAttributes.POLYGON_LINE);
//定义第14个Bezier曲面的16个控制顶点
		float[][][] P14={{{-0.41f, 0.11f, 0.f, 1.f},
		{-0.394f, 0.11f, 0.f, 1.f},
		{-0.377f, 0.11f, 0.f,1.f},
		{-0.36f, 0.11f, 0.f, 1.f}},
		{{-0.41f, 0.11f, -0.1452f, 1.f},
		{-0.394f, 0.11f, -0.1452f, 1.f},
		{-0.377f, 0.11f, -0.1452f,1.f},
		{-0.36f, 0.11f, -0.1452f, 1.f}},
		{{-0.41f, -0.11f, -0.1452f, 1.f},
		{-0.394f, -0.11f, -0.1452f, 1.f},
		{-0.377f, -0.11f, -0.1452f,1.f},
		{-0.36f, -0.11f, -0.1452f, 1.f}},
		{{-0.41f, -0.11f, 0.f, 1.f},
		{-0.394f, -0.11f, 0.f, 1.f},
		{-0.377f, -0.11f, 0.f,1.f},
		{-0.36f, -0.11f, 0.f, 1.f}}};
//定义第14个Bezier曲面外观属性
		PolygonAttributes polygona14=new PolygonAttributes();
		polygona14.setBackFaceNormalFlip(true);
		polygona14.setCullFace(PolygonAttributes.CULL_NONE);
		polygona14.setPolygonMode(PolygonAttributes.POLYGON_LINE);
//定义第15个Bezier曲面的16个控制顶点
		float[][][] P15={{{-0.36f, 0.11f, 0.f, 1.f},
		{-0.277f, 0.08f, 0.f, 1.f},
		{-0.194f, 0.08f, 0.f,1.f},
		{-0.11f, 0.08f, 0.f, 1.f}},
		{{-0.36f, 0.11f, -0.1452f, 1.f},
		{-0.277f, 0.08f, -0.1056f, 1.f},
		{-0.194f, 0.08f, -0.1056f,1.f},
		{-0.11f, 0.08f, -0.1056f, 1.f}},
		{{-0.36f, -0.11f, -0.1452f, 1.f},
		{-0.277f, -0.08f, -0.1056f, 1.f},
		{-0.194f, -0.08f, -0.1056f,1.f},
		{-0.11f, -0.08f, -0.1056f, 1.f}},
		{{-0.36f, -0.11f, 0.f, 1.f},
		{-0.277f, -0.08f, 0.f, 1.f},
		{-0.194f, -0.08f, 0.f,1.f},
		{-0.11f, -0.08f, 0.f, 1.f}}};
//定义第15个Bezier曲面外观属性
		PolygonAttributes polygona15=new PolygonAttributes();
		polygona15.setBackFaceNormalFlip(true);
		polygona15.setCullFace(PolygonAttributes.CULL_NONE);
		polygona15.setPolygonMode(PolygonAttributes.POLYGON_LINE);
//定义第16个Bezier曲面的16个控制顶点
		float[][][] P16={{{-0.11f, 0.1f, -0.1f, 1.f},
		{-0.0377f, 0.1f, -0.1f, 1.f},
		{0.0377f, 0.1f, -0.1f,1.f},
		{0.11f, 0.1f, -0.1f, 1.f}},
		{{-0.11f, 0.055f, -0.1f, 1.f},
		{-0.0377f, 0.055f, -0.1f, 1.f},
		{0.0377f, 0.055f, -0.1f,1.f},
		{0.11f, 0.055f, -0.1f, 1.f}},
		{{-0.11f, -0.055f, -0.1f, 1.f},
		{-0.0377f, -0.055f, -0.1f, 1.f},
		{0.0377f, -0.055f, -0.1f,1.f},
		{0.11f, -0.055f, -0.1f, 1.f}},
		{{-0.11f, -0.1f, -0.1f, 1.f},
		{-0.0377f, -0.1f, -0.1f, 1.f},
		{0.0377f, -0.1f, -0.1f,1.f},
		{0.11f, -0.1f, -0.1f, 1.f}}};
//定义第16个Bezier曲面外观属性
		PolygonAttributes polygona16=new PolygonAttributes();
		polygona16.setBackFaceNormalFlip(true);
		polygona16.setCullFace(PolygonAttributes.CULL_NONE);
		polygona16.setPolygonMode(PolygonAttributes.POLYGON_LINE);
//定义第17个Bezier曲面的16个控制顶点
		float[][][] P17={{{0.11f, 0.1f, 0.f, 1.f},
		{0.24f, 0.1f, 0.f, 1.f},
		{0.38f, 0.1f, 0.f,1.f},
		{0.51f, 0.1f, 0.f, 1.f}},
		{{0.11f, 0.1f, -0.132f, 1.f},
		{0.24f, 0.1f, -0.132f, 1.f},
		{0.38f, 0.1f, -0.132f,1.f},
		{0.511f, 0.1f, -0.132f, 1.f}},
		{{0.11f, -0.1f, -0.132f, 1.f},
		{0.24f, -0.1f, -0.132f, 1.f},
		{0.38f, -0.1f, -0.132f,1.f},
		{0.511f, -0.1f, -0.132f, 1.f}},
		{{0.11f, -0.1f, 0.f, 1.f},
		{0.24f, -0.1f, 0.f, 1.f},
		{0.38f, -0.1f, 0.f,1.f},
		{0.51f, -0.1f, 0.f, 1.f}}};
//定义第17个Bezier曲面外观属性
		PolygonAttributes polygona17=new PolygonAttributes();
		polygona17.setBackFaceNormalFlip(true);
		polygona17.setCullFace(PolygonAttributes.CULL_NONE);
		polygona17.setPolygonMode(PolygonAttributes.POLYGON_LINE);
//定义第18个Bezier曲面的16个控制顶点
		float[][][] P18={{{0.51f, 0.1f, 0.f, 1.f},
		{0.593f, 0.1166f, 0.f, 1.f},
		{0.676f, 0.135f, 0.f,1.f},
		{0.76f, 0.15f, 0.f, 1.f}},
		{{0.51f, 0.1f, -0.132f, 1.f},
		{0.593f, 0.1166f, -0.1539f, 1.f},
		{0.676f, 0.135f, -0.1782f,1.f},
		{0.76f, 0.15f, -0.198f, 1.f}},
		{{0.51f, -0.1f, -0.132f, 1.f},
		{0.593f, -0.1166f, -0.1539f, 1.f},
		{0.676f, -0.135f, -0.1782f,1.f},
		{0.76f, -0.15f, -0.198f, 1.f}},
		{{0.51f, -0.1f, 0.f, 1.f},
		{0.593f, -0.1166f, 0.f, 1.f},
		{0.676f, -0.135f, 0.f,1.f},
		{0.76f, -0.15f, 0.f, 1.f}}};
//定义第18个Bezier曲面外观属性
		PolygonAttributes polygona18=new PolygonAttributes();
		polygona18.setBackFaceNormalFlip(true);
		polygona18.setCullFace(PolygonAttributes.CULL_NONE);
		polygona18.setPolygonMode(PolygonAttributes.POLYGON_LINE);
//定义第19个Bezier曲面的16个控制顶点
		float[][][] P19={{{0.76f, 0.15f, 0.f, 1.f},
		{0.86f, 0.15f, 0.f, 1.f},
		{0.96f, 0.15f, 0.f,1.f},
		{1.06f, 0.15f, 0.f, 1.f}},
		{{0.76f, 0.15f, -0.198f, 1.f},
		{0.86f, 0.15f, -0.198f, 1.f},
		{0.96f, 0.15f, -0.198f,1.f},
		{1.06f, 0.15f, -0.198f, 1.f}},
		{{0.76f, -0.15f, -0.198f, 1.f},
		{0.86f, -0.15f, -0.198f, 1.f},
		{0.96f, -0.15f, -0.198f,1.f},
		{1.06f, -0.15f, -0.198f, 1.f}},
		{{0.76f, -0.15f, 0.f, 1.f},
		{0.86f, -0.15f, 0.f, 1.f},
		{0.96f, -0.15f, 0.f,1.f},
		{1.06f, -0.15f, 0.f, 1.f}}};
//定义第19个Bezier曲面外观属性
		PolygonAttributes polygona19=new PolygonAttributes();
		polygona19.setBackFaceNormalFlip(true);
		polygona19.setCullFace(PolygonAttributes.CULL_NONE);
		polygona19.setPolygonMode(PolygonAttributes.POLYGON_LINE);
//定义第20个Bezier曲面的16个控制顶点
		float[][][] P20={{{1.06f, 0.15f, 0.f, 1.f},
		{1.09f, 0.15f, 0.f, 1.f},
		{1.12f, 0.15f, 0.f,1.f},
		{1.13f, 0.15f, 0.f, 1.f}},
		{{1.06f, 0.15f, -0.198f, 1.f},
		{1.00f, 0.15f, -0.198f, 1.f},
		{1.0f, 0.15f, -0.198f,1.f},
		{1.00f, 0.15f, -0.198f, 1.f}},
		{{1.06f, -0.15f, -0.198f, 1.f},
		{1.12f, -0.15f, -0.1989f, 1.f},
		{1.15f, -0.15f, -0.198f,1.f},
		{1.15f, -0.15f, -0.198f, 1.f}},
		{{1.06f, -0.15f, 0.f, 1.f},
		{1.06f, -0.15f, 0.f, 1.f},
		{1.06f, -0.15f, 0.f,1.f},
		{1.06f, -0.15f, 0.f, 1.f}}};
//定义第20个Bezier曲面外观属性
		PolygonAttributes polygona20=new PolygonAttributes();
		polygona20.setBackFaceNormalFlip(true);
		polygona20.setCullFace(PolygonAttributes.CULL_NONE);
		polygona20.setPolygonMode(PolygonAttributes.POLYGON_LINE);
		Shape3D BezierSurfaceface11=new BezierThreeOrderSurfaceface(P11,app4);
		transformgroup.addChild(BezierSurfaceface11);
		Shape3D BezierSurfaceface12=new BezierThreeOrderSurfaceface(P12,app2);
		transformgroup.addChild(BezierSurfaceface12);
		Shape3D BezierSurfaceface13=new BezierThreeOrderSurfaceface(P13,app2);
		transformgroup.addChild(BezierSurfaceface13);
		Shape3D BezierSurfaceface14=new BezierThreeOrderSurfaceface(P14,app4);
		transformgroup.addChild(BezierSurfaceface14);
		Shape3D BezierSurfaceface15=new BezierThreeOrderSurfaceface(P15,app1);
		transformgroup.addChild(BezierSurfaceface15);
		Shape3D BezierSurfaceface16=new BezierThreeOrderSurfaceface(P16,app1);
		transformgroup.addChild(BezierSurfaceface16);
		Shape3D BezierSurfaceface17=new BezierThreeOrderSurfaceface(P17,app1);
		transformgroup.addChild(BezierSurfaceface17);
		Shape3D BezierSurfaceface18=new BezierThreeOrderSurfaceface(P18,app4);
		transformgroup.addChild(BezierSurfaceface18);
		Shape3D BezierSurfaceface19=new BezierThreeOrderSurfaceface(P19,app4);
		transformgroup.addChild(BezierSurfaceface19);
		Shape3D BezierSurfaceface20=new BezierThreeOrderSurfaceface(P20,app2);
		transformgroup.addChild(BezierSurfaceface20);
/*Shape3D BezierControlPoints11=new BezierSurfaceControlPoints(P11,app2);
transformgroup.addChild(BezierControlPoints11);
Shape3D BezierControlPoints12=new BezierSurfaceControlPoints(P12,app2);
transformgroup.addChild(BezierControlPoints12);
Shape3D BezierControlPoints13=new BezierSurfaceControlPoints(P13,app2);
transformgroup.addChild(BezierControlPoints13);
Shape3D BezierControlPoints14=new BezierSurfaceControlPoints(P14,app2);
transformgroup.addChild(BezierControlPoints14);
Shape3D BezierControlPoints15=new BezierSurfaceControlPoints(P15,app2);
transformgroup.addChild(BezierControlPoints15);
Shape3D BezierControlPoints16=new BezierSurfaceControlPoints(P16,app2);
transformgroup.addChild(BezierControlPoints16);
Shape3D BezierControlPoints17=new BezierSurfaceControlPoints(P17,app2);
transformgroup.addChild(BezierControlPoints17);
Shape3D BezierControlPoints18=new BezierSurfaceControlPoints(P18,app2);
transformgroup.addChild(BezierControlPoints18);
Shape3D BezierControlPoints19=new BezierSurfaceControlPoints(P19,app2);
transformgroup.addChild(BezierControlPoints19);
Shape3D BezierControlPoints20=new BezierSurfaceControlPoints(P20,app2);
transformgroup.addChild(BezierControlPoints20);*/
//定义顶层盖子Bezier曲面的16个控制顶点
		float[][][] P21={{{-0.11f, 0.1f, -0.1f, 1.f},
		{-0.055f, 0.1f, -0.1f, 1.f},
		{0.055f, 0.1f, -0.1f,1.f},
		{0.11f, 0.1f, -0.1f, 1.f}},
		{{-0.11f, 0.1f, -0.05f, 1.f},
		{-0.055f, 0.1f, -0.05f, 1.f},
		{0.055f, 0.1f, -0.05f,1.f},
		{0.11f, 0.1f, -0.05f, 1.f}},
		{{-0.11f, 0.1f, 0.05f, 1.f},
		{-0.055f, 0.1f, 0.05f, 1.f},
		{0.055f, 0.1f, 0.05f,1.f},
		{0.11f, 0.1f, 0.05f, 1.f}},
		{{-0.11f, 0.1f, 0.1f, 1.f},
		{-0.055f, 0.1f, 0.1f, 1.f},
		{0.055f, 0.1f, 0.1f,1.f},
		{0.11f, 0.1f, 0.1f, 1.f}}};
//定义第21个Bezier曲面外观属性
		PolygonAttributes polygona21=new PolygonAttributes();
		polygona21.setBackFaceNormalFlip(true);
		polygona21.setCullFace(PolygonAttributes.CULL_NONE);
		polygona21.setPolygonMode(PolygonAttributes.POLYGON_LINE);
//定义底层盖子Bezier曲面的16个控制顶点
		float[][][] P22={{{-0.11f, -0.1f, -0.1f, 1.f},
		{-0.055f, -0.1f, -0.1f, 1.f},
		{0.055f, -0.1f, -0.1f,1.f},
		{0.11f, -0.1f, -0.1f, 1.f}},
		{{-0.11f, -0.1f, -0.05f, 1.f},
		{-0.055f, -0.1f, -0.05f, 1.f},
		{0.055f, -0.1f, -0.05f,1.f},
		{0.11f, -0.1f, -0.05f, 1.f}},
		{{-0.11f, -0.1f, 0.05f, 1.f},
		{-0.055f, -0.1f, 0.05f, 1.f},
		{0.055f, -0.1f, 0.05f,1.f},
		{0.11f, -0.1f, 0.05f, 1.f}},
		{{-0.11f, -0.1f, 0.1f, 1.f},
		{-0.055f, -0.1f, 0.1f, 1.f},
		{0.055f, -0.1f, 0.1f,1.f},
		{0.11f, -0.1f, 0.1f, 1.f}}};
//定义第22个Bezier曲面外观属性
		PolygonAttributes polygona22=new PolygonAttributes();
		polygona22.setBackFaceNormalFlip(true);
		polygona22.setCullFace(PolygonAttributes.CULL_NONE);
		polygona22.setPolygonMode(PolygonAttributes.POLYGON_LINE);
//定义右侧旋钮曲面的16个控制顶点
		float[][][] P23={{{-0.052f, 0.052f, 0.16f, 1.f},
		{-0.026f, 0.08f, 0.16f, 1.f},
		{0.026f, 0.08f, 0.16f,1.f},
		{0.052f, 0.052f, 0.16f, 1.f}},
		{{-0.08f, 0.026f, 0.16f, 1.f},
		{-0.f, 0.0f, 0.16f, 1.f},
		{0.f, 0.0f, 0.16f,1.f},
		{0.08f, 0.026f, 0.16f, 1.f}},
		{{-0.08f, -0.026f, 0.16f, 1.f},
		{-0.f, -0.0f, 0.16f, 1.f},
		{0.f, -0.0f, 0.16f,1.f},
		{0.08f, -0.026f, 0.16f, 1.f}},
		{{-0.052f, -0.052f, 0.16f, 1.f},
		{-0.026f, -0.08f, 0.16f, 1.f},
		{0.026f, -0.08f, 0.16f,1.f},
		{0.052f, -0.052f, 0.16f, 1.f}}};
//定义第23个Bezier曲面外观属性
		PolygonAttributes polygona23=new PolygonAttributes();
		polygona23.setBackFaceNormalFlip(true);
		polygona23.setCullFace(PolygonAttributes.CULL_NONE);
		polygona23.setPolygonMode(PolygonAttributes.POLYGON_LINE);
//定义第24个Bezier曲面的16个控制顶点
		float[][][] P24={{{-0.052f, 0.145f, -0.052f, 1.f},
		{-0.026f, 0.145f, -0.08f, 1.f},
		{0.026f, 0.145f, -0.08f,1.f},
		{0.052f, 0.145f, -0.052f, 1.f}},
		{{-0.08f, 0.145f, -0.026f, 1.f},
		{-0.f, 0.145f, 0.0f, 1.f},
		{0.f, 0.145f, 0.0f,1.f},
		{0.08f, 0.145f, -0.026f, 1.f}},
		{{-0.08f, 0.145f, 0.026f, 1.f},
		{-0.f, 0.145f, 0.0f, 1.f},
		{0.f, 0.145f, 0.0f,1.f},
		{0.08f, 0.145f, 0.026f, 1.f}},
		{{-0.052f, 0.145f, 0.052f, 1.f},
		{-0.026f, 0.145f, 0.08f, 1.f},
		{0.026f, 0.145f, 0.08f,1.f},
		{0.052f, 0.145f, 0.052f, 1.f}}};
//定义第24个Bezier曲面外观属性
		PolygonAttributes polygona24=new PolygonAttributes();
		polygona24.setBackFaceNormalFlip(true);
		polygona24.setCullFace(PolygonAttributes.CULL_NONE);
		polygona24.setPolygonMode(PolygonAttributes.POLYGON_LINE);
//定义右侧旋钮边缘Bezier曲面的16个控制顶点
		float[][][] P25={{{0f, 0.075f, 0.1f, 1.f},
		{0f, 0.075f, 0.12f, 1.f},
		{0f, 0.075f, 0.14f,1.f},
		{0f, 0.075f, 0.16f, 1.f}},
		{{-0.099f, 0.075f, 0.1f, 1.f},
		{-0.099f, 0.075f, 0.12f, 1.f},
		{-0.099f, 0.075f, 0.14f,1.f},
		{-0.099f, 0.075f, 0.16f, 1.f}},
		{{-0.099f, -0.075f, 0.1f, 1.f},
		{-0.099f, -0.075f, 0.12f, 1.f},
		{-0.099f, -0.075f, 0.14f,1.f},
		{-0.099f, -0.075f, 0.16f, 1.f}},
		{{0f, -0.075f, 0.1f, 1.f},
		{0f, -0.075f, 0.12f, 1.f},
		{0f, -0.075f, 0.14f,1.f},
		{0f, -0.075f, 0.16f, 1.f}}};
//定义第25个Bezier曲面外观属性
		PolygonAttributes polygona25=new PolygonAttributes();
		polygona25.setBackFaceNormalFlip(true);
		polygona25.setCullFace(PolygonAttributes.CULL_NONE);
		polygona25.setPolygonMode(PolygonAttributes.POLYGON_LINE);
//定义右侧旋钮边缘Bezier曲面的16个控制顶点
		float[][][] P26={{{0f, 0.075f, 0.1f, 1.f},
		{0f, 0.075f, 0.12f, 1.f},
		{0f, 0.075f, 0.14f,1.f},
		{0f, 0.075f, 0.16f, 1.f}},
		{{0.099f, 0.075f, 0.1f, 1.f},
		{0.099f, 0.075f, 0.12f, 1.f},
		{0.099f, 0.075f, 0.14f,1.f},
		{0.099f, 0.075f, 0.16f, 1.f}},
		{{0.099f, -0.075f, 0.1f, 1.f},
		{0.099f, -0.075f, 0.12f, 1.f},
		{0.099f, -0.075f, 0.14f,1.f},
		{0.099f, -0.075f, 0.16f, 1.f}},
		{{0f, -0.075f, 0.1f, 1.f},
		{0f, -0.075f, 0.12f, 1.f},
		{0f, -0.075f, 0.14f,1.f},
		{0f, -0.075f, 0.16f, 1.f}}};
//定义第26个Bezier曲面外观属性
		PolygonAttributes polygona26=new PolygonAttributes();
		polygona26.setBackFaceNormalFlip(true);
		polygona26.setCullFace(PolygonAttributes.CULL_NONE);
		polygona26.setPolygonMode(PolygonAttributes.POLYGON_LINE);
//定义顶层旋钮边缘Bezier曲面的16个控制顶点
		float[][][] P27={{{-0.075f, 0.1f, 0.f, 1.f},
		{-0.075f, 0.115f, 0.f, 1.f},
		{-0.075f, 0.13f, 0.f,1.f},
		{-0.075f, 0.145f, 0.f, 1.f}},
		{{-0.075f, 0.1f, 0.099f, 1.f},
		{-0.075f, 0.115f, 0.099f, 1.f},
		{-0.075f, 0.13f, 0.099f,1.f},
		{-0.075f, 0.145f, 0.099f, 1.f}},
		{{0.075f, 0.1f, 0.099f, 1.f},
		{0.075f, 0.115f, 0.099f, 1.f},
		{0.075f, 0.13f, 0.099f,1.f},
		{0.075f, 0.145f, 0.099f, 1.f}},
		{{0.075f, 0.1f, 0.f, 1.f},
		{0.075f, 0.115f, 0.f, 1.f},
		{0.075f, 0.13f, 0.f,1.f},
		{0.075f, 0.145f, 0.f, 1.f}}};
//定义第27个Bezier曲面外观属性
		PolygonAttributes polygona27=new PolygonAttributes();
		polygona27.setBackFaceNormalFlip(true);
		polygona27.setCullFace(PolygonAttributes.CULL_NONE);
		polygona27.setPolygonMode(PolygonAttributes.POLYGON_LINE);
//定义顶层旋钮边缘Bezier曲面的16个控制顶点
		float[][][] P28={{{-0.075f, 0.1f, 0.f, 1.f},
		{-0.075f, 0.115f, 0.f, 1.f},
		{-0.075f, 0.13f, 0.f,1.f},
		{-0.075f, 0.145f, 0.f, 1.f}},
		{{-0.075f, 0.1f, -0.099f, 1.f},
		{-0.075f, 0.115f, -0.099f, 1.f},
		{-0.075f, 0.13f, -0.099f,1.f},
		{-0.075f, 0.145f, -0.099f, 1.f}},
		{{0.075f, 0.1f, -0.099f, 1.f},
		{0.075f, 0.115f, -0.099f, 1.f},
		{0.075f, 0.13f, -0.099f,1.f},
		{0.075f, 0.145f, -0.099f, 1.f}},
		{{0.075f, 0.1f, 0.f, 1.f},
		{0.075f, 0.115f, 0.f, 1.f},
		{0.075f, 0.13f, 0.f,1.f},
		{0.075f, 0.145f, 0.f, 1.f}}};
//定义第个Bezier曲面外观属性
		PolygonAttributes polygona28=new PolygonAttributes();
		polygona28.setBackFaceNormalFlip(true);
		polygona28.setCullFace(PolygonAttributes.CULL_NONE);
		polygona28.setPolygonMode(PolygonAttributes.POLYGON_LINE);
//定义左侧旋钮控制顶点
		float[][][] P29={{{-0.052f, 0.052f, -0.16f, 1.f},
		{-0.026f, 0.08f, -0.16f, 1.f},
		{0.026f, 0.08f, -0.16f,1.f},
		{0.052f, 0.052f, -0.16f, 1.f}},
		{{-0.08f, 0.026f, -0.16f, 1.f},
		{-0.f, 0.0f, -0.16f, 1.f},
		{0.f, 0.0f, -0.16f,1.f},
		{0.08f, 0.026f, -0.16f, 1.f}},
		{{-0.08f, -0.026f, -0.16f, 1.f},
		{-0.f, -0.0f, -0.16f, 1.f},
		{0.f, -0.0f, -0.16f,1.f},
		{0.08f, -0.026f, -0.16f, 1.f}},
		{{-0.052f, -0.052f, -0.16f, 1.f},
		{-0.026f, -0.08f, -0.16f, 1.f},
		{0.026f, -0.08f, -0.16f,1.f},
		{0.052f, -0.052f, -0.16f, 1.f}}};
//定义第29个Bezier曲面外观属性
		PolygonAttributes polygona29=new PolygonAttributes();
		polygona29.setBackFaceNormalFlip(true);
		polygona29.setCullFace(PolygonAttributes.CULL_NONE);
		polygona29.setPolygonMode(PolygonAttributes.POLYGON_LINE);
//定义左侧旋钮边缘Bezier曲面的16个控制顶点
		float[][][] P30={{{0f, 0.075f, -0.1f, 1.f},
		{0f, 0.075f, -0.12f, 1.f},
		{0f, 0.075f, -0.14f,1.f},
		{0f, 0.075f, -0.16f, 1.f}},
		{{-0.099f, 0.075f, -0.1f, 1.f},
		{-0.099f, 0.075f, -0.12f, 1.f},
		{-0.099f, 0.075f, -0.14f,1.f},
		{-0.099f, 0.075f, -0.16f, 1.f}},
		{{-0.099f, -0.075f, -0.1f, 1.f},
		{-0.099f, -0.075f, -0.12f, 1.f},
		{-0.099f, -0.075f, -0.14f,1.f},
		{-0.099f, -0.075f, -0.16f, 1.f}},
		{{0f, -0.075f, -0.1f, 1.f},
		{0f, -0.075f, -0.12f, 1.f},
		{0f, -0.075f, -0.14f,1.f},
		{0f, -0.075f, -0.16f, 1.f}}};
//定义第30个Bezier曲面外观属性
		PolygonAttributes polygona30=new PolygonAttributes();
		polygona30.setBackFaceNormalFlip(true);
		polygona30.setCullFace(PolygonAttributes.CULL_NONE);
		polygona30.setPolygonMode(PolygonAttributes.POLYGON_LINE);
//定义左侧旋钮边缘Bezier曲面的16个控制顶点
		float[][][] P31={{{0f, 0.075f, -0.1f, 1.f},
		{0f, 0.075f, -0.12f, 1.f},
		{0f, 0.075f, -0.14f,1.f},
		{0f, 0.075f, -0.16f, 1.f}},
		{{0.099f, 0.075f, -0.1f, 1.f},
		{0.099f, 0.075f, -0.12f, 1.f},
		{0.099f, 0.075f, -0.14f,1.f},
		{0.099f, 0.075f, -0.16f, 1.f}},
		{{0.099f, -0.075f, -0.1f, 1.f},
		{0.099f, -0.075f, -0.12f, 1.f},
		{0.099f, -0.075f, -0.14f,1.f},
		{0.099f, -0.075f, -0.16f, 1.f}},
		{{0f, -0.075f, -0.1f, 1.f},
		{0f, -0.075f, -0.12f, 1.f},
		{0f, -0.075f, -0.14f,1.f},
		{0f, -0.075f, -0.16f, 1.f}}};
//定义第31个Bezier曲面外观属性
		PolygonAttributes polygona31=new PolygonAttributes();
		polygona31.setBackFaceNormalFlip(true);
		polygona31.setCullFace(PolygonAttributes.CULL_NONE);
		polygona31.setPolygonMode(PolygonAttributes.POLYGON_LINE);
		Shape3D BezierSurfaceface21=new BezierThreeOrderSurfaceface(P21,app1);
		transformgroup.addChild(BezierSurfaceface21);
		Shape3D BezierSurfaceface22=new BezierThreeOrderSurfaceface(P22,app1);
		transformgroup.addChild(BezierSurfaceface22);
		Shape3D BezierSurfaceface23=new BezierThreeOrderSurfaceface(P23,app2);
		transformgroup.addChild(BezierSurfaceface23);
		Shape3D BezierSurfaceface24=new BezierThreeOrderSurfaceface(P24,app2);
		transformgroup.addChild(BezierSurfaceface24);
		Shape3D BezierSurfaceface25=new BezierThreeOrderSurfaceface(P25,app2);
		transformgroup.addChild(BezierSurfaceface25);
		Shape3D BezierSurfaceface26=new BezierThreeOrderSurfaceface(P26,app2);
		transformgroup.addChild(BezierSurfaceface26);
		Shape3D BezierSurfaceface27=new BezierThreeOrderSurfaceface(P27,app2);
		transformgroup.addChild(BezierSurfaceface27);
		Shape3D BezierSurfaceface28=new BezierThreeOrderSurfaceface(P28,app2);
		transformgroup.addChild(BezierSurfaceface28);
		Shape3D BezierSurfaceface29=new BezierThreeOrderSurfaceface(P29,app2);
		transformgroup.addChild(BezierSurfaceface29);
		Shape3D BezierSurfaceface30=new BezierThreeOrderSurfaceface(P30,app2);
		transformgroup.addChild(BezierSurfaceface30);
		Shape3D BezierSurfaceface31=new BezierThreeOrderSurfaceface(P31,app2);
		transformgroup.addChild(BezierSurfaceface31);
/*Shape3D BezierControlPoints21=new BezierSurfaceControlPoints(P21,app2);
transformgroup.addChild(BezierControlPoints21);
Shape3D BezierControlPoints22=new BezierSurfaceControlPoints(P22,app2);
transformgroup.addChild(BezierControlPoints22);
Shape3D BezierControlPoints23=new BezierSurfaceControlPoints(P23,app2);
transformgroup.addChild(BezierControlPoints23);
Shape3D BezierControlPoints24=new BezierSurfaceControlPoints(P24,app2);
transformgroup.addChild(BezierControlPoints24);
Shape3D BezierControlPoints25=new BezierSurfaceControlPoints(P25,app2);
transformgroup.addChild(BezierControlPoints25);
Shape3D BezierControlPoints26=new BezierSurfaceControlPoints(P26,app2);
transformgroup.addChild(BezierControlPoints26);
Shape3D BezierControlPoints27=new BezierSurfaceControlPoints(P27,app2);
transformgroup.addChild(BezierControlPoints27);
Shape3D BezierControlPoints28=new BezierSurfaceControlPoints(P28,app2);
transformgroup.addChild(BezierControlPoints28);
Shape3D BezierControlPoints29=new BezierSurfaceControlPoints(P29,app2);
transformgroup.addChild(BezierControlPoints29);
Shape3D BezierControlPoints30=new BezierSurfaceControlPoints(P30,app2);
transformgroup.addChild(BezierControlPoints30);
Shape3D BezierControlPoints31=new BezierSurfaceControlPoints(P31,app2);
transformgroup.addChild(BezierControlPoints31);*/
//定义前面盖子Bezier曲面的16个控制顶点
		float[][][] P32={{{-0.11f, 0.1f, -0.1f, 1.f},
		{-0.11f, 0.1f, -0.05f, 1.f},
		{-0.11f, 0.1f, 0.05f,1.f},
		{-0.11f, 0.1f, 0.1f, 1.f}},
		{{-0.11f, 0.05f, -0.1f, 1.f},
		{-0.11f, 0.05f, -0.05f, 1.f},
		{-0.11f, 0.05f, 0.05f,1.f},
		{-0.11f, 0.05f, 0.1f, 1.f}},
		{{-0.11f, -0.05f, -0.1f, 1.f},
		{-0.11f, -0.05f, -0.05f, 1.f},
		{-0.11f, -0.05f, 0.05f,1.f},
		{-0.11f, -0.05f, 0.1f, 1.f}},
		{{-0.11f, -0.1f, -0.1f, 1.f},
		{-0.11f, -0.1f, -0.05f, 1.f},
		{-0.11f, -0.1f, 0.05f,1.f},
		{-0.11f, -0.1f, 0.1f, 1.f}}};
//定义第32个Bezier曲面外观属性
		PolygonAttributes polygona32=new PolygonAttributes();
		polygona32.setBackFaceNormalFlip(true);
		polygona32.setCullFace(PolygonAttributes.CULL_NONE);
		polygona32.setPolygonMode(PolygonAttributes.POLYGON_LINE);
//定义后面盖子Bezier曲面的16个控制顶点
		float[][][] P33={{{-0.11f, 0.1f, -0.1f, 1.f},
		{-0.055f, 0.1f, -0.1f, 1.f},
		{0.055f, 0.1f, -0.1f,1.f},
		{0.11f, 0.1f, -0.1f, 1.f}},
		{{-0.11f, 0.1f, -0.05f, 1.f},
		{-0.055f, 0.1f, -0.05f, 1.f},
		{0.055f, 0.1f, -0.05f,1.f},
		{0.11f, 0.1f, -0.05f, 1.f}},
		{{-0.11f, 0.1f, 0.05f, 1.f},
		{-0.055f, 0.1f, 0.05f, 1.f},
		{0.055f, 0.1f, 0.05f,1.f},
		{0.11f, 0.1f, 0.05f, 1.f}},
		{{-0.11f, 0.1f, 0.1f, 1.f},
		{-0.055f, 0.1f, 0.1f, 1.f},
		{0.055f, 0.1f, 0.1f,1.f},
		{0.11f, 0.1f, 0.1f, 1.f}}};
//定义第33个Bezier曲面外观属性
		PolygonAttributes polygona33=new PolygonAttributes();
		polygona33.setBackFaceNormalFlip(true);
		polygona33.setCullFace(PolygonAttributes.CULL_NONE);
		polygona33.setPolygonMode(PolygonAttributes.POLYGON_LINE);
//定义物镜Bezier曲面的16个控制顶点
		float[][][] P34={{{1f, 0.08f, -0.125f, 1.f},
		{1f, 0.165f, -0.055f, 1.f},
		{1f, 0.165f, 0.055f,1.f},
		{1f, 0.08f, 0.125f, 1.f}},
		{{1f, 0.05f, -0.15f, 1.f},
		{1.05f, 0.05f, -0.05f, 1.f},
		{1.05f, 0.05f, 0.05f, 1.f},
		{1f, 0.05f, 0.15f, 1.f}},
		{{1f, -0.05f, -0.15f, 1.f},
		{1.05f, -0.05f, -0.05f, 1.f},
		{1.05f, -0.05f, 0.05f, 1.f},
		{1f, -0.05f, 0.15f, 1.f}},
		{{1f, -0.08f, -0.125f, 1.f},
		{1f, -0.165f, -0.055f, 1.f},
		{1f, -0.165f, 0.055f,1.f},
		{1f, -0.08f, 0.125f, 1.f}}};
//定义第34个Bezier曲面外观属性
		PolygonAttributes polygona34=new PolygonAttributes();
		polygona34.setBackFaceNormalFlip(true);
		polygona34.setCullFace(PolygonAttributes.CULL_NONE);
		polygona34.setPolygonMode(PolygonAttributes.POLYGON_LINE);
//定义目镜Bezier曲面的16个控制顶点
		float[][][] P35={{{-0.95f, 0.072f, -0.103f, 1.f},
		{-0.95f, 0.14f, -0.045f, 1.f},
		{-0.95f, 0.14f, 0.045f,1.f},
		{-0.95f, 0.072f, 0.103f, 1.f}},
		{{-0.95f, 0.f, -0.13f, 1.f},
		{-0.98f, 0.05f, -0.05f, 1.f},
		{-0.98f, 0.05f, 0.05f,1.f},
		{-0.95f, 0.f, 0.13f, 1.f}},
		{{-0.95f, 0.f, -0.13f, 1.f},
		{-0.98f, -0.05f, -0.05f, 1.f},
		{-0.98f, -0.05f, 0.05f, 1.f},
		{-0.95f, 0.f, 0.13f, 1.f}},
		{{-0.95f, -0.072f, -0.103f, 1.f},
		{-0.95f, -0.14f, -0.045f, 1.f},
		{-0.95f, -0.14f, 0.045f,1.f},
		{-0.95f, -0.072f, 0.103f, 1.f}}};
//定义第35个Bezier曲面外观属性
		PolygonAttributes polygona35=new PolygonAttributes();
		polygona35.setBackFaceNormalFlip(true);
		polygona35.setCullFace(PolygonAttributes.CULL_NONE);
		polygona35.setPolygonMode(PolygonAttributes.POLYGON_LINE);
		Shape3D BezierSurfaceface32=new BezierThreeOrderSurfaceface(P32,app1);
		transformgroup.addChild(BezierSurfaceface32);
		Shape3D BezierSurfaceface33=new BezierThreeOrderSurfaceface(P33,app1);
		transformgroup.addChild(BezierSurfaceface33);
		Shape3D BezierSurfaceface34=new BezierThreeOrderSurfaceface(P34,app3);
		transformgroup.addChild(BezierSurfaceface34);
		Shape3D BezierSurfaceface35=new BezierThreeOrderSurfaceface(P35,app3);
		transformgroup.addChild(BezierSurfaceface35);
/*Shape3D BezierControlPoints32=new BezierSurfaceControlPoints(P32,app2);
transformgroup.addChild(BezierControlPoints32);
Shape3D BezierControlPoints33=new BezierSurfaceControlPoints(P33,app2);
transformgroup.addChild(BezierControlPoints33);
Shape3D BezierControlPoints34=new BezierSurfaceControlPoints(P34,app3);
transformgroup.addChild(BezierControlPoints34);
Shape3D BezierControlPoints35=new BezierSurfaceControlPoints(P35,app3);
transformgroup.addChild(BezierControlPoints35);*/
//定义第36个Bezier曲面的16个控制顶点
		float[][][] P36={{{-1.01f, 0.125f, 0f, 1.f},
		{-1f, 0.125f, 0.f, 1.f},
		{-0.99f, 0.125f, 0.f,1.f},
		{-0.98f, 0.125f, 0f, 1.f}},
		{{-1.01f, 0.125f, 0.165f, 1.f},
		{-1f, 0.125f, 0.165f, 1.f},
		{-0.99f, 0.125f, 0.165f,1.f},
		{-0.98f, 0.125f, 0.165f, 1.f}},
		{{-1.01f, -0.125f, 0.165f, 1.f},
		{-1f, -0.125f, 0.165f, 1.f},
		{-0.99f, -0.125f, 0.165f,1.f},
		{-0.98f, -0.125f, 0.165f, 1.f}},
		{{-1.01f, -0.125f, 0f, 1.f},
		{-1f, -0.125f, 0.f, 1.f},
		{-0.99f, -0.125f, 0.f,1.f},
		{-0.98f, -0.125f, 0f, 1.f}}};
//定义第36个Bezier曲面外观属性
		PolygonAttributes polygona36=new PolygonAttributes();
		polygona36.setBackFaceNormalFlip(true);
		polygona36.setCullFace(PolygonAttributes.CULL_NONE);
		polygona36.setPolygonMode(PolygonAttributes.POLYGON_LINE);
//定义第37个Bezier曲面的16个控制顶点
		float[][][] P37={{{-1.01f, 0.125f, 0f, 1.f},
		{-1f, 0.125f, 0.f, 1.f},
		{-0.99f, 0.125f, 0.f,1.f},
		{-0.98f, 0.125f, 0f, 1.f}},
		{{-1.01f, 0.125f, -0.165f, 1.f},
		{-1f, 0.125f, -0.165f, 1.f},
		{-0.99f, 0.125f, -0.165f,1.f},
		{-0.98f, 0.125f, -0.165f, 1.f}},
		{{-1.01f, -0.125f, -0.165f, 1.f},
		{-1f, -0.125f, -0.165f, 1.f},
		{-0.99f, -0.125f, -0.165f,1.f},
		{-0.98f, -0.125f, -0.165f, 1.f}},
		{{-1.01f, -0.125f, 0f, 1.f},
		{-1f, -0.125f, 0.f, 1.f},
		{-0.99f, -0.125f, 0.f,1.f},
		{-0.98f, -0.125f, 0f, 1.f}}};
//定义第37个Bezier曲面外观属性
		PolygonAttributes polygona37=new PolygonAttributes();
		polygona37.setBackFaceNormalFlip(true);
		polygona37.setCullFace(PolygonAttributes.CULL_NONE);
		polygona37.setPolygonMode(PolygonAttributes.POLYGON_LINE);
		Shape3D BezierSurfaceface36=new BezierThreeOrderSurfaceface(P36,app2);
		transformgroup.addChild(BezierSurfaceface36);
		Shape3D BezierSurfaceface37=new BezierThreeOrderSurfaceface(P37,app2);
		transformgroup.addChild(BezierSurfaceface37);
/*Shape3D BezierControlPoints36=new BezierSurfaceControlPoints(P36,app2);
transformgroup.addChild(BezierControlPoints36);
Shape3D BezierControlPoints37=new BezierSurfaceControlPoints(P37,app2);
transformgroup.addChild(BezierControlPoints37);*/
		BranchGroupRoot.compile();
		return BranchGroupRoot;
	}
	public BezierSurfaceMerging()
	{setLayout(new BorderLayout());
		GraphicsConfiguration gc = SimpleUniverse.getPreferredConfiguration();
		Canvas3D c=new Canvas3D(gc);
		add("Center",c);
		BranchGroup BranchGroupScene=createBranchGroupSceneGraph();
		SimpleUniverse u=new SimpleUniverse(c);
		u.getViewingPlatform().setNominalViewingTransform();
		u.addBranchGraph(BranchGroupScene);
	}
	public static void main(String[] args)
	{new MainFrame(new BezierSurfaceMerging(),400,400); }
}
class BezierThreeOrderSurfaceface extends Shape3D
{public BezierThreeOrderSurfaceface(float[][][] P,Appearance app)
	{int i,j,k;
int n0;//定义对参数u、v在[0,1]区间的等分点数
float division;//参数u在[0,1]区间的等分线段长度
n0=50;division=1.f/n0;
//分别定义存放控制顶点x、y、z坐标与第四维坐标的数组
float[][] PX=new float[4][4];
float[][] PY=new float[4][4];
float[][] PZ=new float[4][4];
float[][] P4=new float[4][4];
//定义系数矩阵及其转置矩阵
float[][] M1={{1.f,0.f,0.f,0.f},
{-3.f,3.f,0.f,0.f},
{3.f,-6.f,3.f,0.f},
{-1.f,3.f,-3.f,1.f}};
float[][] M2={{1.f,-3.f,3.f,-1.f},
{0.f,3.f,-6.f,3.f},
{0.f,0.f,3.f,-3.f},
{0.f,0.f,0.f,1.f}};
//定义Bezier曲面的u、v参数分割点坐标数组
float[][][] UV=new float[n0+1][n0+1][2];
//定义U、V矩阵数组
float[][] UU=new float[1][4];
float[][] VV=new float[4][1];
//定义存放曲面上点的坐标的数组
float[][][] SurfaceXYZ=new float[n0+1][n0+1][4];
for(i=0;i<n0+1;i++)
	for(j=0;j<n0+1;j++)
		{ UV[i][j][0]=i*division;
			UV[i][j][1]=j*division; }
			for(i=0;i<4;i++)
				for(j=0;j<4;j++)
					{ PX[i][j]=P[i][j][0];
						PY[i][j]=P[i][j][1];
						PZ[i][j]=P[i][j][2];
						P4[i][j]=P[i][j][3]; }
//计算曲面上点的坐标值
						for(i=0;i<n0+1;i++)
							for(j=0;j<n0+1;j++)
								{ UU[0][0]=1.f;
									UU[0][1]=UV[i][j][0];
									UU[0][2]=UV[i][j][0]*UV[i][j][0];
									UU[0][3]=UV[i][j][0]*UV[i][j][0]*UV[i][j][0];
									VV[0][0]=1.f;
									VV[1][0]=UV[i][j][1];
									VV[2][0]=UV[i][j][1]*UV[i][j][1];
									VV[3][0]=UV[i][j][1]*UV[i][j][1]*UV[i][j][1];
//计算一点的x坐标
									matrixm g0=new matrixm(1,4,4,UU,M1);
									matrixm g1=new matrixm(1,4,4,g0.CC,PX);
									matrixm g2=new matrixm(1,4,4,g1.CC,M2);
									matrixm g3=new matrixm(1,4,1,g2.CC,VV);
									SurfaceXYZ[i][j][0]=g3.CC[0][0];
//计算一点的y坐标
									matrixm g4=new matrixm(1,4,4,UU,M1);
									matrixm g5=new matrixm(1,4,4,g4.CC,PY);
									matrixm g6=new matrixm(1,4,4,g5.CC,M2);
									matrixm g7=new matrixm(1,4,1,g6.CC,VV);
									SurfaceXYZ[i][j][1]=g7.CC[0][0];
//计算一点的z坐标
									matrixm g8=new matrixm(1,4,4,UU,M1);
									matrixm g9=new matrixm(1,4,4,g8.CC,PZ);
									matrixm g10=new matrixm(1,4,4,g9.CC,M2);
									matrixm g11=new matrixm(1,4,1,g10.CC,VV);
									SurfaceXYZ[i][j][2]=g11.CC[0][0];
//计算一点的第4维坐标
									matrixm g12=new matrixm(1,4,4,UU,M1);
									matrixm g13=new matrixm(1,4,4,g12.CC,P4);
									matrixm g14=new matrixm(1,4,4,g13.CC,M2);
									matrixm g15=new matrixm(1,4,1,g14.CC,VV);
									SurfaceXYZ[i][j][3]=g15.CC[0][0];
//将齐次坐标转换为三维坐标系坐标,如果第4维为1,则不用除第4维
									SurfaceXYZ[i][j][0]=SurfaceXYZ[i][j][0]/SurfaceXYZ[i][j][3];
									SurfaceXYZ[i][j][1]=SurfaceXYZ[i][j][1]/SurfaceXYZ[i][j][3];
									SurfaceXYZ[i][j][2]=SurfaceXYZ[i][j][2]/SurfaceXYZ[i][j][3];
								}
								QuadArray BezierQuadsurfaceface = new QuadArray(n0*n0*4,
									GeometryArray.COORDINATES|GeometryArray.NORMALS);
int c=0;//以顶点数累加的方式设置顶点的序号
for(i=0;i<n0;i++)
	{for(j=0;j<n0;j++)
{//设置一个平面上的4个点
	Point3f A=new Point3f(SurfaceXYZ[i][j][0],SurfaceXYZ[i][j][1],
		SurfaceXYZ[i][j][2]);
	Point3f B=new Point3f(SurfaceXYZ[i][j+1][0],SurfaceXYZ[i][j+1][1],
		SurfaceXYZ[i][j+1][2]);
	Point3f C=new Point3f(SurfaceXYZ[i+1][j+1][0],SurfaceXYZ[i+1][j+1][1],
		SurfaceXYZ[i+1][j+1][2]);
	Point3f D=new Point3f(SurfaceXYZ[i+1][j][0],SurfaceXYZ[i+1][j][1],
		SurfaceXYZ[i+1][j][2]);
//计算由四个点形成的平面的法向量
	Vector3f a = new Vector3f(A.x - B.x, A.y - B.y, A.z - B.z);
	Vector3f b = new Vector3f(C.x - B.x, C.y - B.y, C.z - B.z);
	Vector3f n = new Vector3f();
	n.cross(b, a);
	n.normalize();
//设置点的序号
	BezierQuadsurfaceface.setCoordinate(c, A);
	BezierQuadsurfaceface.setCoordinate(c+1, B);
	BezierQuadsurfaceface.setCoordinate(c+2, C);
	BezierQuadsurfaceface.setCoordinate(c+3, D);
//设置点的法向量
	BezierQuadsurfaceface.setNormal(c, n);
	BezierQuadsurfaceface.setNormal(c+1, n);
	BezierQuadsurfaceface.setNormal(c+2, n);
	BezierQuadsurfaceface.setNormal(c+3, n);
	c=c+4;
}}
this.addGeometry(BezierQuadsurfaceface);
this.setAppearance(app);
}}
class BezierSurfaceControlPoints extends Shape3D
{public BezierSurfaceControlPoints(float[][][] P,Appearance app)
	{int i,j,k;
		QuadArray BeziersurfacecontrolPointsNet =new QuadArray(3*3*4,
			GeometryArray.COORDINATES|GeometryArray.NORMALS);
		int c=0;
		for(i=0;i<3;i++)
			{for(j=0;j<3;j++)
				{Point3f A=new Point3f(P[i][j][0],P[i][j][1],P[i][j][2]);
					Point3f B=new Point3f(P[i][j+1][0],P[i][j+1][1],P[i][j+1][2]);
					Point3f C=new Point3f(P[i+1][j+1][0],P[i+1][j+1][1],P[i+1][j+1][2]);
					Point3f D=new Point3f(P[i+1][j][0],P[i+1][j][1],P[i+1][j][2]);
					Vector3f a = new Vector3f(A.x - B.x, A.y - B.y, A.z - B.z);
					Vector3f b = new Vector3f(C.x - B.x, C.y - B.y, C.z - B.z);
					Vector3f n = new Vector3f();
					n.cross(b, a);
					n.normalize();
					BeziersurfacecontrolPointsNet.setCoordinate(c, A);
					BeziersurfacecontrolPointsNet.setCoordinate(c+1, B);
					BeziersurfacecontrolPointsNet.setCoordinate(c+2, C);
					BeziersurfacecontrolPointsNet.setCoordinate(c+3, D);
					BeziersurfacecontrolPointsNet.setNormal(c, n);
					BeziersurfacecontrolPointsNet.setNormal(c+1, n);
					BeziersurfacecontrolPointsNet.setNormal(c+2, n);
					BeziersurfacecontrolPointsNet.setNormal(c+3, n);
					c=c+4;
				}}
				this.addGeometry(BeziersurfacecontrolPointsNet);
				this.setAppearance(app);
			}}
			class matrixm
			{ public float CC[][]= new float[4][4];
				int ll,mm,kk;
				public matrixm(int mmm, int kkk, int nnn,float a[][],float b[][])
				{for(ll=0;ll<mmm;ll++)
					for(mm=0;mm<nnn;mm++){CC[ll][mm]=0.f;}
						for(ll=0;ll<mmm;ll++)
							for(mm=0;mm<nnn;mm++)
								{for(kk=0;kk<kkk;kk++) CC[ll][mm]=CC[ll][mm]+a[ll][kk]*b[kk][mm];}
}}
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值