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

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

?? java3dworld1.java

?? java的一些教程 大家看看,很有用的
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
// Class Java3DWorld1 is a Java 3D game.
// The goal is to navigate the small red ball in the bottom right 
// corner to the screen's top-left corner without colliding with 
// any of the flying objects. The user can specify the number of 
// flying objects to make the game more difficult.
package com.deitel.advjhtp1.java3dgame;

// Java core packages
import java.awt.*;
import java.net.*;
import java.util.BitSet;

// Java extension packages
import javax.media.j3d.*;
import javax.vecmath.*;

// Java3D utility packages
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.image.*;
import com.sun.j3d.utils.universe.*;

public class Java3DWorld1 extends Canvas3D {
    
   // container dimensions
   private static final int CONTAINER_WIDTH = 600;
   private static final int CONTAINER_HEIGHT = 600;
      
   // constants that specify number of shapes
   private static final int NUMBER_OF_SHAPES = 20;
   private static final int NUMBER_OF_PRIMITIVES = 4;
   
   // initial scene to display in Switch
   private static final int DEFAULT_SCENE = 0;
   
   // constants for animating rotation
   private static final int MAX_ROTATION_SPEED = 25000;
   private static final int MIN_ROTATION_SPEED = 20000;
   private static final float MIN_ROTATION_ANGLE = 0.0f;
   private static final float MAX_ROTATION_ANGLE = 
      ( float ) Math.PI * 8.0f;
   
   // constants for animating translation
   private static final int MAX_TRANSLATION_SPEED = 7500; 
   private static final int MIN_TRANSLATION_SPEED = 2500;
   
   // maximum time until animations begins
   public static final int MAX_PHASE_DELAY = 20000;
   
   // 3D shape information
   private static final float MAX_RADIUS = 0.15f;
   private static final float MAX_LENGTH = 0.2f;
   private static final float MAX_SHININESS = 128.0f;
   private static final float SPHERE_RADIUS = 0.15f;
   private static final float BOUNDING_RADIUS = 100.0f;
   
   private Switch shapeSwitch; // contains flying shapes
   private BoundingSphere bounds; // bounds for nodes and groups
   
   private SimpleUniverse simpleUniverse; // 3D environment
     
   private String imageName; // texture image file name
   
   // Java3DWorld1 constructor
   public Java3DWorld1( String imageFileName ) {
             
      super( SimpleUniverse.getPreferredConfiguration() );
      
      imageName = imageFileName;
      
      // create SimpleUniverse ( 3D Graphics environment )
      simpleUniverse = new SimpleUniverse( this );
      
      // set viewing distance for 3D scene
      ViewingPlatform viewPlatform = 
         simpleUniverse.getViewingPlatform();
         
      viewPlatform.setNominalViewingTransform();
      
      // create 3D scene 
      BranchGroup branchGroup = createScene();
      
      // attach BranchGroup to SimpleUniverse
      simpleUniverse.addBranchGraph( branchGroup );
   
   } // end Java3DWorld1 constructor    

   // create 3D scene
   public BranchGroup createScene() 
   {
      BranchGroup sceneBranchGroup = new BranchGroup();
      
      // create scene Switch group 
      Switch sceneSwitch = initializeSwitch( DEFAULT_SCENE );
      
      // create Switch group containing shapes
      shapeSwitch = initializeSwitch( DEFAULT_SCENE );
      
      // initialize BranchGroup that contains only elements
      // in game scene 
      BranchGroup gameBranchGroup = new BranchGroup();
      
      // add shapeSwitch to gameBranchGroup
      gameBranchGroup.addChild( shapeSwitch ); 
      
      // add gameBranchGroup to sceneSwitch
      sceneSwitch.addChild( gameBranchGroup );
      
      // add sceneSwitch to sceneBranchGroup
      sceneBranchGroup.addChild( sceneSwitch );
      
      // create BoundingSphere for 3D objects and behaviors
      bounds = new BoundingSphere(
         new Point3d( 0.0f, 0.0f, 0.0f ), BOUNDING_RADIUS );
               
      // create rotation TransformGroup array
      TransformGroup[] spinTransform = 
         createTransformGroupArray( NUMBER_OF_SHAPES );
      
      // create translation TransformGroup array
      TransformGroup[] pathTransform = 
         createTransformGroupArray( NUMBER_OF_SHAPES );
      
      // create RotationInterpolators
      createRotationInterpolators( spinTransform, 
         NUMBER_OF_SHAPES );
      
      // create PositonInterpolators
      createPositionInterpolators( pathTransform, 
         NUMBER_OF_SHAPES );
                
      // create Appearance objects for Primitives
      Appearance[] shapeAppearance = 
         createAppearance( NUMBER_OF_SHAPES );
      
      // create shapes
      Primitive[] shapes = 
         createShapes( shapeAppearance, NUMBER_OF_SHAPES ); 
      
      // add shapes to scene structure
      for ( int x = 0; x < NUMBER_OF_SHAPES; x++ ) {
         
         // add primitive to spinTransform group
         spinTransform[ x ].addChild( shapes[ x ] );
         
         // add spinTransform group to pathTransform group
         pathTransform[ x ].addChild( spinTransform[ x ] );
      
         // add pathTransform group to shapeSwitch group
         shapeSwitch.addChild( pathTransform[ x ] );
      }
            
      // create and set scene lighting
      setLighting( sceneBranchGroup, bounds );  
      
      // create scene to display if user loses
      TransformGroup loserTransformGroup = 
         createEndScene( "You Lose!" );
      
      // add loser scene to sceneSwitch
      sceneSwitch.addChild( loserTransformGroup );  
      
      // create scene to display if user winss
      TransformGroup winnerTransformGroup = 
         createEndScene( "You Win!" );
      
      // add winner scene to sceneSwitch
      sceneSwitch.addChild( winnerTransformGroup ); 
      
      // create shiny red Appearance for navigating shape
      Appearance flyingAppearance = createAppearance( 
         new Color3f( 1.0f, 0.0f, 0.0f ) );
      
      // initialize navigable sphere 
      Primitive flyingBall = new Sphere( 
         0.03f,  Sphere.GENERATE_NORMALS, flyingAppearance );
      
      // set capability bits to enable collision detection and 
      // allow for read/write of bounds
      flyingBall.setCollidable( true );
        flyingBall.setCapability( Node.ENABLE_COLLISION_REPORTING );
      flyingBall.setCapability( Node.ALLOW_BOUNDS_READ );
      flyingBall.setCapability( Node.ALLOW_BOUNDS_WRITE );
      
      // create TransformGroup to translate shape position
      TransformGroup startTransform = createTransform( 
         new Vector3f( 0.9f, -0.9f, 0.0f ) );
           
      startTransform.addChild( flyingBall );
      gameBranchGroup.addChild( startTransform );
       
      // create Material for Appearance for target sphere
      Appearance targetAppearance = createAppearance(
         new Color3f( 0.0f, 1.0f, 0.0f ) );
      
      // obtain textured image for target sphere
      String rgb = new String( "RGB" );
      TextureLoader textureLoader = new TextureLoader( 
         Java3DWorld1.class.getResource( imageName ), rgb, this );
      textureLoader.getTexture().setEnable( true );
      targetAppearance.setTexture( textureLoader.getTexture() );
      
      // initialize target sphere
      Primitive targetSphere = new Sphere( SPHERE_RADIUS, 
         Sphere.GENERATE_TEXTURE_COORDS | Sphere.GENERATE_NORMALS, 
         targetAppearance );
      
      // disable collision detection for sphere
      targetSphere.setCollidable( false );
           
      // create vector to target point
      Vector3f target = new Vector3f( -1.0f, 1.0f, -1.0f );
      
      // create TransformGroup that translates sphere position
      TransformGroup targetTransform = createTransform( target );
      targetTransform.addChild( targetSphere );
      gameBranchGroup.addChild( targetTransform );
            
      // create Navigator behavior
      Navigator navigator = new Navigator( startTransform );
      navigator.setSchedulingBounds( bounds );
      
      // create Collide behavior
      Collide collider = new Collide(  
         simpleUniverse, flyingBall, sceneSwitch );
      collider.setSchedulingBounds( bounds );
      
      // create GoalDetector behavior
      GoalDetector goalDetector = new GoalDetector( 
         simpleUniverse, startTransform, sceneSwitch, 
         target, SPHERE_RADIUS );
      goalDetector.setSchedulingBounds( bounds );
      
      // add Behaviors to scene
      sceneBranchGroup.addChild( goalDetector );
      sceneBranchGroup.addChild( collider );
      sceneBranchGroup.addChild( navigator );
      
      // create Background for scene
      Background background = new Background();
      background.setColor( 0.65f, 0.75f, 1.0f );
      background.setApplicationBounds( bounds );
      sceneBranchGroup.addChild( background );
      
      sceneBranchGroup.compile(); 
      
      return sceneBranchGroup;
   
   } // end method createScene
   
   // create Appearance object for Primitive in scene
   private Appearance createAppearance( Color3f diffuseColor )
   {
      Appearance appearance = new Appearance();
      Material material = new Material();
      material.setShininess( MAX_SHININESS );
      material.setDiffuseColor( diffuseColor );
      material.setAmbientColor( 0.0f, 0.0f, 0.0f );
      appearance.setMaterial( material );
      return appearance;
   
   } // end method createAppearance
      
   
   // create TransformGroup for placing an object in scene
   private TransformGroup createTransform( 
      Vector3f positionVector )
   {
      // initialize a TransformGroup and set capability bits
      TransformGroup transformGroup = new TransformGroup();
      transformGroup.setCapability( 
         TransformGroup.ALLOW_TRANSFORM_READ );
      transformGroup.setCapability( 
         TransformGroup.ALLOW_TRANSFORM_WRITE );
      
      // translate starting position to bottom right of scene
      Transform3D location = new Transform3D();
      location.setTranslation( positionVector );
      transformGroup.setTransform( location );
   
      return transformGroup;
      
   } // end method createTransform
   
   // initialize Switch group and set capability bits
   private Switch initializeSwitch( int sceneNumber )
   {
      Switch switchGroup = new Switch( sceneNumber );
      switchGroup.setCollidable( true );
      switchGroup.setCapability( Switch.ALLOW_SWITCH_WRITE );
      switchGroup.setCapability( Switch.ALLOW_SWITCH_READ );
      switchGroup.setCapability( Group.ALLOW_CHILDREN_WRITE );
      switchGroup.setCapability( Group.ALLOW_CHILDREN_READ );
      switchGroup.setCapability( 
         Group.ENABLE_COLLISION_REPORTING );
      return switchGroup;
   
   } // end method initializeSwitch
   
   private TransformGroup[] createTransformGroupArray( 
      int size )
   {
      TransformGroup[] transformGroup = 
         new TransformGroup[ size ];
      
      // set TransformGroup's WRITE and READ permissions
      // and enable collision reporting
      for ( int i = 0; i < size; i++ ) {
         
         // create TransformGroups
         transformGroup[ i ] = new TransformGroup();
        
         // enable collision reporting
         transformGroup[ i ].setCapability(
            Group.ENABLE_COLLISION_REPORTING );
         
         // enable WRITE permission
         transformGroup[ i ].setCapability(
            TransformGroup.ALLOW_TRANSFORM_WRITE );
         
         // enable READ permission
         transformGroup[ i ].setCapability( 
            TransformGroup.ALLOW_TRANSFORM_READ );
      }
      
      return transformGroup;
      
   } // end method createTransformGroupArray

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲美州欧州综合国| 视频一区视频二区中文| 亚洲国产日韩综合久久精品| 欧美a一区二区| 在线视频一区二区三区| 亚洲精品一区二区三区影院| 亚洲精品视频在线看| 国产福利一区二区| 日韩欧美在线123| 亚洲影院免费观看| 成人国产精品免费观看动漫| 中文字幕的久久| 久久综合综合久久综合| 欧美色偷偷大香| 一区二区三区欧美视频| www.性欧美| 亚洲国产电影在线观看| 国产呦萝稀缺另类资源| 3751色影院一区二区三区| 亚洲午夜一区二区| 日本韩国一区二区| 成人欧美一区二区三区小说| 国产91对白在线观看九色| 精品国产免费一区二区三区香蕉| 亚洲成人第一页| 欧美在线不卡一区| 亚洲一区二区在线播放相泽| 97久久超碰国产精品| 国产精品国产三级国产普通话三级| 韩国女主播一区二区三区| 精品美女一区二区| 国产综合成人久久大片91| 欧美成人精品1314www| 黄一区二区三区| 久久久久综合网| 国产 日韩 欧美大片| 日本一二三不卡| 91在线无精精品入口| 一区二区三区蜜桃| 欧美日韩第一区日日骚| 爽爽淫人综合网网站| 91精品国产免费| 久草中文综合在线| 久久精品人人做人人综合 | 国产在线视频不卡二| 欧美不卡一区二区| 国产乱国产乱300精品| 国产目拍亚洲精品99久久精品| 国产成人免费av在线| 综合网在线视频| 欧美色男人天堂| 白白色 亚洲乱淫| 一区二区三区精品久久久| 7777精品伊人久久久大香线蕉经典版下载 | hitomi一区二区三区精品| 国产欧美精品一区| 色丁香久综合在线久综合在线观看| 亚洲精品第1页| 日韩亚洲国产中文字幕欧美| 国产精品一区二区黑丝| 成人免费在线观看入口| 欧美日韩aaa| 韩国v欧美v亚洲v日本v| 亚洲乱码中文字幕| 欧美一卡2卡3卡4卡| 国产69精品一区二区亚洲孕妇 | 日本亚洲免费观看| 国产亚洲欧美一区在线观看| 色综合一个色综合亚洲| 伦理电影国产精品| 亚洲少妇屁股交4| 91精品国产色综合久久不卡电影| 国产成人av一区二区三区在线观看| 中文字幕一区不卡| 91精品欧美久久久久久动漫| 成人av午夜影院| 美女一区二区视频| 亚洲日本va在线观看| 日韩精品综合一本久道在线视频| 99re免费视频精品全部| 久久99久久99精品免视看婷婷| 亚洲图片你懂的| 精品噜噜噜噜久久久久久久久试看 | 国产精品欧美一级免费| 欧美日韩在线电影| 成人av网址在线| 激情成人综合网| 青椒成人免费视频| 亚洲精品乱码久久久久久久久 | 久久久久久久久99精品| 欧美喷潮久久久xxxxx| av中文字幕一区| 国产精品2024| 麻豆精品在线视频| 亚洲第一在线综合网站| 亚洲视频香蕉人妖| 日本一区二区三区高清不卡| 日韩一区二区三区四区| 色狠狠一区二区| 97成人超碰视| 成人高清免费观看| 成人综合婷婷国产精品久久免费| 日韩综合在线视频| 亚洲国产日日夜夜| 亚洲日本va午夜在线影院| 欧美国产亚洲另类动漫| 精品国产露脸精彩对白| 欧美一级艳片视频免费观看| 欧美视频精品在线观看| 在线免费一区三区| 97se亚洲国产综合自在线不卡| aaa亚洲精品| 91在线无精精品入口| 99久久久久久99| 91视频免费观看| 日本精品一区二区三区高清 | 欧美一区二区精美| 88在线观看91蜜桃国自产| 欧美性色综合网| 欧美三级资源在线| 欧美日韩精品二区第二页| 欧美欧美欧美欧美| 欧美一区永久视频免费观看| 欧美日韩一区二区在线视频| 7777精品伊人久久久大香线蕉完整版 | 国产91丝袜在线观看| 国产精品亚洲第一| 不卡一区二区三区四区| 99精品视频免费在线观看| 成人avav在线| 欧美亚洲另类激情小说| 欧美另类高清zo欧美| 日韩一卡二卡三卡国产欧美| 日韩一级大片在线观看| 久久久久久久久久久黄色| 国产精品久久久久婷婷| 亚洲日本电影在线| 日韩不卡免费视频| 国产美女精品人人做人人爽| 岛国精品在线观看| 色偷偷久久一区二区三区| 欧美另类z0zxhd电影| 日韩美女主播在线视频一区二区三区 | 中文字幕在线免费不卡| 亚洲电影一区二区三区| 美日韩黄色大片| 国产精品一区二区三区99| 在线亚洲人成电影网站色www| 欧美日韩激情一区| 久久人人爽爽爽人久久久| 国产精品对白交换视频| 婷婷成人激情在线网| 国产精品一二三| 欧美性淫爽ww久久久久无| 久久九九国产精品| 亚洲美女免费在线| 久久精品72免费观看| 99精品视频一区二区三区| 欧美放荡的少妇| 国产精品美女www爽爽爽| 日韩精品午夜视频| 国产91精品免费| 欧美精品18+| 亚洲欧洲无码一区二区三区| 免费在线观看精品| 色综合一个色综合| 国产亚洲欧美激情| 午夜激情一区二区三区| 国产jizzjizz一区二区| 欧美日韩黄色一区二区| 国产精品久久久久久久久久免费看 | 一区二区三区在线看| 激情综合色综合久久| 欧美日韩一卡二卡三卡| 国产精品二区一区二区aⅴ污介绍| 青娱乐精品视频| 色视频成人在线观看免| 亚洲自拍偷拍av| 99精品桃花视频在线观看| 精品少妇一区二区三区| 亚洲综合一二三区| jvid福利写真一区二区三区| www久久精品| 日韩电影在线一区二区三区| 色呦呦网站一区| 国产精品免费视频观看| 国产精一品亚洲二区在线视频| 4438x成人网最大色成网站| 亚洲最新视频在线播放| 99国产精品国产精品毛片| 精品久久久久香蕉网| 蜜桃久久久久久久| 欧美日韩夫妻久久| 午夜免费久久看| 欧美图片一区二区三区| 亚洲综合在线免费观看| 欧美在线啊v一区| 亚洲综合男人的天堂| 色综合久久精品| 亚洲免费视频成人|