Hi Ko Ko,
You message to the list bounced because it was too long
(>40000 chars). It looked like the problem was a bunch
of appended HTML. Probably some NT craziness.
However, I am repeating your message because you found a
bug in visad.bom.ShadowBarbRealTupleTypeJ3D, which I have
fixed. You can get the fix at:
ftp://www.ssec.wisc.edu/pub/visad-2.0/ShadowBarbRealTupleTypeJ3D.java
Also, you might want to change:
z_map.setRange(0.0,0.1);
to something like:
z_map.setRange(-1.0,1.0);
Hopefully I will update the general source distribution
pretty soon.
CHeers,
Bill
Here's your message:
Hello Visaders
When I tried to stack up the flatfields on top of each
other, they appeared on the same Z-Plane instead of
appearing on different values of Z.I would appreciate
if someone help to solve this problem.
Ko Ko
_____________________________________________________
import visad.*;
import visad.util.*;
import visad.data.mcidas.*;
import visad.bom.BarbRendererJ3D;
import visad.java2d.*;
import visad.java3d.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.rmi.*;
import javax.swing.border.*;
import java.util.*;
public class WindStacks
{
DisplayImpl display;
final int numOfBarbSet = 2;
ConstantMap [] red = new ConstantMap[4];
ConstantMap[] blue = new ConstantMap[4];
FunctionType timeBarb = null;
Gridded2DSet latlonSet = null;
float [][] data = null;
float [][] latlon = { {-40.5f, -40.5f, -43.1f, -43.1f},
{145.5f, 148.4f, 145.5f, 148.4f}
};
float[][] uvSet1 = { {-20.0f, 5.0f, -20.0f, 15.0f},
{ 10.0f, 7.89f, 10.0f, -5.0f}
};
float[][] uvSet2 = { {20.0f, -5.0f, 20.0f, -15.0f},
{ 10.0f, 7.89f, 10.0f, -5.0f}
};
public WindStacks()
throws Exception
{
display = new DisplayImplJ3D("display");
display.getDisplayRenderer().setBackgroundColor(1.0f, 1.0f, 1.0f);
DisplayRenderer dr = display.getDisplayRenderer();
dr.setCursorColor(0.0f,0.0f,0.0f);
DataReferenceImpl ref = new DataReferenceImpl("image");
RealType [] time = {RealType.Time};
RealTupleType time_type = new RealTupleType(time);
RealType uType = new RealType("U", CommonUnit.meterPerSecond, null);
RealType vType = new RealType("V", CommonUnit.meterPerSecond, null);
EarthVectorType uvType = new EarthVectorType(uType, vType);
RealTupleType latlonType = new RealTupleType(RealType.Latitude,
RealType.Longitude);
FunctionType ftype = new FunctionType(latlonType, uvType);
FunctionType timeBarb = new FunctionType(time_type,ftype);
FlatField [] winds = new FlatField[numOfBarbSet];
red[0] = new ConstantMap(0.0, Display.Blue);
red[1] = new ConstantMap(1.0, Display.Red);
red[2] = new ConstantMap(0.0, Display.Green);
red[3] = new ConstantMap(1.5, Display.LineWidth );
blue[0] = new ConstantMap(1.0, Display.Blue);
blue[1] = new ConstantMap(0.0, Display.Red);
blue[2] = new ConstantMap(0.0, Display.Green);
blue[3] = new ConstantMap(2.0, Display.LineWidth );
for (int k=0; k<numOfBarbSet; k++)
{
latlonSet = null;
latlonSet = new Gridded2DSet(latlonType, latlon, 4);
winds[k] = new FlatField(ftype, latlonSet);
if(k==0)
winds[k].setSamples(uvSet1);
else if(k==1)
winds[k].setSamples(uvSet2);
}
Linear1DSet time_set = new Linear1DSet(time_type, 0.0,
(double) (numOfBarbSet - 1.0), numOfBarbSet);
FieldImpl barb_stacks = new FieldImpl(timeBarb,time_set);
for(int x=0;x<numOfBarbSet;x++)
barb_stacks.setSample(x,winds[x]);
ref.setData(barb_stacks);
ScalarMap latMap = new ScalarMap(RealType.Latitude, Display.YAxis);
ScalarMap lonMap = new ScalarMap(RealType.Longitude, Display.XAxis);
ScalarMap z_map = new ScalarMap(RealType.Time, Display.ZAxis);
display.addMap(latMap);
display.addMap(lonMap);
display.addMap(z_map);
latMap.setRange(-45, -39);
lonMap.setRange(144, 150);
z_map.setRange(0.0,0.1);
ScalarMap uMap = new ScalarMap(uType,Display.Flow1X);
ScalarMap vMap = new ScalarMap(vType,Display.Flow1Y);
display.addMap(uMap);
display.addMap(vMap);
uMap.setRange(-1.0, 1.0);
vMap.setRange(-1.0, 1.0);
FlowControl fc = (FlowControl) vMap.getControl();
fc.setFlowScale(0.05f);
BaseMapAdapter bma = new BaseMapAdapter("OUTLSUPW");
bma.setLatLonLimits(-48.0f,-9.0f,105.0f,165.0f);
DataReference maplines_ref = new DataReferenceImpl("MapLines");
maplines_ref.setData(bma.getData() );
display.addReference( maplines_ref, blue);
display.addReferences(new BarbRendererJ3D(),ref, red);
System.out.println("Starting to render display");
JFrame frame = new JFrame("Wind Test");
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
// create JPanel in JFrame
JPanel main = new JPanel();
//main.setLayout(new BorderLayout());
frame.getContentPane().add(main);
main.setLayout(new BoxLayout(main, BoxLayout.X_AXIS));
main.add(display.getComponent());
// frame.getContentPane().add(display.getComponent());
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args)
throws Exception
{
WindStacks tl = new WindStacks();
}
}
----------------------------------------------------------
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