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.
Hello all, Until now i've being using Irregular2dSets to creat small "rectangles" where a flatfield shows the color behaviour, but now i've to introduce Altitude to the system and instead of rectangles i must have cubes or Irregular3dsets i thought. For a Irregualr2dset you define 4 points and 4 color values in each point and you have a "solid" rectangle, but i create a irregular3dset with 8 points with eight color values in for the flatfield i get 4 points in space instead of a cube with color variation. How can i get a cube? Cheers, Tiago Simoes
import java.io.*; import java.awt.*; import java.awt.event.*; import java.net.*; import java.util.*; import javax.swing.*; import javax.swing.event.*; import visad.*; import visad.java3d.*; import visad.util.*; public class tester { private DisplayImpl display; public tester() { try { display = new DisplayImplJ3D("display"); RealType rgb = new RealType("rgb"); ScalarMap latMap = new ScalarMap(RealType.Latitude, Display.XAxis); ScalarMap lonMap = new ScalarMap(RealType.Longitude, Display.YAxis); ScalarMap hgtMap = new ScalarMap(RealType.Radius, Display.ZAxis); ScalarMap clrMap = new ScalarMap(rgb, Display.RGB); display.addMap(latMap); display.addMap(lonMap); display.addMap(hgtMap); display.addMap(clrMap); latMap.setRange(-90.0, 90.0); lonMap.setRange(-180.0, 180.0); hgtMap.setRange(0.0f, 100.0f); RealTupleType lt = new RealTupleType(RealType.Latitude, RealType.Longitude); LinearLatLonSet land = new LinearLatLonSet(lt,90.0,-90.0,100,180.0,-180.0,100); DataReference land_ref = new DataReferenceImpl("land"); land_ref.setData(land); ConstantMap[] landConstantMap = new ConstantMap[3]; landConstantMap[0] = new ConstantMap(1.0f, Display.Blue); landConstantMap[1] = new ConstantMap(0.0f, Display.Red); landConstantMap[2] = new ConstantMap(0.0f, Display.Green); RealTupleType fieldtuple = new RealTupleType(RealType.Latitude, RealType.Longitude, RealType.Radius); FunctionType funccolor = new FunctionType(fieldtuple, rgb); Irregular3DSet dataSystem[] = new Irregular3DSet[1]; float[][] pol = new float[3][8]; pol[0][0] = 32.0f; pol[1][0] = 50.0f; pol[2][0] = 20.0f; pol[0][1] = 40.0f; pol[1][1] = 60.0f; pol[2][1] = 20.0f; pol[0][2] = 35.5f; pol[1][2] = 53.0f; pol[2][2] = 20.0f; pol[0][3] = 33.0f; pol[1][3] = 60.0f; pol[2][3] = 20.0f; pol[0][4] = 32.0f; pol[1][4] = 50.0f; pol[2][4] = 60.0f; pol[0][5] = 40.0f; pol[1][5] = 60.0f; pol[2][5] = 60.0f; pol[0][6] = 35.5f; pol[1][6] = 53.0f; pol[2][6] = 60.0f; pol[0][7] = 33.0f; pol[1][7] = 60.0f; pol[2][7] = 60.0f; dataSystem[0] = new Irregular3DSet(fieldtuple,pol); UnionSet layerLines = new UnionSet(fieldtuple, dataSystem); FlatField color_ff = new FlatField(funccolor, layerLines); float[][] color_Vals = new float[1][8]; color_Vals[0][0] = 0.0f; color_Vals[0][1] = 1.0f; color_Vals[0][2] = 0.0f; color_Vals[0][3] = 1.0f; color_Vals[0][4] = 0.5f; color_Vals[0][5] = 0.0f; color_Vals[0][6] = 0.5f; color_Vals[0][7] = 1.0f; color_ff.setSamples(color_Vals, false); DataReferenceImpl layerLinesRef = new DataReferenceImpl("layerLines"); layerLinesRef.setData(color_ff); display.addReference(layerLinesRef); JFrame frame = new JFrame("Tester"); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); frame.getContentPane().setLayout(new BorderLayout()); frame.getContentPane().add(display.getComponent(), BorderLayout.CENTER); //frame.getContentPane().add(vs, BorderLayout.SOUTH); frame.setSize(1000, 900); frame.setVisible(true); GraphicsModeControl dispGMC = display.getGraphicsModeControl(); dispGMC.setScaleEnable(true); } catch (Exception ne) { ne.printStackTrace(); System.exit(1); } } public static void main(String[] args) { tester satDisplay = new tester(); } }
visad
archives: