- To: visad-list@xxxxxxxxxxxxx
- Subject: Problem with Simple Animation
- From: Edward Stanford <stanford@xxxxxxx>
- Date: Mon, 23 Oct 2000 14:27:39 -0400
I am trying to follow the pattern shown in SimpleAnimation.java to create
an animated display of my own data set, but I appear to be making a subtle
mistake in setting up my data structures.
Basically, I create two 2D FieldImpl's mapping ( (lat, lon) -> temp) ), thencreate a new FieldImpl mapping (time -> ( (lat, lon) -> temp) ). I use the setSample method to make my first 2D field correspond to time 0, and the second to time 1. Then I animate the result, and turn on stepping ( I think).
The first frame displays properly, and the legend in the lower right hand corner says 1 of 2, but the second frame doesn't ever appear.
Code is below: if anyone sees whatever obvious thing it is I've missed I'd appreciate it.
EdwardDisplayImplJ2D makeAnimationDisplay(FieldImpl displayField1, FieldImpl displayField2) throws VisADException, java.rmi.RemoteException
{ // get the FunctionType of the flatfield FunctionType myFuncType = (FunctionType)displayField1.getType(); RealType rangeType = (RealType) myFuncType.getRange(); RealTupleType domainType = (RealTupleType) myFuncType.getDomain(); RealType domainComponents[] = domainType.getRealComponents(); // create a new FieldImpl containing the two slices as alternate times RealType time = RealType.Time; RealTupleType timeTupleType = new RealTupleType(time); FunctionType animatedFuncType = new FunctionType(time, myFuncType); // fake up a time domain float timeSamples[][] = { {0, 1} };Gridded1DSet timeSet = new Gridded1DSet(RealType.Time, timeSamples, 2);
// fake up a Field FieldImpl displayField = new FieldImpl(animatedFuncType, timeSet); // add the first layer to the time stream double timeSample1[] = { (double) timeSamples[0][0] }; double timeSample2[] = { (double) timeSamples[0][1] }; RealTuple time1 = new RealTuple(timeTupleType, timeSample1); RealTuple time2 = new RealTuple(timeTupleType, timeSample2); displayField.setSample(time1, displayField1); displayField.setSample(time2, displayField2); // check the function type FunctionType seqType = (FunctionType) displayField.getType(); RealTupleType testDomainType = seqType.getDomain(); RealType indexType = (RealType) testDomainType.getComponent(0); Set domainSet = (Gridded1DSet) displayField.getDomainSet(); // create the display and the scales DisplayImplJ2D display = new DisplayImplJ2D("myDisplay");GraphicsModeControl dispGMC = (GraphicsModeControl) display.getGraphicsModeControl();
dispGMC.setScaleEnable(true);AnimationControl animC = new AnimationControlJ2D(display, time);
animC.setOn(true); //animC.setStep(1); animC.setDirection(true);ScalarMap colMap = new ScalarMap( domainComponents[1], Display.XAxis ); ScalarMap rowMap = new ScalarMap( domainComponents[0], Display.YAxis );
ScalarMap pixMap = new ScalarMap( rangeType, Display.RGB ); ScalarMap animMap = new ScalarMap( indexType , Display.Animation); // Add maps to display display.addMap( colMap ); display.addMap( rowMap ); display.addMap( pixMap ); display.addMap( animMap ); // create data reference DataReferenceImpl dataReference = new DataReferenceImpl("displayRef"); dataReference.setData(displayField); // add reference to display display.addReference( dataReference); return display; }
- Follow-Ups:
- Re: Problem with Simple Animation
- From: Doug Lindholm
- Re: Problem with Simple Animation
- References:
- problem with DisplayPanelJ3D
- From: Vladimir Altuna
- Re: problem with DisplayPanelJ3D
- From: Bill Hibbard
- problem with DisplayPanelJ3D