AddRemoveElementsDemo.java :  » Java-3D » jzy3d » org » jzy3d » demos » dynamic » Java Open Source

Java Open Source » Java 3D » jzy3d 
jzy3d » org » jzy3d » demos » dynamic » AddRemoveElementsDemo.java
package org.jzy3d.demos.dynamic;

import java.util.List;
import java.util.Random;
import java.util.Vector;

import org.jzy3d.chart.Chart;
import org.jzy3d.colors.Color;
import org.jzy3d.demos.AbstractDemo;
import org.jzy3d.demos.IRunnableDemo;
import org.jzy3d.demos.Launcher;
import org.jzy3d.maths.Coord3d;
import org.jzy3d.plot3d.primitives.AbstractDrawable;
import org.jzy3d.plot3d.primitives.LineStrip;
import org.jzy3d.plot3d.primitives.Point;


/** Show ability to add and remove elements from the scene graph during runtime.
 * Slowlyness of display is due to a rendering update after each drawn line.
 */
public class AddRemoveElementsDemo extends AbstractDemo implements IRunnableDemo{
  
  public static void main(String[] args) throws Exception{
    IRunnableDemo demo = new AddRemoveElementsDemo();
    Launcher.openDemo(demo);
    demo.start();
  }
  
  public static int MAX_DRAWABLE = 1000;
  
  public AddRemoveElementsDemo(){
    chart = new Chart();
  }

  @Override
  public String getPitch() {
    return "Adding an removing elements dynamically. " +
        "You must stop the rotation thread before closing the panel " +
        "to avoid the ConcurrentModificationException in your application.";
  }

  @Override
  public Chart getChart() {
    return chart;
  }

  @Override
  public void start() {
    final Random rng = new Random();

    // Adding random lines
    int k = 0;
    while(k<MAX_DRAWABLE){
      LineStrip line = new LineStrip();
      line.add(new Point(new Coord3d(rng.nextFloat(),rng.nextFloat(),rng.nextFloat()), new Color(rng.nextFloat(),rng.nextFloat(),rng.nextFloat())));
      line.add(new Point(new Coord3d(rng.nextFloat(),rng.nextFloat(),rng.nextFloat()), new Color(rng.nextFloat(),rng.nextFloat(),rng.nextFloat())));
      chart.getScene().getGraph().add(line);  
      memory.add(line);
      k++;
    }
    
    // Removing lines
    while(k>1){
      chart.getScene().getGraph().remove(memory.get(--k));
    }
  }

  @Override
  public void stop() {
    // TODO Auto-generated method stub
    
  }
  
  protected Chart chart;
  final List<AbstractDrawable> memory = new Vector<AbstractDrawable>();

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.