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();
}
}