## visad.bom
Class CollectiveBarbManipulation

    java.lang.Object
      visad.bom.CollectiveBarbManipulation

public class CollectiveBarbManipulation
extends Object

CollectiveBarbManipulation is the VisAD class for manipulation of collections of wind barbs

Nested Class Summary
`(package private) class` `CollectiveBarbManipulation.AnimationControlListener`
`(package private) class` `CollectiveBarbManipulation.BarbMonitor`
`(package private) class` `CollectiveBarbManipulation.BarbMonitor2`
`(package private) class` `CollectiveBarbManipulation.CBarbManipulationRendererJ3D`
`(package private) class` `CollectiveBarbManipulation.CSwellManipulationRendererJ3D`
`(package private) class` `CollectiveBarbManipulation.Releaser`
`(package private) class` `CollectiveBarbManipulation.Stepper`
`(package private) class` `CollectiveBarbManipulation.WindMonitor`

Constructor Summary

`CollectiveBarbManipulation(FieldImpl wf, DisplayImplJ3D d1, DisplayImplJ3D d2, ConstantMap[] cms, boolean abs, float id, float od, float it, float ot, int sta, boolean need_monitor, boolean brbs, boolean fs, boolean kts, boolean dz, double[] inner_circle_color, int inner_circle_width, double[] outer_circle_color, int outer_circle_width)`
wf should have MathType: (station_index -> (Time -> tuple)) where tuple is flat [e.g., (Latitude, Longitude, (flow_dir, flow_speed))] and must include RealTypes Latitude and Longitude plus RealTypes mapped to Flow1Azimuth and Flow1Radial, or to Flow2Azimuth and Flow2Radial, in the DisplayImplJ3Ds d1 and d2 (unless they are not null); d1 must have Time mapped to Animation, and d2 must not; abs indicates absolute or relative value adjustment id and od are inner and outer distances in meters it and ot are inner and outer times in seconds influence is 1.0 inside inner, 0.0 outside outer and linear between distance and time influences multiply; cms are ConstantMap's used for rendering barbs each time the user clicks the right mouse button to manipulate a wind barb, the "reference" values for all wind barbs are set - thus repeatedly adjusting the same barb will magnify its influence over its neighbors; sta is index of station for display2; need_monitor is true if wf might be changed externally during manipulation brbs is true to indicate Barb*RendererJ3D, false to indicate Swell*RendererJ3D fs is true to indicate that d2 should switch to whatever station is being manipulated kts is false to indicate no m/s to knots conversion in wind barb renderers dz is true to indicate to use DiscoverableZoom inner_circle_color is array of RGB colors for an inner circle of influence, or null for no inner circles inner_circle_width is the line width for the inner circle outer_circle_color is array of RGB colors for an outer circle of influence, or null for no outer circles outer_circle_width is the line width for the outer circle

Method Summary
`void` `addStation(FlatField station)`
`void` `addStation(float lat, float lon)` construct new wind station at (lat, lon) with initial winds = 0
`(package private) void` `circleEnable()`
`FieldImpl` `endManipulation()` called by the application to end manipulation; returns the final wind field
`DataRenderer[]` `getManipulationRenderers()`
`DataRenderer[]` `getManipulationRenderers2()`
`static void` `main(String[] args)`
`(package private) void` `minusAngle()`
`(package private) void` `minusSpeed()`
`(package private) void` `nextWind()`
`(package private) void` `plusAngle()`
`(package private) void` `plusSpeed()`
`(package private) void` `previousWind()`
`void` `release()`
`void` `setCollectiveCurve(boolean abs, DataReference r, float it, float ot)` set a DataReference to a curve (typically from a CurveManipulationRendererJ3D) to replace distance parameters; also set time parameters

`void`

`setCollectiveParameters(boolean abs, float id, float od, float it, float ot)`
set values that govern collective barb adjustment and disable any DataReference to a spatial curve; abs indicates absolute or relative value adjustment id and od are inner and outer distances in meters it and ot are inner and outer times in seconds influence is 1.0 inside inner, 0.0 outside outer and linear between distance and time influences multiply

`void` `setCollectiveTimeParameters(boolean abs, float it, float ot)` set values that govern collective barb adjustment but don't change spatial parameters or curve_ref; abs indicates absolute or relative value adjustment it and ot are inner and outer times in seconds influence is 1.0 inside inner, 0.0 outside outer and linear between distance and time influences multiply
`void` `setStation(int sta)` called by the application to select which station is selected in display2
`void` `setTimeDir(int dir)` set value that governs whether collective changes are propagated only forward in time (dir > 0), only backward (dir < 0), or both (dir == 0)

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### CollectiveBarbManipulation

    public CollectiveBarbManipulation(FieldImpl wf,
                                      DisplayImplJ3D d1,
                                      DisplayImplJ3D d2,
                                      ConstantMap[] cms,
                                      boolean abs,
                                      float id,
                                      float od,
                                      float it,
                                      float ot,
                                      int sta,
                                      boolean need_monitor,
                                      boolean brbs,
                                      boolean fs,
                                      boolean kts,
                                      boolean dz,
                                      double[] inner_circle_color,
                                      int inner_circle_width,
                                      double[] outer_circle_color,
                                      int outer_circle_width)
                               throws VisADException,
                                      RemoteException

  wf should have MathType: (station_index -> (Time -> tuple)) where tuple is flat [e.g., (Latitude, Longitude, (flow_dir, flow_speed))] and must include RealTypes Latitude and Longitude plus RealTypes mapped to Flow1Azimuth and Flow1Radial, or to Flow2Azimuth and Flow2Radial, in the DisplayImplJ3Ds d1 and d2 (unless they are not null); d1 must have Time mapped to Animation, and d2 must not; abs indicates absolute or relative value adjustment id and od are inner and outer distances in meters it and ot are inner and outer times in seconds influence is 1.0 inside inner, 0.0 outside outer and linear between distance and time influences multiply; cms are ConstantMap's used for rendering barbs each time the user clicks the right mouse button to manipulate a wind barb, the "reference" values for all wind barbs are set - thus repeatedly adjusting the same barb will magnify its influence over its neighbors; sta is index of station for display2; need_monitor is true if wf might be changed externally during manipulation brbs is true to indicate Barb*RendererJ3D, false to indicate Swell*RendererJ3D fs is true to indicate that d2 should switch to whatever station is being manipulated kts is false to indicate no m/s to knots conversion in wind barb renderers dz is true to indicate to use DiscoverableZoom inner_circle_color is array of RGB colors for an inner circle of influence, or null for no inner circles inner_circle_width is the line width for the inner circle outer_circle_color is array of RGB colors for an outer circle of influence, or null for no outer circles outer_circle_width is the line width for the outer circle

Method Detail

### addStation

    public void addStation(float lat,
                           float lon)
                    throws VisADException,
                           RemoteException

  construct new wind station at (lat, lon) with initial winds = 0

  Throws:
    `VisADException`
    `RemoteException`

### addStation

    public void addStation(FlatField station)
                    throws VisADException,
                           RemoteException

  Throws:
    `VisADException`
    `RemoteException`

### setCollectiveParameters

    public void setCollectiveParameters(boolean abs,
                                        float id,
                                        float od,
                                        float it,
                                        float ot)
                                 throws VisADException,
                                        RemoteException

  set values that govern collective barb adjustment and disable any DataReference to a spatial curve; abs indicates absolute or relative value adjustment id and od are inner and outer distances in meters it and ot are inner and outer times in seconds influence is 1.0 inside inner, 0.0 outside outer and linear between distance and time influences multiply

  Throws:
    `VisADException`
    `RemoteException`

### setCollectiveTimeParameters

    public void setCollectiveTimeParameters(boolean abs,
                                            float it,
                                            float ot)
                                     throws VisADException,
                                            RemoteException

  set values that govern collective barb adjustment but don't change spatial parameters or curve_ref; abs indicates absolute or relative value adjustment it and ot are inner and outer times in seconds influence is 1.0 inside inner, 0.0 outside outer and linear between distance and time influences multiply

  Throws:
    `VisADException`
    `RemoteException`

### setTimeDir

    public void setTimeDir(int dir)

  set value that governs whether collective changes are propagated only forward in time (dir > 0), only backward (dir < 0), or both (dir == 0)

### setCollectiveCurve

    public void setCollectiveCurve(boolean abs,
                                   DataReference r,
                                   float it,
                                   float ot)
                            throws VisADException,
                                   RemoteException

  set a DataReference to a curve (typically from a CurveManipulationRendererJ3D) to replace distance parameters; also set time parameters

  Throws:
    `VisADException`
    `RemoteException`

### setStation

    public void setStation(int sta)
                    throws VisADException,
                           RemoteException

  called by the application to select which station is selected in display2

  Throws:
    `VisADException`
    `RemoteException`

### getManipulationRenderers

    public DataRenderer[] getManipulationRenderers()

### getManipulationRenderers2

    public DataRenderer[] getManipulationRenderers2()

### endManipulation

    public FieldImpl endManipulation()
                              throws VisADException,
                                     RemoteException

  called by the application to end manipulation; returns the final wind field

  Throws:
    `VisADException`
    `RemoteException`

### circleEnable

    void circleEnable()

### release

    public void release()

### plusAngle

    void plusAngle()
             throws VisADException,
                    RemoteException

  Throws:
    `VisADException`
    `RemoteException`

### minusAngle

    void minusAngle()
              throws VisADException,
                     RemoteException

  Throws:
    `VisADException`
    `RemoteException`

### plusSpeed

    void plusSpeed()
             throws VisADException,
                    RemoteException

  Throws:
    `VisADException`
    `RemoteException`

### minusSpeed

    void minusSpeed()
              throws VisADException,
                     RemoteException

  Throws:
    `VisADException`
    `RemoteException`

### nextWind

    void nextWind()

### previousWind

    void previousWind()

### main

    public static void main(String[] args)
                     throws VisADException,
                            RemoteException

  Throws:
    `VisADException`
    `RemoteException`