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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天堂av在线一区| 狂野欧美性猛交blacked| 久久综合999| 日韩欧美高清一区| 欧美大黄免费观看| 精品国产一区二区亚洲人成毛片 | 粉嫩高潮美女一区二区三区 | 人人爽香蕉精品| 久久电影网站中文字幕| 国产在线精品一区二区不卡了| 狠狠色狠狠色综合| 成人动漫一区二区| 91国偷自产一区二区开放时间| 在线视频国内自拍亚洲视频| 欧美日韩亚洲国产综合| 91精品久久久久久蜜臀| 精品久久国产字幕高潮| 日本一区二区三区电影| 亚洲精品ww久久久久久p站| 亚洲国产一二三| 狠狠色丁香婷婷综合久久片| 99麻豆久久久国产精品免费| 91福利国产精品| 日韩一区和二区| 中文字幕 久热精品 视频在线 | 久久久久久久久久看片| 国产精品大尺度| 亚欧色一区w666天堂| 久久国产精品区| 97超碰欧美中文字幕| 欧美丰满美乳xxx高潮www| 久久久www成人免费无遮挡大片| 亚洲青青青在线视频| 青娱乐精品在线视频| 成人黄色在线网站| 日韩一区二区三区视频在线观看| 国产欧美日韩精品a在线观看| 夜夜亚洲天天久久| 国产精品一区二区久久精品爱涩| 色综合中文字幕国产| 日韩一区二区高清| 亚洲免费电影在线| 国产成人av网站| 欧美一区二视频| 亚洲视频在线观看一区| 寂寞少妇一区二区三区| 欧美亚洲国产一区在线观看网站| 久久久久久久久久久黄色| 亚洲一区国产视频| 99re这里只有精品6| www激情久久| 天天亚洲美女在线视频| 91蜜桃免费观看视频| 久久九九影视网| 国模套图日韩精品一区二区| 在线综合+亚洲+欧美中文字幕| 国产精品久久久久天堂| 国产精品一品视频| 欧美精品一区在线观看| 石原莉奈在线亚洲二区| 在线精品视频一区二区| 亚洲激情中文1区| 99精品视频在线观看| 久久精品亚洲精品国产欧美| 另类小说图片综合网| 日韩欧美国产三级| 日产国产欧美视频一区精品| 欧美放荡的少妇| 五月天国产精品| 欧美精品一卡二卡| 爽好久久久欧美精品| 欧美高清视频一二三区 | 久久久青草青青国产亚洲免观| 美日韩黄色大片| 日韩欧美国产综合一区 | 国产精品1区2区| 欧美精品一区二| 福利视频网站一区二区三区| 国产亚洲一区二区三区| 9久草视频在线视频精品| 亚洲精品久久嫩草网站秘色| 色婷婷av一区二区三区之一色屋| 亚洲欧洲另类国产综合| 91黄视频在线观看| 亚洲第一搞黄网站| 精品国产一区二区三区久久影院| 国产一区二区在线免费观看| 久久久久久久久久久久久女国产乱| 国产精品资源网站| 国产精品久久久久久久蜜臀 | 久久久国产一区二区三区四区小说| 韩国理伦片一区二区三区在线播放| 2020国产精品| 91亚洲大成网污www| 亚洲高清视频在线| 精品国产乱码久久久久久图片| 国产精品一区二区在线观看不卡| 国产精品第13页| 欧美一区二区在线看| 国产不卡视频在线观看| 一区二区三区欧美| 日韩精品在线网站| 色域天天综合网| 日本不卡高清视频| 综合久久国产九一剧情麻豆| 欧美精品v日韩精品v韩国精品v| 国产精品一区二区三区99| 亚洲三级小视频| www久久精品| 欧美视频日韩视频在线观看| 国产精品一区二区黑丝| 亚洲综合在线电影| 久久夜色精品一区| 欧美区在线观看| 波多野结衣中文字幕一区二区三区 | 91精品国产手机| av在线不卡电影| 美女视频网站黄色亚洲| 亚洲婷婷综合色高清在线| 欧美一区二区三区啪啪| 91丨九色丨蝌蚪富婆spa| 六月丁香综合在线视频| 亚洲一区二区三区美女| 欧美国产日韩亚洲一区| 日韩精品一区二| 欧美三级电影在线观看| 丰满少妇久久久久久久| 久久er99精品| 日本女人一区二区三区| 亚洲一线二线三线视频| 国产精品久久久久婷婷二区次| 精品免费99久久| 69堂国产成人免费视频| 在线精品亚洲一区二区不卡| 成人免费观看视频| 高清在线观看日韩| 看电影不卡的网站| 日韩在线一区二区三区| 无码av中文一区二区三区桃花岛| 国产精品国产三级国产三级人妇 | 国产激情91久久精品导航| 五月综合激情网| 亚洲va天堂va国产va久| 一个色综合av| 亚洲午夜精品久久久久久久久| 亚洲另类色综合网站| 亚洲视频网在线直播| 中文字幕一区在线观看| 国产精品久久一卡二卡| 欧美国产精品v| 日本一区免费视频| 亚洲天堂免费在线观看视频| 亚洲日本va在线观看| 亚洲免费资源在线播放| 亚洲精品日日夜夜| 亚洲综合久久久久| 日日摸夜夜添夜夜添国产精品 | 日韩三级免费观看| 日韩午夜三级在线| 久久久不卡网国产精品二区| 亚洲国产电影在线观看| 综合欧美亚洲日本| 亚洲成人自拍偷拍| 日韩精品免费专区| 久久不见久久见中文字幕免费| 激情综合色综合久久综合| 国产精品自拍一区| 色视频欧美一区二区三区| 欧美色精品天天在线观看视频| 91精品久久久久久蜜臀| 久久久蜜臀国产一区二区| 亚洲天堂久久久久久久| 三级影片在线观看欧美日韩一区二区| 五月婷婷综合激情| 精品一区二区免费| yourporn久久国产精品| 欧美嫩在线观看| 精品福利在线导航| 亚洲色图丝袜美腿| 日本欧美一区二区| 成人不卡免费av| 欧美日韩国产一级| 久久嫩草精品久久久久| 亚洲综合在线视频| 国产精品一区免费视频| 欧美色成人综合| 亚洲国产精品二十页| 亚洲成人先锋电影| 国产成人一区在线| 欧美日韩免费视频| 久久精品视频在线免费观看| 一区二区三区精品久久久| 国产主播一区二区| 欧洲精品在线观看| 国产欧美日产一区| 日韩精品91亚洲二区在线观看| 国产iv一区二区三区| 欧美一区二区视频在线观看 | 欧美美女网站色| 中文字幕免费在线观看视频一区|