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

📄 web3dpanel.java

📁 VRML Solar system, with java slider
💻 JAVA
字号:
package web3d;import shout3d.*;import shout3d.core.*;import java.util.*;public class Web3DPanel extends Shout3DPanel{  public float speed = 100; //pocetna brzina - slider na sredini  /**   * Konstruktor koji kreira panel velicine cijelog appleta.   * U ovoj metodi ne treba nista mijenjati.   *   * @param applet   */  public Web3DPanel (Shout3DApplet applet){     super(applet);  }  /**   * Konstruktor koji kreira panel velicine width x height.   * U ovoj metodi ne treba nista mijenjati.   *   * @param applet   * @param width   * @param height   */  public Web3DPanel (Shout3DApplet applet, int width, int height){    super(applet,width, height);  }  /**   * Metoda koja se zove odmah posto je ucitana scena.   */  public void customInitialize() {    /*****************     Ovo je metoda u kojoj treba ostvariti animaciju planeta. Da biste to mogli,     prvi je korak dobiti referencu na cvorove scene. Koristite metodu getNodeByName().     Tim cvorovima mozete lako mijenjati polozaj i rotaciju.     Primjerice:     Transform SuncevSustav=(Transform)getNodeByName("SuncevSustav");     SuncevSustav.rotation.setValueByString("1.0 0.0 0.0 1.57");     Ako cete za rotaciju koristiti klase Timer i TimerTask, potrebno je instancirati     timer i metodom schedule() dodati mu novi objekt klase TimerTask. Buduci je TimerTask apstraktna     klasa, potrebno ju je ili a) naslijediti i definirati bitnu metodu run();                               b) instancirati anonimnu klasu (lakse ali manje elegantno rijesenje).     ****************/     int framesPerSecond_Period = 50; // svakih 50 milisekundi jedna slika, 1000ms/50ms -> 20slika/s     Timer timer = new Timer(true);     timer.schedule(new TimerTask() {       Transform ZemljinSustav = (Transform)getNodeByName("ZemljinSustav"); // referenca na cvor Transform ZemljinSustav       Transform SuncevSustav=(Transform)getNodeByName("SuncevSustav"); // referenca na cvor Transform SuncevSustav       float earthRotation = 0;       float moonRotation = 0;       public void run() {         moonRotation += 2* Math.PI*(speed/100) / 92.2; //20sl./s*4.61s=92.2 slike, 2PI/92.2 - zemljinsustav         earthRotation +=  2* Math.PI*(speed/100) / 1200;  //20 sl.*60s=1200 sl./min, 2PI/1200 - suncevsustav         ZemljinSustav.rotation.setValueByString("0.0 1.0 0.0 " + moonRotation);         //mjesec bi trebao nakon 4.61s napraviti puni krug(2*PI) oko zemlje         //tj. svakih 50ms zarotirati se oko zemlje za 2PI/92.2         SuncevSustav.rotation.setValueByString("0.0 1.0 0.0 " + earthRotation);         //zemlja bi trebala nakon 60 sekundi napraviti puni krug(2*PI) oko sunca          //tj. svakih 50ms tarotirati se za 2PI/1200=2PI/(20*60) oko sunca         }       }, 0,  framesPerSecond_Period);  }}

⌨️ 快捷键说明

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