NASA World Wind

gov.nasa.worldwind.symbology.milstd2525.graphics
Class TriangleWavePositionIterator

java.lang.Object
  extended by gov.nasa.worldwind.symbology.milstd2525.graphics.TriangleWavePositionIterator
All Implemented Interfaces:
Iterator

public class TriangleWavePositionIterator
extends Object
implements Iterator

Iterator that computes the positions required to draw a triangle wave along a line specified by control positions. The generated wave looks like this:

           /\             /\         <--- Amplitude
          /  \           /  \
 ________/    \_________/    \_____
 ^            ^
 | Wave length|
 


Field Summary
protected  double amplitude
          Amplitude of the wave, in meters.
protected  Position firstPosition
          First position along the line.
protected  Globe globe
          Globe used to compute geographic positions.
protected  Angle halfWaveLength
          Wavelength, as a geographic angle.
protected  Position nextControlPosition
          Position of the next control point.
protected  Iterator<? extends Position> positions
          Control positions.
protected  int state
          Current state of the state machine.
protected static int STATE_FIRST
          Initial state.
protected static int STATE_LINE
          Drawing connecting line between waves.
protected static int STATE_TOOTH_PEAK
          At peak of wave.
protected static int STATE_WAVE_START
          About to draw wave.
protected  Position thisPosition
          Current position.
protected  double thisStep
          Distance (in meters) to the next wave start or end.
protected  Position waveEndPosition
          End position for the current wave.
 
Constructor Summary
TriangleWavePositionIterator(Iterable<? extends Position> positions, double waveLength, double amplitude, Globe globe)
          Create a new iterator to compute the positions of a triangle wave.
 
Method Summary
protected  Position computeNext()
          Compute the next position along the line, and transition the state machine to the next state (if appropriate).
 boolean hasNext()
          
 Position next()
          
 void remove()
          Not supported.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

amplitude

protected double amplitude
Amplitude of the wave, in meters.


firstPosition

protected Position firstPosition
First position along the line.


globe

protected Globe globe
Globe used to compute geographic positions.


halfWaveLength

protected Angle halfWaveLength
Wavelength, as a geographic angle.


nextControlPosition

protected Position nextControlPosition
Position of the next control point.


positions

protected Iterator<? extends Position> positions
Control positions.


state

protected int state
Current state of the state machine.


STATE_FIRST

protected static final int STATE_FIRST
Initial state.

See Also:
Constant Field Values

STATE_LINE

protected static final int STATE_LINE
Drawing connecting line between waves.

See Also:
Constant Field Values

STATE_TOOTH_PEAK

protected static final int STATE_TOOTH_PEAK
At peak of wave.

See Also:
Constant Field Values

STATE_WAVE_START

protected static final int STATE_WAVE_START
About to draw wave.

See Also:
Constant Field Values

thisPosition

protected Position thisPosition
Current position.


thisStep

protected double thisStep
Distance (in meters) to the next wave start or end.


waveEndPosition

protected Position waveEndPosition
End position for the current wave.

Constructor Detail

TriangleWavePositionIterator

public TriangleWavePositionIterator(Iterable<? extends Position> positions,
                                    double waveLength,
                                    double amplitude,
                                    Globe globe)
Create a new iterator to compute the positions of a triangle wave.

Parameters:
positions - Control positions for the triangle wave line.
waveLength - Distance (in meters) between waves.
amplitude - Amplitude (in meters) of the wave. This is the distance from the base line to the tip of each triangular wave.
globe - Globe used to compute geographic positions.
Method Detail

computeNext

protected Position computeNext()
Compute the next position along the line, and transition the state machine to the next state (if appropriate).

If the current state is STATE_LINE, this method returns either the next control point (if it is less than waveLength meters from the current position, or a position waveLength meters along the control line. The state machine will transition to STATE_WAVE_START only if the returned position is a full wavelength from the current position.

If the current state is STATE_WAVE_START, this method returns a position waveLength meters from the current position along the control line, and transitions to state STATE_WAVE_PEAK.

Returns:
next position along the line.

hasNext

public boolean hasNext()

Specified by:
hasNext in interface Iterator

next

public Position next()

Specified by:
next in interface Iterator

remove

public void remove()
Not supported.

Specified by:
remove in interface Iterator

NASA World Wind