Dear All,
Can UnionSet only accept unions of Linear2DSets with equal number of
elements in each direction, or have I done something wrong? The code below
works fine for
noPoints = 10
but fails for example for
noPoints = 11
import visad.*;
import visad.java2d.DisplayImplJ2D;
import java.rmi.RemoteException;
import javax.swing.*;
import java.awt.event.*;
public class Main {
public static void main(String[] args) throws VisADException,
RemoteException {
Main main = new Main();
main.run();
}
void run() throws VisADException, RemoteException {
RealType x = new RealType("x");
RealType y = new RealType("y");
RealTupleType xy = new RealTupleType(x,y);
RealType z = new RealType("z");
DataReferenceImpl ref = new DataReferenceImpl("ref");
DisplayImplJ2D display = new DisplayImplJ2D("display");
int noPoints = 11;
Linear2DSet domain1 = new Linear2DSet(xy,1.0,10.0,10,20.0,30.0,10);
Linear2DSet domain2 = new Linear2DSet(xy,20.0,40.0,noPoints,
50.0,60.0,10);
UnionSet union = new UnionSet(xy,new SampledSet[] { domain1, domain2 });
FlatField f = new FlatField(new FunctionType(xy,z), union);
int noSamples = 10*10+noPoints*10;
double[][] samples = new double[1][noSamples];
for(int i=0;i<noSamples;++i) {
samples[0][i] = (double) i*i;
}
f.setSamples(samples);
ref.setData(f);
display.addMap(new ScalarMap(x,Display.XAxis));
display.addMap(new ScalarMap(y,Display.YAxis));
display.addMap(new ScalarMap(z,Display.RGB));
display.addReference(ref);
JFrame frame = new JFrame("VisAD Test");
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {System.exit(0);}
});
frame.setSize(300,300);
frame.getContentPane().add(display.getComponent());
frame.show();
}
}
This produces:
java.lang.ArrayIndexOutOfBoundsException at
visad.java2d.VisADCanvasJ2D.render(VisADCanvasJ2D.java:955) at
visad.java2d.VisADCanvasJ2D.render(VisADCanvasJ2D.java:507) at
visad.java2d.VisADCanvasJ2D.render(VisADCanvasJ2D.java:507) at
visad.java2d.VisADCanvasJ2D.render(VisADCanvasJ2D.java:496) at
visad.java2d.VisADCanvasJ2D.render(VisADCanvasJ2D.java:507) at
visad.java2d.VisADCanvasJ2D.render(VisADCanvasJ2D.java:507) at
visad.java2d.VisADCanvasJ2D.paintComponent(VisADCanvasJ2D.java:392) at
visad.java2d.VisADCanvasJ2D.run(VisADCanvasJ2D.java:317) at
java.lang.Thread.run(Thread.java:484)
Regards,
Jakob
----------------------------------------------------------
Dr Jakob Svensson, Max Planck Institute for Plasma Physics
Boltzmannstrasse 2, D-85748 Garching, Germany
Tel +49-(0)89-32991786