package org.freehep.j3d.plot;
import javax.media.j3d.*;
import javax.vecmath.*;
/**
* This is a base class for all PlotBuilders.
*
* Note that all of its build* methods return BranchGraphs which can be added to a 3D display.
* @author Joy Kyriakopulos (joyk@fnal.gov)
* @version $Id: AbstractPlotBuilder.java 8584 2006-08-10 23:06:37Z duns $
*/
public abstract class AbstractPlotBuilder
{
public Node buildOutsideBox()
{
// Allocate line array for wire-frame cube - 8 vertices, 24 coordinates (i.e. size of array)
IndexedLineArray xCube = new IndexedLineArray(8, IndexedLineArray.COORDINATES, 24);
// Set coordinates for the cube //
xCube.setCoordinate(0, new Point3d(-0.5,+0.5,0.0));
xCube.setCoordinate(1, new Point3d(+0.5,+0.5,0.0));
xCube.setCoordinate(2, new Point3d(+0.5,-0.5,0.0));
xCube.setCoordinate(3, new Point3d(-0.5,-0.5,0.0));
xCube.setCoordinate(4, new Point3d(-0.5,+0.5,1.0));
xCube.setCoordinate(5, new Point3d(+0.5,+0.5,1.0));
xCube.setCoordinate(6, new Point3d(+0.5,-0.5,1.0));
xCube.setCoordinate(7, new Point3d(-0.5,-0.5,1.0));
// Construct the vertical //
xCube.setCoordinateIndex(0, 0);
xCube.setCoordinateIndex(1, 1);
xCube.setCoordinateIndex(2, 3);
xCube.setCoordinateIndex(3, 2);
xCube.setCoordinateIndex(4, 4);
xCube.setCoordinateIndex(5, 5);
xCube.setCoordinateIndex(6, 7);
xCube.setCoordinateIndex(7, 6);
// Construct the lower side //
xCube.setCoordinateIndex(8, 0);
xCube.setCoordinateIndex(9, 4);
xCube.setCoordinateIndex(10, 4);
xCube.setCoordinateIndex(11, 7);
xCube.setCoordinateIndex(12, 7);
xCube.setCoordinateIndex(13, 3);
xCube.setCoordinateIndex(14, 3);
xCube.setCoordinateIndex(15, 0);
// Construct the upper side //
xCube.setCoordinateIndex(16, 1);
xCube.setCoordinateIndex(17, 5);
xCube.setCoordinateIndex(18, 5);
xCube.setCoordinateIndex(19, 6);
xCube.setCoordinateIndex(20, 6);
xCube.setCoordinateIndex(21, 2);
xCube.setCoordinateIndex(22, 2);
xCube.setCoordinateIndex(23, 1);
return new Shape3D(xCube);
}
/**
* @param label
* @param location
* @param tickLocation Value from 0-1 for each tick location
* @param tickLabels Label for each tick mark
*/
public Node buildAxis(int location, String label, double[] tickLocation, String[] tickLabels)
{
return null;
}
}