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 MicroIterable implements Iterable<MicroDataPoint> {
-class MicroSpeedIterable implements Iterable<Double> {
MicroData data;
- public Iterator<Double> iterator() {
- return new MicroSpeedIterator(data);
+ public Iterator<MicroDataPoint> iterator() {
+ return new MicroIterator(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 MicroAccelIterable implements Iterable<Double> {
- MicroData data;
-
- public Iterator<Double> iterator() {
- return new MicroAccelIterator(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;
}
f.write('\n');
}
+ public void export (Writer f) throws IOException {
+ PrintWriter pw = new PrintWriter(f);
+ pw.printf(" Time, Press, Height, Speed, Accel\n");
+ for (MicroDataPoint point : points()) {
+ pw.printf("%6.3f,%6.0f,%7.1f,%7.2f,%7.2f\n",
+ point.time, point.pressure, point.height, point.speed, point.accel);
+ }
+ }
+
public void set_name(String name) {
this.name = name;
}