Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [JAVA 3D] rotazione continua di una figura

    Salve, sto usando da poco tempo il java e il 3D con qualche difficoltà.
    Sto cercando di realizzare un programma che abbia un cubo che ruota prendendo le cordinate di x,y e z in input.
    Ad esempio voglio creare il file pippo che richiami il metodo della classe Cubo e gli passi i dati i modo che questa classe crei il cubo, sempre usando la stessa finestra.
    Sono riuscita a creare un cubo e ruotarlo cambiando le coordinate a mano con questo codice

    codice:
    import java.applet.Applet;
    import com.sun.j3d.utils.universe.SimpleUniverse;
    import com.sun.j3d.utils.applet.MainFrame;
    import javax.media.j3d.BranchGroup;
    import javax.media.j3d.TransformGroup;
    import javax.media.j3d.Transform3D;
    import javax.media.j3d.Canvas3D;
    import com.sun.j3d.utils.geometry.ColorCube;
    import java.awt.*;
    
    public class Cubo4 extends Applet
    {
    	// crea l’universo
    	public void init()
    	{
    		setLayout(new BorderLayout());
    		GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
    		canvas = new Canvas3D(config);
    		group = new BranchGroup();
    		group.addChild(trasla());
    		group.compile();
    		universe = new SimpleUniverse(canvas);
    		add("Center",canvas);
    		universe.getViewingPlatform().setNominalViewingTransform();
    		universe.addBranchGraph(group);
    	}
    	
    	// trasla il cubo
    	public TransformGroup trasla()
    	{
    		double x = Math.PI / 6;
    		double y = Math.PI / 6;
    		double z = Math.PI / 2;
    	
    		Transform3D transf2 = new Transform3D();
    		Transform3D transf = new Transform3D();
    		TransformGroup tg = new TransformGroup();
    		/* setta la rotazione di 45 gradi intorno all’asse Y:
    		l’angolo è espresso in radianti (pi greco/4) */
    		transf.rotZ(z);  // si puo' usare al posto di transf.rotZ(Math.PI / 2);
    		transf2.mul(transf);
    		transf.rotY(y);  // si puo' usare al posto di transf.rotY(Math.PI / 6);
    		transf2.mul(transf);
    		transf.rotX(x);  // si puo' usare al posto di transf.rotX(Math.PI / 6);
    		transf2.mul(transf);
    	
    			//posizione.setRotation(transf2);
    			// setta la traslazione
    			//transf.setTranslation(posizione);
    	
    		tg.setTransform(transf2);
    		tg.addChild(cube);
    		return tg;
    	}
    	
    	// attributi
    	private SimpleUniverse universe;
    	private BranchGroup group;
    	private Canvas3D canvas;
    	private ColorCube cube = new ColorCube(0.3);
    
    // main
    	public static void main(String args[])
    	{
    		new MainFrame(new Cubo4(),400,400);
    	}
    }
    cambiando il metodo init in modo da acquisire 3 double e da poterli passare a trasla in

    codice:
    group.addChild(trasla());
    mi da errore dicendo che c'è già un figlio con quel nome.

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    10
    edit

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    10
    edit

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    10
    Ciao,
    che eccezione tira su? puoi postare il codice modificato?

    un saluto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.