NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.
To learn about what's going on, see About the Archive Site.
I'm back trying to take some more baby steps on my simple single-cell application -- trying to define a scalar field over the single-cell grid. Any help would be appreciated... thanks, Randy --------------------- // import needed classes import visad.*; import visad.java3d.DisplayImplJ3D; import visad.util.VisADSlider; //import visad.data.netcdf.Plain; import java.rmi.RemoteException; import java.io.IOException; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class hex { public static void main(String args[]) throws VisADException, RemoteException, IOException { // Define vertices float vtx[][] = new float[3][8]; int k=0; // front face vtx[0][k]= -0.7f; vtx[1][k]= -0.3f; vtx[2][k]= -0.5f; k++; vtx[0][k]= 0.7f; vtx[1][k]= -0.3f; vtx[2][k]= -0.5f; k++; vtx[0][k]= 0.7f; vtx[1][k]= 0.3f; vtx[2][k]= -0.5f; k++; vtx[0][k]= -0.7f; vtx[1][k]= 0.3f; vtx[2][k]= -0.5f; k++; // back face vtx[0][k]= -0.7f; vtx[1][k]= -0.3f; vtx[2][k]= 0.5f; k++; vtx[0][k]= 0.7f; vtx[1][k]= -0.3f; vtx[2][k]= 0.5f; k++; vtx[0][k]= 0.7f; vtx[1][k]= 0.3f; vtx[2][k]= 0.5f; k++; vtx[0][k]= -0.7f; vtx[1][k]= 0.3f; vtx[2][k]= 0.5f; k++; // Define tetrahedra (5 per hex cell) int numTetra = 5; int tetra[][] = new int[numTetra][4]; k=0; tetra[k][0]=0; tetra[k][1]=2; tetra[k][2]=7; tetra[k][3]=3; k++; tetra[k][0]=0; tetra[k][1]=2; tetra[k][2]=5; tetra[k][3]=7; k++; tetra[k][0]=0; tetra[k][1]=5; tetra[k][2]=1; tetra[k][3]=2; k++; tetra[k][0]=0; tetra[k][1]=5; tetra[k][2]=4; tetra[k][3]=7; k++; tetra[k][0]=7; tetra[k][1]=2; tetra[k][2]=6; tetra[k][3]=5; k++; Irregular3DSet grid = new Irregular3DSet( MathType.stringToType("Set(x, y, z)"), vtx, null, // CoordinateSystem null, // Unit[] null, // ErrorEstimate[] new DelaunayCustom(vtx, tetra) ); DataReferenceImpl gridRef = new DataReferenceImpl("grid"); gridRef.setData(grid); // link set to ref // create a Display using Java3D DisplayImplJ3D display = new DisplayImplJ3D("grid display"); RealTupleType tuple = ((SetType) grid.getType()).getDomain(); RealType x = (RealType) tuple.getComponent(0); RealType y = (RealType) tuple.getComponent(1); RealType z = (RealType) tuple.getComponent(2); // display.addMap(new ScalarMap(x, Display.XAxis)); // display.addMap(new ScalarMap(y, Display.YAxis)); // display.addMap(new ScalarMap(z, Display.ZAxis)); ScalarMap xm = new ScalarMap(x, Display.XAxis); ScalarMap ym = new ScalarMap(y, Display.YAxis); ScalarMap zm = new ScalarMap(z, Display.ZAxis); xm.setRange(-1.0, 1.0); ym.setRange(-1.0, 1.0); zm.setRange(-1.0, 1.0); display.addMap(xm); display.addMap(ym); display.addMap(zm); // ------------------------------------------------------ // Define a scalar field over the domain (the irreg3D grid) // args: (FuncType type, Set domain_set) MathType rangeTemp = (MathType) new RealType("Temp"); FunctionType fnType = new FunctionType(MathType.stringToType("Set(x, y, z)"), rangeTemp); FlatField fld = new FlatField(fnType, grid); DataReferenceImpl fldRef = new DataReferenceImpl("fld"); fldRef.setData(fld); // ------------------------------------------------------ // Define a slicing plane (2D grid, Z=const) on which we will // resample the field // Set xyPlane = (Set) new Gridded2DSet(grid, // ------------------------------------------------------ // Add objs to display display.addReference(gridRef); display.addReference(fldRef); GraphicsModeControl mode = display.getGraphicsModeControl(); mode.setPointSize(5.0f); // create JFrame (i.e., a window) for display and slider JFrame frame = new JFrame("Hex Cell"); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {System.exit(0);} }); // create JPanel in JFrame JPanel panel = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); panel.setAlignmentY(JPanel.TOP_ALIGNMENT); panel.setAlignmentX(JPanel.LEFT_ALIGNMENT); frame.getContentPane().add(panel); // add slider and display to JPanel // panel.add(slider); panel.add(display.getComponent()); // set size of JFrame and make it visible frame.setSize(400, 400); frame.setVisible(true); } }
visad
archives: