Torna indietro   Hardware Upgrade Forum > Software > Programmazione

iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
C'è tanta sostanza nel nuovo smartphone della Mela dedicato ai creator digitali. Nuovo telaio in alluminio, sistema di raffreddamento vapor chamber e tre fotocamere da 48 megapixel: non è un semplice smartphone, ma uno studio di produzione digitale on-the-go
Intel Panther Lake: i processori per i notebook del 2026
Intel Panther Lake: i processori per i notebook del 2026
Panther Lake è il nome in codice della prossima generazione di processori Intel Core Ultra, che vedremo al debutto da inizio 2026 nei notebook e nei sistemi desktop più compatti. Nuovi core, nuove GPU e soprattutto una struttura a tile che vede per la prima volta l'utilizzo della tecnologia produttiva Intel 18A: tanta potenza in più, ma senza perdere in efficienza
Intel Xeon 6+: è tempo di Clearwater Forest
Intel Xeon 6+: è tempo di Clearwater Forest
Intel ha annunciato la prossima generazione di processori Xeon dotati di E-Core, quelli per la massima efficienza energetica e densità di elaborazione. Grazie al processo produttivo Intel 18A, i core passano a un massimo di 288 per ogni socket, con aumento della potenza di calcolo e dell'efficienza complessiva.
Tutti gli articoli Tutte le news

Vai al Forum
Discussione Chiusa
 
Strumenti
Old 15-01-2008, 20: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, 10: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


iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile iPhone 17 Pro: più di uno smartphone. &Eg...
Intel Panther Lake: i processori per i notebook del 2026 Intel Panther Lake: i processori per i notebook ...
Intel Xeon 6+: è tempo di Clearwater Forest Intel Xeon 6+: è tempo di Clearwater Fore...
4K a 160Hz o Full HD a 320Hz? Titan Army P2712V, a un prezzo molto basso 4K a 160Hz o Full HD a 320Hz? Titan Army P2712V,...
Recensione Google Pixel Watch 4: basta sollevarlo e si ha Gemini sempre al polso Recensione Google Pixel Watch 4: basta sollevarl...
Google annuncia Gemini Enterprise: l'IA ...
Battlefield 6 debutta tra code infinite ...
Gli iPhone di seconda mano dominano il m...
Pavel Durov (Telegram) lancia l'allarme:...
Occhiali Smart come lo smartphone: il fu...
Arriva NVIDIA GB300 NVL72, il cluster di...
Copilot si collega a OneDrive, Gmail e D...
Il Liquid Glass di iOS 26 è stato...
I biocarburanti fanno più danni d...
ELF, il Frankenstein di Mercedes che ant...
Da Kia arriva il passaporto per le batte...
The Elder Scrolls 6 renderà omagg...
YouTube dà una 'seconda chance' a...
Attacco hacker a Oracle E-Business Suite...
Wi-Fi 7 per tutti: FRITZ!Repeater 1700 p...
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: 19:52.


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