⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mofang.java

📁 web页面验证码
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
                z1=(float)(zuoBiaoZhouSmallDingXi*Math.cos(i*2*Math.PI/25));
                x1=zuoBiaoZhouSmallDingChang ;
                y1=(float)(zuoBiaoZhouSmallDingXi*Math.sin(i*2*Math.PI/25));
                vert[i]=new Point3f(x1,y1,z1);
                colors[i]=Block.mianColor[0];
            }
        }

        for(i=0;i<14;i++)
        {
            if(i==0)
            {
                vert[27+i]=new Point3f(zuoBiaoZhouSmallDingDian,0.0f,0.0f);
                colors[27+i]=Block.mianColor[0];
            }
            else
            {
                z1=(float)(0.005f*Math.cos(i*2*Math.PI/12));
                x1=zuoBiaoZhouSmallWeiDian ;
                y1=(float)(0.005f*Math.sin(i*2*Math.PI/12));
                vert[27+i]=new Point3f(x1,y1,z1);
                colors[27+i]=Block.mianColor[1];
            }
        }


        int count[]=new int[2];
        count[0]=27 ;
        count[1]=14 ;

        TriangleFanArray tri=new TriangleFanArray(
        vert.length,
        TriangleFanArray.COORDINATES|TriangleStripArray.COLOR_3,
        count
        );
        tri.setCoordinates(0,vert);
        tri.setColors(0,colors);
        Appearance app=new Appearance();

        PolygonAttributes polyAttrib=new PolygonAttributes();
        polyAttrib.setCullFace(PolygonAttributes.CULL_NONE);
        //polyAttrib.setPolygonMode(PolygonAttributes.POLYGON_LINE);
        app.setPolygonAttributes(polyAttrib);

        Shape3D shape=new Shape3D(tri,app);

        //System.out.print("zuoBiaoZhuSmallX 创建 完成");

        trans.addChild(shape);


        //到这里,小坐标轴对象创建完成


    }
    public static  void  zuoBiaoZhuSmallYShape3D(TransformGroup trans)
    {


        //创建小坐标轴对象

        int i ;
        float x1,x2,y1,y2,z1,z2 ;

        Point3f[]vert=new Point3f[41];
        Color3f[]colors=new Color3f[41];
        for(i=0;i<27;i++)
        {
            if(i==0)
            {
                vert[i]=new Point3f(0.0f,zuoBiaoZhouSmallDingDian,0.0f);
                colors[i]=Block.mianColor[2];
            }
            else
            {
                x1=(float)(zuoBiaoZhouSmallDingXi*Math.cos(i*2*Math.PI/25));
                y1=zuoBiaoZhouSmallDingChang ;
                z1=(float)(zuoBiaoZhouSmallDingXi*Math.sin(i*2*Math.PI/25));
                vert[i]=new Point3f(x1,y1,z1);
                colors[i]=Block.mianColor[2];
            }
        }

        for(i=0;i<14;i++)
        {
            if(i==0)
            {
                vert[27+i]=new Point3f(0.0f,zuoBiaoZhouSmallDingDian,0.0f);
                colors[27+i]=Block.mianColor[2];
            }
            else
            {
                x1=(float)(0.005f*Math.cos(i*2*Math.PI/12));
                y1=zuoBiaoZhouSmallWeiDian ;
                z1=(float)(0.005f*Math.sin(i*2*Math.PI/12));
                vert[27+i]=new Point3f(x1,y1,z1);
                colors[27+i]=Block.mianColor[3];
            }
        }
        int count[]=new int[2];
        count[0]=27 ;
        count[1]=14 ;

        TriangleFanArray tri=new TriangleFanArray(
        vert.length,
        TriangleFanArray.COORDINATES|TriangleStripArray.COLOR_3,
        count
        );
        tri.setCoordinates(0,vert);
        tri.setColors(0,colors);
        Appearance app=new Appearance();

        PolygonAttributes polyAttrib=new PolygonAttributes();
        polyAttrib.setCullFace(PolygonAttributes.CULL_NONE);
        //polyAttrib.setPolygonMode(PolygonAttributes.POLYGON_LINE);
        app.setPolygonAttributes(polyAttrib);

        Shape3D shape=new Shape3D(tri,app);
        //System.out.print("zuoBiaoZhuSmallY 创建 完成");

        trans.addChild(shape);


        //到这里,小坐标轴对象创建完成


    }

    public static  void  zuoBiaoZhuSmallZShape3D(TransformGroup trans)
    {


        //创建小坐标轴对象

        int i ;
        float x1,x2,y1,y2,z1,z2 ;

        Point3f[]vert=new Point3f[41];
        Color3f[]colors=new Color3f[41];
        for(i=0;i<27;i++)
        {
            if(i==0)
            {
                vert[i]=new Point3f(0.0f,0.0f,zuoBiaoZhouSmallDingDian);
                colors[i]=Block.mianColor[4];
            }
            else
            {
                y1=(float)(zuoBiaoZhouSmallDingXi*Math.cos(i*2*Math.PI/25));
                z1=zuoBiaoZhouSmallDingChang ;
                x1=(float)(zuoBiaoZhouSmallDingXi*Math.sin(i*2*Math.PI/25));
                vert[i]=new Point3f(x1,y1,z1);
                colors[i]=Block.mianColor[4];
            }
        }

        for(i=0;i<14;i++)
        {
            if(i==0)
            {
                vert[27+i]=new Point3f(0.0f,0.0f,zuoBiaoZhouSmallDingDian);
                colors[27+i]=Block.mianColor[4];
            }
            else
            {
                y1=(float)(0.005f*Math.cos(i*2*Math.PI/12));
                z1=zuoBiaoZhouSmallWeiDian ;
                x1=(float)(0.005f*Math.sin(i*2*Math.PI/12));
                vert[27+i]=new Point3f(x1,y1,z1);
                colors[27+i]=Block.mianColor[5];
            }
        }
        int count[]=new int[2];
        count[0]=27 ;
        count[1]=14 ;

        TriangleFanArray tri=new TriangleFanArray(
        vert.length,
        TriangleFanArray.COORDINATES|TriangleStripArray.COLOR_3,
        count
        );
        tri.setCoordinates(0,vert);
        tri.setColors(0,colors);


        Appearance app=new Appearance();

        PolygonAttributes polyAttrib=new PolygonAttributes();
        polyAttrib.setCullFace(PolygonAttributes.CULL_NONE);
        //polyAttrib.setPolygonMode(PolygonAttributes.POLYGON_LINE);
        app.setPolygonAttributes(polyAttrib);

        Shape3D shape=new Shape3D(tri,app);

 

        //System.out.print("zuoBiaoZhuSmallZ 创建 完成");

        trans.addChild(shape);


        //到这里,小坐标轴对象创建完成


    }
       public static Shape3D shapeMaker(Component observer,String filename,Point3f[] p)
       {

       //用材质,四顶点数组创建一个四边面,需要applet对象observer


            //创建贴图和外观
            TextureLoader loader=new  TextureLoader(filename,observer);
            ImageComponent2D myImage=loader.getImage();
            Texture myTex=loader.getTexture();
            myTex.setImage(0,myImage);
            Appearance appear=new Appearance();
            appear.setTexture(myTex);

            //四边形对象
            //QuadArray tri=new QuadArray(dingdian.length,QuadArray.COORDINATES|QuadArray.COLOR_3|QuadArray.TEXTURE_COORDINATE_2);
QuadArray tri=new QuadArray(4,QuadArray.COORDINATES|QuadArray.TEXTURE_COORDINATE_2);//GeometryArray
            tri.setCoordinates(0,p);
            //tri.setColors(0,color);

            //给四边形对象配材质
            TexCoord2f texCoords=new TexCoord2f();//材质坐标
            texCoords.set(0.0f,1.0f);//取左下角
            tri.setTextureCoordinate(0,0,texCoords);//为左上角
            texCoords.set(0.0f,0.0f);//
            tri.setTextureCoordinate(0,1,texCoords);//
            texCoords.set(1.0f,0.0f);//
            tri.setTextureCoordinate(0,2,texCoords);//
            texCoords.set(1.0f,1.0f);//
            tri.setTextureCoordinate(0,3,texCoords);//

            Shape3D shape=new Shape3D(tri,appear);
        return shape ;

        //到这里,6个面对象创建完成
    }
    public static void addText3DDonghua(TransformGroup parentTrg,String textString,Point3f myPoint3f,float sl,Color3f ambientColor,int donghua)
    {
     //s1定scale,myPoint3f定位置,daxiao是大小
     //字的左下角默认左下角在中点,当tl=0.1时,要向左移10才到左端

     //自定义trg
        Transform3D trgtra=new Transform3D();
        TransformGroup trg=new TransformGroup(trgtra);
        trg.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
        trg.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
        //trg.setCapability(TransformGroup.ENABLE_PICK_REPORTING);

     double tessellation=-0.0 ;
     String fontName="vadana" ;
        // Create the root of the branch graph
        // Create a Transformgroup to scale all objects so they
        // appear in the scene.
        TransformGroup objScale=new TransformGroup();
        Transform3D t3d=new Transform3D();
        // Assuming uniform size chars, set scale to fit string in view

        t3d.setScale(sl);

        objScale.setTransform(t3d);
        trg.addChild(objScale);

        // Create the transform group node and initialize it to the
        // identity.  Enable the TRANSFORM_WRITE capability so that
        // our behavior code can modify it at runtime.  Add it to the
        // root of the subgraph.
        TransformGroup objTrans=new TransformGroup();
        objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
        objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);

        objScale.addChild(objTrans);


        Font3D f3d ;
        if(tessellation>0.0)
        {
            f3d=new Font3D(new Font(fontName,Font.PLAIN,2),
            tessellation,
            new FontExtrusion());
        }
        else
        {
            f3d=new Font3D(new Font(fontName,Font.PLAIN,2),
            new FontExtrusion());
        }
        Text3D txt=new Text3D(f3d,textString,
        myPoint3f);
        Shape3D sh=new Shape3D();
        Appearance app=new Appearance();
        Material mm=new Material();
        mm.setLightingEnable(true);
        app.setMaterial(mm);
        sh.setGeometry(txt);
        sh.setAppearance(app);
        objTrans.addChild(sh);

        BoundingSphere bounds=
        new BoundingSphere(new Point3d(0.0,0.0,0.0),100.0);

        // Set up the ambient light

        AmbientLight ambientLightNode=new AmbientLight(ambientColor);
        ambientLightNode.setInfluencingBounds(bounds);
        trg.addChild(ambientLightNode);

        // Set up the directional lights
        Color3f light1Color=new Color3f(1.0f,1.0f,0.9f);
        Vector3f light1Direction=new Vector3f(1.0f,1.0f,1.0f);
        Color3f light2Color=new Color3f(1.0f,1.0f,0.9f);
        Vector3f light2Direction=new Vector3f(-1.0f,-1.0f,-1.0f);

        DirectionalLight light1
        =new DirectionalLight(light1Color,light1Direction);
        light1.setInfluencingBounds(bounds);
        trg.addChild(light1);

        DirectionalLight light2
        =new DirectionalLight(light2Color,light2Direction);
        light2.setInfluencingBounds(bounds);
        trg.addChild(light2);

if(donghua==1)
{
        //给trg(自定义),加上旋转插件
        Alpha alpha1=new Alpha(-1,Alpha.INCREASING_ENABLE|Alpha.DECREASING_ENABLE,0,0,5000,300,100000,5000,300,100000);
        RotationInterpolator myRoTate=new RotationInterpolator(alpha1,trg,trgtra,0.0f,(float)Math.PI*30);
myRoTate.setSchedulingBounds(bounds);
trg.addChild(myRoTate);
trgtra.rotZ(Math.PI/2);
trg.setTransform(trgtra);
System.out.println("\n文本 动画 方案:"+donghua);
}
parentTrg.addChild(trg);
    }

}
//由于java数组的局限,整个程序使用0,1,2空间,为了方便计算,计算时要进行坐标变换

public class MoFang
{
    //该类含魔方的数据表示,blockArray为计算单步必需的,Position为便于人的视觉(用于操作和
    //显示输出)而添加的辅助结构,实际上,我们可以总是从blockArray算出来,但计算量大得惊人
    public static Block[][][]blockArray=new Block[3][3][3];
    //设魔方27块
    public static Position[][][]positionArray=new Position[3][3][3];
    //魔方27个绝对位置

    //用于处理对魔方的操作,共27种操作
    //doType:'X','Y','Z'
    //Floor:-1,0,1
    //totateArg:90 180 -90
    public static void doIt(char doType,int Floor,int totateArg)
    {
        System.out.println("\n处理操作:"+doType);
        System.out.println("层数:"+(Floor-1));
        System.out.println("角度:"+totateArg+"\n");

                   if(!Block.closeDonghua)  //动画打开才等待
{

  while(Block.yunXingThread!=0)
  {System.out.print('.');

  }


}
        switch(doType)
        {
            case 'Z' :
            for(int i=0;i<=2;i++)
            for(int j=0;j<=2;j++)
            //for(int k=0;k<=2;k++)
            {
             if(Block.closeDonghua)//动画关闭才变换中间块
{
                  if(i==1&&j==1)
                {
                    continue ;
                }
}

                int changBlockX=positionArray[i][j][Floor].x ;
                int changBlockY=positionArray[i][j][Floor].y ;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -