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.
Hi Ugo, Helen again, After send you email, I have tried again. The strang thing happen. Execute the RubberBandBoxRendererJ3D code and do nothing but directly click on right mouse button to draw a box. No box shows up after I release my right mouse button. but if I click on left mouse button to rotate the 3D display, the last box I draw by draging the right mouse button emerges with yellow line. Why? is it a bug or what? Thanks for your help. /Helen Helen Yi wrote: > Hi Ugo, > > I cut and paste your main method to RubberBandBoxRendererJ3D.java, tested > it. I still don't see the rubberband on screen after I release my right > mouse button. Why? > > Thanks for your help. > > /helen > > Ugo Taddei wrote: > > > Hello Helen, Hello VisAD World, > > > > here (s. bellow) is the solution to keeping the rubberband on screen. > > > > To track down my changes look for "// UT". I've changed some code near > > the Cell stuff, in main(). > > > > Cheers, > > > > Ugo > > > > // UT > > private static final int N = 16; > > > > /** test RubberBandBoxRendererJ3D */ > > public static void main(String args[]) > > throws VisADException, RemoteException { > > RealType x = new RealType("x"); > > RealType y = new RealType("y"); > > RealTupleType xy = new RealTupleType(x, y); > > > > RealType c = new RealType("c"); > > FunctionType ft = new FunctionType(xy, c); > > > > // construct Java3D display and mappings > > DisplayImpl display = new DisplayImplJ3D("display1"); > > if (args.length == 0 || args[0].equals("z")) { > > display.addMap(new ScalarMap(x, Display.XAxis)); > > display.addMap(new ScalarMap(y, Display.YAxis)); > > } > > else if (args[0].equals("x")) { > > display.addMap(new ScalarMap(x, Display.YAxis)); > > display.addMap(new ScalarMap(y, Display.ZAxis)); > > } > > else if (args[0].equals("y")) { > > display.addMap(new ScalarMap(x, Display.XAxis)); > > display.addMap(new ScalarMap(y, Display.ZAxis)); > > } > > else if (args[0].equals("radius")) { > > display.addMap(new ScalarMap(x, Display.Longitude)); > > display.addMap(new ScalarMap(y, Display.Latitude)); > > } > > else if (args[0].equals("lat")) { > > display.addMap(new ScalarMap(x, Display.Longitude)); > > display.addMap(new ScalarMap(y, Display.Radius)); > > } > > else if (args[0].equals("lon")) { > > display.addMap(new ScalarMap(x, Display.Latitude)); > > display.addMap(new ScalarMap(y, Display.Radius)); > > } > > else { > > display.addMap(new ScalarMap(x, Display.Longitude)); > > display.addMap(new ScalarMap(y, Display.Latitude)); > > } > > display.addMap(new ScalarMap(c, Display.RGB)); > > > > Integer2DSet fset = new Integer2DSet(xy, N, N); > > FlatField field = new FlatField(ft, fset); > > float[][] values = new float[1][N * N]; > > int k = 0; > > for (int i=0; i<N; i++) { > > for (int j=0; j<N; j++) { > > values[0][k++] = (i - N / 2) * (j - N / 2); > > } > > } > > field.setSamples(values); > > DataReferenceImpl field_ref = new DataReferenceImpl("field"); > > field_ref.setData(field); > > display.addReference(field_ref); > > > > Gridded2DSet dummy_set = new Gridded2DSet(xy, null, 1); > > final DataReferenceImpl ref = new DataReferenceImpl("set"); > > ref.setData(dummy_set); > > int m = (args.length > 1) ? InputEvent.CTRL_MASK : 0; > > display.addReferences(new RubberBandBoxRendererJ3D(x, y, m, m), > > ref); > > > > // UT > > final DataReferenceImpl ref2 = new DataReferenceImpl("set2"); > > ref2.setData(dummy_set); > > ConstantMap[] yellowCMap = { new ConstantMap( 1.0f, Display.Red ), > > new ConstantMap( 1.0f, Display.Green > > ), > > new ConstantMap( 0.0f, Display.Blue ), > > new ConstantMap( 2.50f, > > Display.LineWidth ) }; > > display.addReference(ref2, yellowCMap); > > > > CellImpl cell = new CellImpl() { > > public void doAction() throws VisADException, RemoteException { > > Set set = (Set) ref.getData(); > > float[][] samples = set.getSamples(); > > if (samples != null) { > > System.out.println("box test: (" + samples[0][0] + ", " + > > samples[1][0] + > > ") to (" + samples[0][1] + ", " + > > samples[1][1] + ")"); > > } > > > > // UT dump data > > visad.jmet.DumpType.dumpDataType(set,System.out); > > > > // HI; UT -> changed indices > > float[][] points1 = new float[2][5]; > > points1[0][0]= samples[0][0]; > > points1[1][0]= samples[1][0]; > > > > points1[0][1]= samples[0][0]; > > points1[1][1]= samples[1][1]; > > > > points1[0][2]= samples[0][1]; > > points1[1][2]= samples[1][1]; > > > > points1[0][3]= samples[0][1]; > > points1[1][3]= samples[1][0]; > > > > points1[0][4]= samples[0][0]; > > points1[1][4]= samples[1][0]; > > > > // UT > > RealType x2 = RealType.getRealType("x"); > > RealType y2 = RealType.getRealType("y"); > > RealTupleType xy2 = new RealTupleType(x2, y2); > > > > // UT > > ref2.setData( new Gridded2DSet(xy2, points1, 5)); > > > > } > > }; > > cell.addReference(ref); > > > > // create JFrame (i.e., a window) for display and slider > > JFrame frame = new JFrame("test RubberBandBoxRendererJ3D"); > > 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 display to JPanel > > panel.add(display.getComponent()); > > > > // set size of JFrame and make it visible > > frame.setSize(500, 500); > > frame.setVisible(true); > > }
visad
archives: