public class TriangleWavePositionIterator
extends java.lang.Object
implements java.util.Iterator
/\ /\ <--- Amplitude
/ \ / \
________/ \_________/ \_____
^ ^
| Wave length|
Modifier and Type | Field and Description |
---|---|
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 java.util.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 and Description |
---|
TriangleWavePositionIterator(java.lang.Iterable<? extends Position> positions,
double waveLength,
double amplitude,
Globe globe)
Create a new iterator to compute the positions of a triangle wave.
|
Modifier and Type | Method and Description |
---|---|
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.
|
protected double amplitude
protected Position firstPosition
protected Globe globe
protected Angle halfWaveLength
protected Position nextControlPosition
protected java.util.Iterator<? extends Position> positions
protected int state
protected static final int STATE_FIRST
protected static final int STATE_LINE
protected static final int STATE_TOOTH_PEAK
protected static final int STATE_WAVE_START
protected Position thisPosition
protected double thisStep
protected Position waveEndPosition
public TriangleWavePositionIterator(java.lang.Iterable<? extends Position> positions, double waveLength, double amplitude, Globe globe)
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.protected Position computeNext()
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.
public boolean hasNext()
hasNext
in interface java.util.Iterator
public Position next()
next
in interface java.util.Iterator
public void remove()
remove
in interface java.util.Iterator