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 Olav, I tried moving your code into a class named Tools but it wouldn't compile because it couldn't resolve 'i', 'reader' and possibly others. I'll work on this if you send me a complete and self-contained class source that generates the Exception. Thanks, Bill Olav Rybatzki wrote: > > Sorry Bill, > > I saw, that the mailer had send my reply to your private email address. > Here is the answer to your question at the mailing list. > > -------- Original Message -------- > Subject: Re: Problem with DelaunayCustom > Date: Thu, 18 Jul 2002 01:46:05 +0200 > From: Olav Rybatzki <o.rybatzki@xxxxxx> > To: Bill Hibbard <billh@xxxxxxxxxxxxx> > References: <Pine.GSO.4.44.0207171806310.8736-100000@xxxxxxxxxxxxxxxxxx> > > Bill Hibbard wrote: > > On Thu, 18 Jul 2002, Olav Rybatzki wrote: > > > > > >>I have a problem with the DelaunayCustom. The data I get are > >>unstructured with a connectivity list of 8 points per node (a > hexahedron). > >> > >> > >> > 7-------------6 > >> . | . | > >> 4 | 5 | > >> | | | | > >> | | | | > >> | 3---------|---2 > >> | . | . > >> 0--------------1 > >> > >> > >>To get my data into the DelaunayCustom I split the hexahedron into 5 > >>tetrahedron. The 5 tetrahedrons have the following points, > >> > >>tetra_1 (0,5,7,4) > >>tetra_2 (0,5,7,2) > >>tetra_3 (0,2,5,1) > >>tetra_4 (0,2,7,3) > >>tetra_5 (7,5,2,6) > >> > >>Now when I create the DelaunayCustom with the new connectivity list I > >>get the following exception > >> > >>Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException > >> at visad.Delaunay.finish_triang(Delaunay.java:510) > >> at visad.DelaunayCustom.<init>(DelaunayCustom.java:115) > >> at visad.DelaunayCustom.<init>(DelaunayCustom.java:43) > > > > > > Thanks for the stack dump, but I cannot determine the > > problem from it. Can you send me a simple program that > > generates this Exception? > > > > Thanks, Bill > > > > > > Hi Bill, > > thank you for your answer. Here comes the code. > > RealType tempType = reader.getTemperatureType(); > RealTupleType domainTuple = reader.getCoordinateTuple(); > > FunctionType funcDomainTemperature = new > FunctionType(domainTuple, tempType); > > Vector axis = reader.getAxisValues(); > RealType xaxisType = reader.getXAxisType(); > RealType yaxisType = reader.getYAxisType(); > RealType zaxisType = reader.getZAxisType(); > > Vector variable = reader.getVariableValues(); > > DisplayImplJ3D display3D = new DisplayImplJ3D("3D Display" + > reader.getTitle()); > GraphicsModeControl dispGMC = (GraphicsModeControl) > display3D.getGraphicsModeControl(); > > ScalarMap colMap = new ScalarMap(xaxisType, Display.XAxis); > ScalarMap rowMap = new ScalarMap(yaxisType, Display.YAxis); > ScalarMap zMap = new ScalarMap(zaxisType, Display.ZAxis); > ScalarMap tempMap = new ScalarMap(tempType, Display.RGB); > ScalarMap tempIsoMap = new ScalarMap(tempType, > Display.IsoContour); > > display3D.addMap(colMap); > display3D.addMap(rowMap); > display3D.addMap(zMap); > //display3D.addMap (tempIsoMap); > display3D.addMap(tempMap); > > float[][] pointValues = (float[][])axis.get(0); > > int[][] connect = > Tools.hexaedronToTretrahedron(reader.getConnectingList()); > > System.gc(); > > DelaunayCustom tri = new DelaunayCustom(pointValues, connect); > Irregular3DSet domainSet = new Irregular3DSet(domainTuple, > pointValues, > null, > null, > null, > tri); > > FlatField val_ff = new FlatField(funcDomainTemperature, > domainSet); > > float[][] var = (float[][]) variable.get(0); > System.gc(); > > float[][] data = new float[1][var[0].length]; > > for(i=0; i<var[0].length; i++) > { > data[0][i] = var[1][i]; > } > System.out.println("Array of Temp values is now ready for use"); > System.gc(); > > val_ff.setSamples(data); > DataReferenceImpl data_ref = new DataReferenceImpl("data_ref"); > data_ref.setData(val_ff); > > display3D.addReference( data_ref ); > > JFrame frame = new JFrame("First VisAD Test" + reader.getTitle()); > frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE); > frame.getContentPane().add(display3D.getComponent()); > frame.setSize(400, 300); > frame.setVisible(true); > > The algoritm to split a hexahedron to 5 tetrahedrons, placed in the > class Tools, is shown below. > > public static int[][] hexaedronToTretrahedron(int[][] hex) > { > int[][] hexa = hex; > int[][] tetra = new int[hexa.length*5][4]; > > for(int i=0; i<hexa.length; i++) > { > > tetra[i*5][0] = hexa[i][0]; > tetra[i*5][1] = hexa[i][5]; > tetra[i*5][2] = hexa[i][7]; > tetra[i*5][3] = hexa[i][4]; > > tetra[i*5+1][0] = hexa[i][0]; > tetra[i*5+1][1] = hexa[i][5]; > tetra[i*5+1][2] = hexa[i][7]; > tetra[i*5+1][3] = hexa[i][2]; > > tetra[i*5+2][0] = hexa[i][0]; > tetra[i*5+2][1] = hexa[i][2]; > tetra[i*5+2][2] = hexa[i][5]; > tetra[i*5+2][3] = hexa[i][7]; > > tetra[i*5+3][0] = hexa[i][0]; > tetra[i*5+3][1] = hexa[i][2]; > tetra[i*5+3][2] = hexa[i][7]; > tetra[i*5+3][3] = hexa[i][3]; > > tetra[i*5+4][0] = hexa[i][7]; > tetra[i*5+4][1] = hexa[i][5]; > tetra[i*5+4][2] = hexa[i][2]; > tetra[i*5+4][3] = hexa[i][6]; > > } > return tetra; > } > > Thanks, Olav -- ---------------------------------------------------------- Bill Hibbard, SSEC, 1225 W. Dayton St., Madison, WI 53706 hibbard@xxxxxxxxxxxxxxxxx 608-263-4427 fax: 608-263-6738 http://www.ssec.wisc.edu/~billh/vis.html
visad
archives: