亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? java 3d 魔方源代碼.txt

?? java3d魔方源代碼實例 具體的注釋代碼里面有
?? TXT
?? 第 1 頁 / 共 5 頁
字號:
            break ;
            case 'Y' :
            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&&k==1)
                {
                    continue ;
                }
            }
                int changBlockX=positionArray[i][Floor][k].x ;
                int changBlockY=positionArray[i][Floor][k].y ;
                int changBlockZ=positionArray[i][Floor][k].z ;
                Block changBlock=blockArray[changBlockX][changBlockY][changBlockZ];
                changBlock.xyzChange('Y',totateArg);
            }
            break ;

            case 'X' :
            //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(j==1&&k==1)
                {
                    continue ;
                }
 }
                int changBlockX=positionArray[Floor][j][k].x ;
                int changBlockY=positionArray[Floor][j][k].y ;
                int changBlockZ=positionArray[Floor][j][k].z ;
                Block changBlock=blockArray[changBlockX][changBlockY][changBlockZ];
                changBlock.xyzChange('X',totateArg);
            }
            break ;

            default :
            System.out.println("無效的操作");
        }

        someBlockNewToOld();
    }

    //開始人工智能計算解法
    //select:選擇電腦的計算方案
    public static void autoStart(int select)
    {
    }

    //輸出每個位置上的塊號
    public static void showPosition()
    {
        System.out.println("\n每個位置上的塊號:");
        for(int i=0;i<=2;i++)
        for(int j=0;j<=2;j++)
        for(int k=0;k<=2;k++)
        {
            //System.out.println("Block"+i+","+j+","+k+"    "+blockArray[i][j][k].x+","+blockArray[i][j][k].y+","+blockArray[i][j][k].z);
            System.out.println("Position:"+(i-1)+","+(j-1)+","+(k-1)+"  的塊號是:  "+(positionArray[i][j][k].x-1)+","+(positionArray[i][j][k].y-1)+","+(positionArray[i][j][k].z-1));

        }
    }

    //把剛才記錄的有變化(來了新的塊)的位置 存儲到 沒個position的塊號中
    public static void someBlockNewToOld()
    {
        for(int i=0;i<=2;i++)
        for(int j=0;j<=2;j++)
        for(int k=0;k<=2;k++)
        {
            if(positionArray[i][j][k].haveNew)
            {
                positionArray[i][j][k].newToOld();
            }
        }
    }

 public static void myWait()
 {
                      try
        {

            System.in.read();

                        System.in.read();
            //暫停
        }
        catch(Exception e)
        {
        }
 }

    //測試用代碼
      public static   void someTest()
    {

      doIt('Y',0+1,90);
      //        //new MoFang().showPosition();
      MoFang.myWait();
       doIt('Y',0+1,-90);
      MoFang.myWait();
             // new MoFang().showPosition();

       doIt('Z',-1+1,-90);
                     //new MoFang().showPosition();
       MoFang.myWait();

       doIt('Z',-1+1,90);
       //      new MoFang().showPosition();
       //MoFang.myWait();
              //new MoFang().showPosition();

       doIt('X',1+1,90);
       MoFang.myWait();
               //new MoFang().showPosition();
       doIt('X',1+1,-90);
        // new MoFang().showPosition();
       MoFang.myWait();

        //showPosition();
    }


    //魔方自動隨機(jī)變化多少條
       public static void  ranGet(int num)
    {
     char selectChar='E';//'X','Y','Z'
     int layer;//-1,0,1
     int jiaoDu=0;//90,-19,180

     for(int i=0;i<num;i++)
     {
      //選xyz
      int select=(int)((Math.random()*10)%3);
      if(select==0){selectChar='X';}
      if(select==1){selectChar='Y';}
      if(select==2){selectChar='Z';}

      //
      layer=(int)((Math.random()*10)%3);//0,1,2
      layer-=1;//-1,0,1

      //
      int jiao=(int)((Math.random()*10)%3);//0,1,2
      if(jiao==0){jiaoDu=90;}
      if(jiao==1){jiaoDu=-90;}
      if(jiao==2){jiaoDu=180-90;}
      System.out.println("\n*******************************\nRandom Generater:"+(i+1)+" of "+num);
      System.out.print(selectChar);
      System.out.print(","+layer+","+jiaoDu+"\n按任意鍵開始動畫?\n");

      myWait();

      doIt(selectChar,layer+1,jiaoDu);
     }
    }
    //從三維圖形界面輸入操作參數(shù)
    public static void graphicStart()
    {
     JFrame myframe =new JFrame();
        myframe.setVisible(true);

    }
    public static void main(String[]args)
    {

     //初始化位置數(shù)組,也可以從文件中加載,其實應(yīng)該把所有關(guān)鍵信息從文件載入,關(guān)閉時保存
        for(int i=0;i<=2;i++)
        for(int j=0;j<=2;j++)
        for(int k=0;k<=2;k++)
        {

            MoFang.positionArray[i][j][k]=new Position(i,j,k);
        }
        System.out.println("初始化位置數(shù)組完成.最初全在原位置\n");

       //showPosition();

        new MainFrame(new mySimpleUniverse(),200,200);
        //加applet到應(yīng)用程序界面
  //someTest();
        //graphicStart();
  myWait();
       ranGet(30);
        //
        //
    }

}

class Block implements Runnable
{
    //計算已畫的塊數(shù)
    private static int whickBlockPainted=0 ;

    //計算生成的第幾塊
    private static int BlockCreated=0 ;

    //每面的顏色,排列為:+x,-x,+y,-y,+z,-z,no
    public static Color3f[] mianColor=
{new Color3f(1.0f,0.0f,0.0f),
new Color3f(0.0f,1.0f,0.0f),
new Color3f(0.0f,0.0f,1.0f),
new Color3f(1.0f,1.0f,0.0f),
new Color3f(1.0f,0.0f,1.0f),
new Color3f(0.0f,1.0f,1.0f),
new Color3f(0.2f,0.2f,0.2f)
};
    //每面的材質(zhì),排列為:+x,-x,+y,-y,+z,-z,no
    public static String[] mianImageFile=new String[7];

    //塊偏移量
    private static float kuaiZhongXinWeizhi=0.4f ;

    //創(chuàng)建材質(zhì)時要用的,僅用于他,他是一個applet對象
    Component observer;

    //該塊的編號
    private int blockIdX ;
    private int blockIdY ;
    private int blockIdZ ;

    //該塊的位置
    private int x ;
    private int y ;
    private int z ;

    //該塊的坐標(biāo)軸點,最初全為(1,1,1),表示與外坐標(biāo)一致
    private MyPoint xvec;
    private MyPoint yvec;
    private MyPoint zvec;

    //position=new Verctor3f(0.0f,0.0f,0.0f);

    //該塊的角度,限定為從-359到359,模360可以限定為一周,如果模180,則只能表示半個圓,不行
    //int anglex ;
    //int angley ;
    //int anglez ;

    //添加物品的變換組
    public TransformGroup transGroup ;
    public Transform3D trans ;


    //用于位置,角度變動的變換組
    public TransformGroup transGroupx ;
    public Transform3D transx ;
    public TransformGroup transGroupy ;
    public Transform3D transy ;
    public TransformGroup transGroupz ;
    public Transform3D transz ;
    public TransformGroup transGroupp ;
    public Transform3D transp ;

    //新的方塊位置
 int[]  nexyz={0,0,0};

    //動畫相關(guān)
    int totateArg;
    boolean canNew=false;
    char selectedC;
    Thread myThread;
 public static boolean closeDonghua=false ; //為true使用線程動畫,為false直接調(diào)用


  private static int selectDonghuaId=0;//取ID變量,取值從0~8,每次從0開始取,正好9個,取完后變?yōu)?0(每取一個自動加1),這時才讓所有線程一起動
  private int myDonghuaId;
 private static int donghuaDelay=50 ; //絕對延遲,
 public static int whileDelay=20;//加快同步系統(tǒng)性能延遲,

 //公共控制變量
  public static int yunXingThread=0;//運行的線程數(shù),啟動線程時加1,退出時減一。可以控制主線程等待,直到為0時才開始做所有的xyzChange,否則等待

//動畫時的多線程要用它,因為主線程仍在跑,x,y,z會變化,只能用它保存
            int yuanx;
            int yuany;
            int yuanz;

//當(dāng)前位置x點的偏移
MyPoint chaxvec;
//當(dāng)前位置y點的偏移
MyPoint chayvec;
//當(dāng)前位置z點的偏移
MyPoint chazvec;


    //構(gòu)造函數(shù),給初值
    public Block(int i,int j,int k,int px,int py,int pz,TransformGroup parentTransGroup,Transform3D t3d,BranchGroup objRoot,Component obServer1)
    {

        blockIdX=i ;
        blockIdY=j ;
        blockIdZ=k ;


        x=px ;
        y=py ;
        z=pz ;

//計算軸向量 :塊坐標(biāo)加坐標(biāo)偏移
xvec=new MyPoint((blockIdX-1)+1,(blockIdY-1),(blockIdZ-1));
yvec=new MyPoint((blockIdX-1),(blockIdY-1)+1 ,(blockIdZ-1));
zvec=new MyPoint((blockIdX-1),(blockIdY-1),(blockIdZ-1)+1 );
//System.out.println("軸點:"+(zoux)+(zouy)+(zouz));
//System.out.println("軸向量:"+(zoux-(x-1))+(zouy-(y-1))+(zouz-(z-1)));

        observer=obServer1;

        //anglex=0 ;
        //angley=0 ;
        //anglez=0 ;

        trans=new Transform3D();
        transGroup=new TransformGroup(trans);
        transGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
        transGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
        transGroup.setCapability(TransformGroup.ENABLE_PICK_REPORTING);

        transp=new Transform3D();
        transGroupp=new TransformGroup(transp);
        transGroupp.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
        transGroupp.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
        //transGroupp.setCapability(TransformGroup.ENABLE_PICK_REPORTING);

        transx=new Transform3D();
        transGroupx=new TransformGroup(transx);
        transGroupx.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
        transGroupx.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
        //transGroupx.setCapability(TransformGroup.ENABLE_PICK_REPORTING);

        transy=new Transform3D();
        transGroupy=new TransformGroup(transy);
        transGroupy.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
        transGroupy.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
        //transGroupy.setCapability(TransformGroup.ENABLE_PICK_REPORTING);
        transz=new Transform3D();
        transGroupz=new TransformGroup(transz);
        transGroupz.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
        transGroupz.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
        //transGroupz.setCapability(TransformGroup.ENABLE_PICK_REPORTING);
        //用已知信息組裝變換組,,
        //注意這里的順序,先平移,再旋轉(zhuǎn),或先x,先y的順序是不一樣的,這里
        //必須是先在原位置自轉(zhuǎn)好方向,再平移,這樣,平移不會改變它的自轉(zhuǎn)方向,
        //如果先平移,再轉(zhuǎn),轉(zhuǎn)動會帶動平移,剛才的平移無任何意義。
        //還要注意是先繞x轉(zhuǎn),再繞y轉(zhuǎn),再繞z轉(zhuǎn)
        //換了順序,是不一樣的,例如x,y,z和z,y,x的結(jié)果不一樣
        //但是,可以證明x,y和y,x的順序無關(guān)性,當(dāng)都只左轉(zhuǎn)或右轉(zhuǎn)90度時,很容易證明
        //如果有180度,可以分成兩次90度操作
        parentTransGroup.addChild(transGroupp);
        transGroupp.addChild(transGroupz);
        transGroupz.addChild(transGroupy);
        transGroupy.addChild(transGroupx);
        transGroupx.addChild(transGroup);
        // 測試,直接加到根,沒有鼠標(biāo)功能
        //objRoot.addChild(transGroup);
        //System.out.println("\n\n\n處理第"+BlockCreated+"塊");
        //System.out.println("塊"+(blockIdX-1)+(blockIdY-1)+(blockIdZ-1)+"的坐標(biāo)系添加完成");
        BlockCreated++;
        //if (BlockCreated==14)//||BlockCreated==3//||BlockCreated==2||BlockCreated==20||BlockCreated==16
        add3DCube(x-1,y-1,z-1,transGroup);
        //建小坐標(biāo)軸
        SomeShape3D.zuoBiaoZhuSmallXShape3D(transGroup);
        SomeShape3D.zuoBiaoZhuSmallYShape3D(transGroup);
        SomeShape3D.zuoBiaoZhuSmallZShape3D(transGroup);
        //測試主變換組的平移
        //Shape3D shape1=SomeShape3D.FlowerShape3D();
        //parentTransGroup.addChild(shape1);
        //t3d.setTranslation(new Vector3f(0.0f,1.0f,0.0f));
        //parentTransGroup.setTransform(t3d);
        //測試子變換組的平移(不行,不起作用)
        //Shape3D shape2=SomeShape3D.SanShape3D();
        //transGroup.addChild(shape2);
        //trans.setTranslation(new Vector3f(0.0f,-1f,0.0f));
        //transGroup.setTransform(t3d);
        //創(chuàng)建鼠標(biāo)行為
        //MouseRotate behavior1=new MouseRotate();
        //behavior1.setTransformGroup(transGroup);
        //behavior1.setSchedulingBounds(new BoundingSphere(new Point3d(0.0,0.0,0.0),100));
        //objRoot.addChild(behavior1);//鼠標(biāo)行為  加到 分枝組
        //設(shè)置初始值,顯示輸出
        float fx ;
        float fy ;
        float fz ;
        fx=(float)kuaiZhongXinWeizhi*(x-1);
        fy=(float)kuaiZhongXinWeizhi*(y-1);
        fz=(float)kuaiZhongXinWeizhi*(z-1);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区欧美二区| 久久精品国产色蜜蜜麻豆| 日产欧产美韩系列久久99| 大胆亚洲人体视频| 5566中文字幕一区二区电影| 中文字幕av一区二区三区高| 免费在线观看不卡| 91成人在线免费观看| 久久久久成人黄色影片| 丝袜诱惑制服诱惑色一区在线观看| 国产成人在线色| 欧美一级午夜免费电影| 亚洲一区二区高清| 色综合天天综合狠狠| 国产午夜久久久久| 国模娜娜一区二区三区| 欧美高清视频一二三区| 亚洲一区二区三区小说| 色综合欧美在线| 自拍偷拍国产亚洲| www.色精品| 国产精品入口麻豆九色| 九色综合狠狠综合久久| 678五月天丁香亚洲综合网| 亚洲电影一区二区| 在线看日本不卡| 一区二区在线免费观看| 色综合色综合色综合| 亚洲免费在线视频| 欧美在线999| 亚洲一区在线播放| 在线观看成人小视频| 亚洲图片欧美视频| 欧美日韩综合在线| 日日噜噜夜夜狠狠视频欧美人 | 日日摸夜夜添夜夜添国产精品| 色婷婷久久久亚洲一区二区三区| 亚洲视频网在线直播| 欧洲精品中文字幕| 亚州成人在线电影| 日韩欧美aaaaaa| 国产精一区二区三区| 欧美国产亚洲另类动漫| 99精品偷自拍| 丝袜美腿亚洲综合| xvideos.蜜桃一区二区| 国产成a人亚洲| 另类综合日韩欧美亚洲| 久久天堂av综合合色蜜桃网| 国产一区二区调教| 国产精品不卡在线观看| 在线亚洲精品福利网址导航| 无码av中文一区二区三区桃花岛| 精品人在线二区三区| 成人小视频在线| 亚洲综合在线第一页| 日韩欧美在线影院| 国产福利精品导航| 亚洲香肠在线观看| 欧美xxxx老人做受| 日本精品裸体写真集在线观看| 青青国产91久久久久久| 国产亚洲精品久| 欧美日韩视频在线第一区| 久久99热狠狠色一区二区| 亚洲欧美中日韩| 91精品国产91久久久久久一区二区| 国产一区二区三区在线观看免费 | 日韩免费视频一区| 成人av免费在线| 天天操天天色综合| 国产精品丝袜一区| 91精品国产品国语在线不卡| 国产黄色91视频| 日韩国产高清影视| 1024成人网| 2020国产精品自拍| 欧美专区日韩专区| 国产宾馆实践打屁股91| 日韩在线观看一区二区| 日韩毛片精品高清免费| 精品成a人在线观看| 欧美伊人精品成人久久综合97| 国产伦精一区二区三区| 丝袜脚交一区二区| 亚洲精品中文字幕在线观看| 亚洲精品一线二线三线无人区| 日本韩国欧美一区二区三区| 国产精品影视在线| 久久99精品国产麻豆婷婷| 亚洲动漫第一页| 亚洲美女少妇撒尿| 国产精品国产成人国产三级| 精品成人一区二区三区| 欧美疯狂做受xxxx富婆| 在线亚洲高清视频| 色域天天综合网| 北岛玲一区二区三区四区| 国产一区啦啦啦在线观看| 日韩av一级电影| 日日欢夜夜爽一区| 亚洲成人av中文| 亚洲一区二区三区中文字幕| 亚洲色图色小说| 国产精品毛片高清在线完整版| 2020国产成人综合网| 日韩欧美一级特黄在线播放| 欧美精品一卡二卡| 在线成人免费视频| 777精品伊人久久久久大香线蕉| 91福利在线免费观看| 91成人国产精品| 日本道在线观看一区二区| 在线免费不卡视频| 欧美吞精做爰啪啪高潮| 欧美视频在线观看一区二区| 欧亚洲嫩模精品一区三区| 在线观看网站黄不卡| 欧美色网一区二区| 678五月天丁香亚洲综合网| 欧美一区二区二区| 久久综合精品国产一区二区三区| 2021国产精品久久精品| 国产日韩欧美麻豆| 中文字幕一区二区三区av| 亚洲激情在线激情| 亚洲国产美女搞黄色| 日韩黄色免费电影| 国产一区二区电影| 99热国产精品| 欧美精品自拍偷拍| 精品成人在线观看| 亚洲婷婷在线视频| 亚洲在线一区二区三区| 日韩精品一级中文字幕精品视频免费观看| 三级不卡在线观看| 国产成人鲁色资源国产91色综| 99精品久久只有精品| 欧美色综合影院| 久久天堂av综合合色蜜桃网| 国产精品美女久久久久高潮| 玉米视频成人免费看| 日本vs亚洲vs韩国一区三区二区| 国内精品伊人久久久久av影院 | 一区二区三区四区蜜桃| 日本免费在线视频不卡一不卡二| 国产在线精品一区二区| 色综合天天视频在线观看| 宅男噜噜噜66一区二区66| 久久久一区二区三区| 亚洲香肠在线观看| 国产成人午夜99999| 欧美午夜精品免费| 久久精品一区四区| 亚洲一区二区三区视频在线| 激情综合亚洲精品| 欧美性色综合网| 国产香蕉久久精品综合网| 亚洲bt欧美bt精品| 不卡一区二区三区四区| 欧美一级二级三级蜜桃| 亚洲日本免费电影| 精品午夜久久福利影院| 91福利社在线观看| 亚洲国产经典视频| 日本va欧美va精品| 色婷婷综合久色| 久久网站最新地址| 五月激情六月综合| 99re热视频这里只精品| 久久综合九色综合欧美98| 午夜精品免费在线| 色综合色狠狠综合色| 久久品道一品道久久精品| 亚洲国产欧美日韩另类综合| 成人黄色大片在线观看| 久久综合中文字幕| 全部av―极品视觉盛宴亚洲| 色综合色狠狠天天综合色| 国产精品欧美经典| 国产成人鲁色资源国产91色综 | 欧美色倩网站大全免费| 亚洲欧美影音先锋| 国产不卡免费视频| 精品久久久久久无| 青青青伊人色综合久久| 欧美日韩你懂的| 亚洲国产成人av| 欧美四级电影在线观看| 亚洲激情图片qvod| 不卡视频在线看| 成人欧美一区二区三区1314| 成人免费毛片嘿嘿连载视频| 欧美精品一区二区三区一线天视频| 日产国产高清一区二区三区| 欧美日韩精品三区| 日韩av高清在线观看| 欧美肥大bbwbbw高潮| 日韩精品1区2区3区| 日韩视频免费直播|