- 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.
        Edward
DisplayImplJ2D 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
