Este es un ejemplo de un yoyo creado a partir de 2 conos.
nombre: ConeYoyoApp.java
..........................................................................................................................
/**
*
* @author alex4024
*/
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Frame;
import javax.media.j3d.Alpha;
import javax.media.j3d.Appearance;
import javax.media.j3d.BoundingSphere;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import javax.media.j3d.RotationInterpolator;
import javax.media.j3d.Transform3D;
import javax.media.j3d.TransformGroup;
import javax.vecmath.Point3d;
import javax.vecmath.Vector3f;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.geometry.Cone;
import com.sun.j3d.utils.universe.SimpleUniverse;
import java.awt.GraphicsConfiguration;
public class ConeYoyoApp extends Applet {
public class ConeYoyo {
private BranchGroup yoyoBG;
public ConeYoyo() {
yoyoBG = new BranchGroup();
Appearance app = new Appearance();
Transform3D girar = new Transform3D();
Transform3D transladar = new Transform3D();
transladar.set(new Vector3f(0.1f, 0.0f, 0.0f));
TransformGroup yoyoTGT1 = new TransformGroup(transladar);
yoyoBG.addChild(yoyoTGT1);
girar.rotZ(Math.PI / 2.0d);
TransformGroup yoyoTGR1 = new TransformGroup(girar);
Cone cone1 = new Cone(0.6f, 0.2f);
cone1.setAppearance(app);
yoyoTGR1.addChild(cone1);
yoyoTGT1.addChild(yoyoTGR1);
transladar.set(new Vector3f(-0.1f, 0.0f, 0.0f));
TransformGroup yoyoTGT2 = new TransformGroup(transladar);
yoyoBG.addChild(yoyoTGT2);
girar.rotZ(-Math.PI / 2.0d);
TransformGroup yoyoTGR2 = new TransformGroup(girar);
Cone cono2 = new Cone(0.6f, 0.2f);
cono2.setAppearance(app);
yoyoTGR2.addChild(cono2);
yoyoTGT2.addChild(yoyoTGR2);
yoyoBG.compile();
}
public BranchGroup getBG() {
return yoyoBG;
}
}
public BranchGroup createSceneGraph() {
BranchGroup objRaiz = new BranchGroup();
TransformGroup objVuelta = new TransformGroup();
objVuelta.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
objRaiz.addChild(objVuelta);
objVuelta.addChild(new ConeYoyo().getBG());
Alpha rotacionAlpha = new Alpha(-1, 4000);
RotationInterpolator rotacion = new RotationInterpolator(rotacionAlpha, objVuelta);
BoundingSphere limites = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 100.0);
rotacion.setSchedulingBounds(limites);
objVuelta.addChild(rotacion);
objRaiz.compile();
return objRaiz;
}
public ConeYoyoApp() {
setLayout(new BorderLayout());
GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
Canvas3D lienzo3D = new Canvas3D(config);
add("Center", lienzo3D);
BranchGroup escena = createSceneGraph();
SimpleUniverse simpleU = new SimpleUniverse(lienzo3D);
simpleU.getViewingPlatform().setNominalViewingTransform();
simpleU.addBranchGraph(escena);
}
public static void main(String[] args) {
Frame frame = new MainFrame(new ConeYoyoApp(), 256, 256);
}
}
..........................................................................................................................
Alpha rotacionAlpha = new Alpha(-1,4000); en esta linea declaramos la velocidad de rotación., aclarese que 4000 es igual a 4 segundos, y -1 lo que hace es que el cubo gire infinitamente; (si este valor se cambia por 2, el cubo gira dos vez, así sucesivamente con valores positivos)...
.
No hay comentarios:
Publicar un comentario