import java.util.*;
import org.altusmetrum.AltosLib.*;
-abstract class MicroIterator implements Iterator<Double> {
+class MicroIterator implements Iterator<MicroDataPoint> {
int i;
MicroData data;
return i < data.pressures.length;
}
+ public MicroDataPoint next() {
+ return new MicroDataPoint(data, i++);
+ }
+
public MicroIterator (MicroData data) {
this.data = data;
i = 0;
}
}
-class MicroHeightIterator extends MicroIterator {
- public Double next() {
- return data.height(i++);
- }
-
- public MicroHeightIterator(MicroData data) {
- super(data);
- }
-}
-
-class MicroHeightIterable implements Iterable<Double> {
- MicroData data;
-
- public Iterator<Double> iterator() {
- return new MicroHeightIterator(data);
- }
-
- public MicroHeightIterable(MicroData data) {
- this.data = data;
- }
-}
-
-class MicroSpeedIterator extends MicroIterator {
- public Double next() {
- return data.speed(i++);
- }
- public MicroSpeedIterator(MicroData data) {
- super(data);
- }
-}
-
-class MicroSpeedIterable implements Iterable<Double> {
- MicroData data;
-
- public Iterator<Double> iterator() {
- return new MicroSpeedIterator(data);
- }
-
- public MicroSpeedIterable(MicroData data) {
- this.data = data;
- }
-}
-
-class MicroAccelIterator extends MicroIterator {
- public Double next() {
- return data.acceleration(i++);
- }
- public MicroAccelIterator(MicroData data) {
- super(data);
- }
-}
+class MicroIterable implements Iterable<MicroDataPoint> {
-class MicroAccelIterable implements Iterable<Double> {
MicroData data;
- public Iterator<Double> iterator() {
- return new MicroAccelIterator(data);
+ public Iterator<MicroDataPoint> iterator() {
+ return new MicroIterator(data);
}
- public MicroAccelIterable(MicroData data) {
+ public MicroIterable(MicroData data) {
this.data = data;
}
}
return AltosConvert.pressure_to_altitude(pressures[i]);
}
- public Iterable<Double> heights() {
- return new MicroHeightIterable(this);
- }
-
- public Iterable<Double> speeds() {
- return new MicroSpeedIterable(this);
- }
-
- public Iterable<Double> accels() {
- return new MicroAccelIterable(this);
+ public Iterable<MicroDataPoint> points() {
+ return new MicroIterable(this);
}
int fact(int n) {
return alt;
}
+ public double pressure(int i) {
+ return pressures[i];
+ }
+
public double height(int i) {
return altitude(i) - ground_altitude;
}