Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR ha finalmente lanciato il suo nuovo flagship: Magic 8 Pro. Lo abbiamo provato a fondo in queste settimane e ve lo raccontiamo nella nostra recensione completa. HONOR rimane fedele alle linee della versione precedente, aggiungendo però un nuovo tasto dedicato all'AI. Ma è al suo interno che c'è la vera rivoluzione grazie al nuovo Snapdragon 8 Elite Gen 5 e alla nuova MagicOS 10
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata
Le webcam Insta360 Link 2 Pro e Link 2C Pro sono una proposta di fascia alta per chi cerca qualità 4K e tracciamento automatico del soggetto senza ricorrere a configurazioni complesse. Entrambi i modelli condividono sensore, ottiche e funzionalità audio avanzate, differenziandosi per il sistema di tracciamento: gimbal a due assi sul modello Link 2 Pro, soluzione digitale sul 2C Pro
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70 porta il concetto di smartphone ultrasottile su un terreno più concreto e accessibile: abbina uno spessore sotto i 6 mm a una batteria di capacità relativamente elevata, un display pOLED da 6,7 pollici e un comparto fotografico triplo da 50 MP. Non punta ai record di potenza, ma si configura come alternativa più pragmatica rispetto ai modelli sottili più costosi di Samsung e Apple
Tutti gli articoli Tutte le news

Vai al Forum
Discussione Chiusa
 
Strumenti
Old 15-01-2008, 21:46   #1
Marbury
Member
 
Iscritto dal: Aug 2007
Messaggi: 42
JAVA 3D

salve, avrei bisogno di un aiuto, vorrei far ruotare un cubo usando le freccie della tastiera. Ho creato 2 behavior uno per left e right e uno per up e down però funziona solamente quello che aggiungo per ultimo!! O left-right o up-down... cioè, left e right modifico rotateY mentre l'altro rotateX... Allego il codice, se riuscite a darmi una mano mi fate un favore enorme!!!

Codice:
package it.unict.dmi.cg.Interaction;

import java.awt.*;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.universe.*;
import javax.media.j3d.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;

//Renderizza un cubo che ruota in risposta agli eventi freccia
public class SimpleBehaviorApp_a2 extends JFrame
{
  public SimpleBehaviorApp_a2()
  {
    //Recupera le configurazioni grafiche del computer
    GraphicsConfiguration config=SimpleUniverse.getPreferredConfiguration();

    //Crea il Canvas3D e lo aggiunge al frame
    Canvas3D canvas3D=new Canvas3D(config);
    this.getContentPane().add(canvas3D,BorderLayout.CENTER);

    //Crea la scena
    BranchGroup scene=createSceneGraph();

    //Crea il SimpleUniverse
    SimpleUniverse simpleU=new SimpleUniverse(canvas3D);

    //Questo comando serve per spostare leggermente indietro il sistema di riferimento
    simpleU.getViewingPlatform().setNominalViewingTransform();

    //Compila la scena (subito prima di renderla viva)
    scene.compile();

    //Aggiunge la scena all'universo
    simpleU.addBranchGraph(scene);
  }

  //Crea la scena
  private BranchGroup createSceneGraph()
  {
    //Crea la radice del branch graph
    BranchGroup objRoot=new BranchGroup();

    //Crea un gruppo per le trasformazioni affini
    TransformGroup objSpin=new TransformGroup();

    //Imposta la capacita' di scrivere la trasformazione
    objSpin.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);

    //Aggiunge al gruppo un cubo colorato
    objSpin.addChild(new ColorCube(0.4));

    //Crea un behavior
    SimpleBehavior_a2 rotatorY=new SimpleBehavior_a2(objSpin);
    SimpleBehavior_a3 rotatorX=new SimpleBehavior_a3(objSpin);

    //Imposta un raggio d'azione del behavior
    BoundingSphere bounds=new BoundingSphere();
    rotatorX.setSchedulingBounds(bounds);
    rotatorY.setSchedulingBounds(bounds);

    //aggiunge l'interpolatore alla gruppo di trasformazione
    objSpin.addChild(rotatorX);
    objSpin.addChild(rotatorY);

    //Aggiunge alla radice il gruppo
    objRoot.addChild(objSpin);

    return objRoot;
  }

  public static void main(String[] args)
  {
    SimpleBehaviorApp_a2 simple=new SimpleBehaviorApp_a2();
    simple.setTitle("Simple Behavior");
    simple.setSize(300,300);
    simple.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    simple.show();
  }
}

//L'implementazione del Behavior personalizzato
class SimpleBehavior_a2 extends Behavior
{
  private TransformGroup targetTG;
  private Transform3D rotation=new Transform3D();
  private double angle=0.0;
  private WakeupOnAWTEvent awt=new WakeupOnAWTEvent(KeyEvent.KEY_PRESSED);


  public SimpleBehavior_a2(TransformGroup targetTG)
  {
    this.targetTG=targetTG;
  }

  public void initialize()
  {
    //Questo Behavior rispondera' ad eventi di tastiera sul key pressed
    this.wakeupOn(awt);
  }

  public void processStimulus(Enumeration criteria)
  {
    //Recupera gli stimoli che hanno attivato il behavior
    AWTEvent[] ev=null;
    while (criteria.hasMoreElements())
    {
      Object obj=criteria.nextElement();
      if (obj instanceof WakeupOnAWTEvent) ev=((WakeupOnAWTEvent)obj).getAWTEvent();
    }
    //Verifica se l'evento AWT e' stato lanciato
    //if (awt.hasTriggered()) ev=awt.getAWTEvent();

    if (ev!=null)
      for (int i=0;i<ev.length;i++) //scorre tutti gli eventi AWT in cerca di un evento di tastiera
        if (ev[i] instanceof KeyEvent)
        {
          //Recupera l'evento
          KeyEvent key=(KeyEvent)ev[i];
          //Recupera il codice dell'evento
          int code=key.getKeyCode(); 
          if (code==KeyEvent.VK_LEFT) //Codice freccia a sinistra
          {
            //decrementa l'angolo
            angle-=0.1;
            //Evita problemi di overflow
            if (angle<0) angle=2*Math.PI;
          }
          else if (code==KeyEvent.VK_RIGHT) //Codice freccia a destra
          {
            //Incrementa l'angolo
            angle+=0.1;
            //Evita problemi di overflow
            if (angle>2*Math.PI) angle=0;
          }
          //imposta la rotazione dell'angolo
          rotation.rotY(angle);
          targetTG.setTransform(rotation);
        }
    //Reseta il Behavior per continuare a rispondere ad eventi di tastiera
    this.wakeupOn(awt);
  }
}



//L'implementazione del Behavior personalizzato
class SimpleBehavior_a3 extends Behavior
{
  private TransformGroup targetTG;
  private Transform3D rotation=new Transform3D();
  private double angle=0.0;
  private WakeupOnAWTEvent awt=new WakeupOnAWTEvent(KeyEvent.KEY_PRESSED);


  public SimpleBehavior_a3(TransformGroup targetTG)
  {
    this.targetTG=targetTG;
  }

  public void initialize()
  {
    //Questo Behavior rispondera' ad eventi di tastiera sul key pressed
    this.wakeupOn(awt);
  }

  public void processStimulus(Enumeration criteria)
  {
    //Recupera gli stimoli che hanno attivato il behavior
    AWTEvent[] ev=null;
    while (criteria.hasMoreElements())
    {
      Object obj=criteria.nextElement();
      if (obj instanceof WakeupOnAWTEvent) ev=((WakeupOnAWTEvent)obj).getAWTEvent();
    }
    //Verifica se l'evento AWT e' stato lanciato
    //if (awt.hasTriggered()) ev=awt.getAWTEvent();

    if (ev!=null)
      for (int i=0;i<ev.length;i++) //scorre tutti gli eventi AWT in cerca di un evento di tastiera
        if (ev[i] instanceof KeyEvent)
        {
          //Recupera l'evento
          KeyEvent key=(KeyEvent)ev[i];
          //Recupera il codice dell'evento
          int code=key.getKeyCode(); 
          if (code==KeyEvent.VK_DOWN) //Codice freccia a sinistra
          {
            //decrementa l'angolo
            angle-=0.1;
            //Evita problemi di overflow
            if (angle<0) angle=2*Math.PI;
          }
          else if (code==KeyEvent.VK_UP) //Codice freccia a destra
          {
            //Incrementa l'angolo
            angle+=0.1;
            //Evita problemi di overflow
            if (angle>2*Math.PI) angle=0;
          }
          //imposta la rotazione dell'angolo
          rotation.rotX(angle);
          targetTG.setTransform(rotation);
        }
    //Reseta il Behavior per continuare a rispondere ad eventi di tastiera
    this.wakeupOn(awt);
  }
 }
Marbury è offline  
Old 16-01-2008, 11:40   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Thread chiuso
|
V
cionci è offline  
 Discussione Chiusa


HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione HONOR Magic 8 Pro: ecco il primo TOP del 2026! L...
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata Insta360 Link 2 Pro e 2C Pro: le webcam 4K che t...
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza Motorola edge 70: lo smartphone ultrasottile che...
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026 Display, mini PC, periferiche e networking: le n...
Le novità ASUS per il 2026 nel settore dei PC desktop Le novità ASUS per il 2026 nel settore de...
Il MacBook Pro è sempre più...
Il prezzo della Switch 2 potrebbe divent...
TikTok chiarisce il funzionamento della ...
Samsung Galaxy A07 5G: il nuovo entry le...
Realme 16 in arrivo: un mix tra iPhone A...
Domenica di follia su Amazon: iPhone 17 ...
Questo portatile HP OMEN con Core Ultra ...
Robot aspirapolvere al prezzo giusto: le...
Il nuovo M5 Max potrebbe avere una GPU p...
Pulizie automatiche al top (e a prezzo B...
Casa più calda, spese più leggere: Tado ...
Mini PC mostruoso in offerta nascosta su...
Netflix promette 45 giorni di esclusivit...
Gigabyte: un handheld? Sì, ma sol...
Samsung conferma l'arrivo di tre variant...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 01:26.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v