| 1 |
Index: C:/Projects/bbTracker/stable/0412/bbtracker_common/src/org/bbtracker/Track.java |
|---|
| 2 |
=================================================================== |
|---|
| 3 |
--- C:/Projects/bbTracker/stable/0412/bbtracker_common/src/org/bbtracker/Track.java (revision 109) |
|---|
| 4 |
+++ C:/Projects/bbTracker/stable/0412/bbtracker_common/src/org/bbtracker/Track.java (working copy) |
|---|
| 5 |
@@ -42,10 +42,19 @@ |
|---|
| 6 |
private transient double maxLongitude = Double.NEGATIVE_INFINITY; |
|---|
| 7 |
|
|---|
| 8 |
private transient float maxSpeed = Float.NaN; |
|---|
| 9 |
+ |
|---|
| 10 |
+ private transient float totalSpeed = 0, totalMovingSpeed, movingPoints = 0; |
|---|
| 11 |
|
|---|
| 12 |
private transient float minElevation = Float.NaN; |
|---|
| 13 |
|
|---|
| 14 |
private transient float maxElevation = Float.NaN; |
|---|
| 15 |
+ |
|---|
| 16 |
+ private transient float lastElevation = Float.NaN; |
|---|
| 17 |
+ |
|---|
| 18 |
+ private transient float currentGain = Float.NaN; |
|---|
| 19 |
+ |
|---|
| 20 |
+ private transient float totalGain = Float.NaN; |
|---|
| 21 |
+ |
|---|
| 22 |
|
|---|
| 23 |
public Track(final String name) { |
|---|
| 24 |
this.name = name; |
|---|
| 25 |
@@ -114,6 +123,10 @@ |
|---|
| 26 |
return segments.elements(); |
|---|
| 27 |
} |
|---|
| 28 |
|
|---|
| 29 |
+ public float getTotalSpeed() { |
|---|
| 30 |
+ return totalSpeed; |
|---|
| 31 |
+ } |
|---|
| 32 |
+ |
|---|
| 33 |
public double getMaxLatitude() { |
|---|
| 34 |
return maxLatitude; |
|---|
| 35 |
} |
|---|
| 36 |
@@ -138,6 +151,27 @@ |
|---|
| 37 |
} |
|---|
| 38 |
return length; |
|---|
| 39 |
} |
|---|
| 40 |
+ |
|---|
| 41 |
+ public float getAvgSpeed(){ |
|---|
| 42 |
+ if (totalSpeed == 0){ |
|---|
| 43 |
+ return Float.NaN; |
|---|
| 44 |
+ }else { |
|---|
| 45 |
+ return totalSpeed/pointCount; |
|---|
| 46 |
+ } |
|---|
| 47 |
+ } |
|---|
| 48 |
+ |
|---|
| 49 |
+ public float getAvgMovingSpeed(){ |
|---|
| 50 |
+ if (totalMovingSpeed == 0) { |
|---|
| 51 |
+ return Float.NaN; |
|---|
| 52 |
+ } else { |
|---|
| 53 |
+ return totalMovingSpeed/movingPoints; |
|---|
| 54 |
+ } |
|---|
| 55 |
+ } |
|---|
| 56 |
+ |
|---|
| 57 |
+ public float getElevationGain(){ |
|---|
| 58 |
+ return totalGain; |
|---|
| 59 |
+ } |
|---|
| 60 |
+ //End Added 2007 SIB |
|---|
| 61 |
|
|---|
| 62 |
public float getMaxSpeed() { |
|---|
| 63 |
return maxSpeed; |
|---|
| 64 |
@@ -198,12 +232,32 @@ |
|---|
| 65 |
if (Float.isNaN(minElevation) || elevation < minElevation) { |
|---|
| 66 |
minElevation = elevation; |
|---|
| 67 |
} |
|---|
| 68 |
+ //Added 2007 SIB |
|---|
| 69 |
if (Float.isNaN(maxElevation) || elevation > maxElevation) { |
|---|
| 70 |
- maxElevation = elevation; |
|---|
| 71 |
+ maxElevation = elevation; |
|---|
| 72 |
} |
|---|
| 73 |
- |
|---|
| 74 |
+ if (Float.isNaN(totalGain)){ |
|---|
| 75 |
+ totalGain = 0; |
|---|
| 76 |
+ lastElevation = elevation; |
|---|
| 77 |
+ } |
|---|
| 78 |
+ if (!Float.isNaN(totalGain)) { |
|---|
| 79 |
+ if (elevation > lastElevation){ |
|---|
| 80 |
+ currentGain = elevation - lastElevation; |
|---|
| 81 |
+ totalGain += currentGain; |
|---|
| 82 |
+ lastElevation = elevation; |
|---|
| 83 |
+ } else { |
|---|
| 84 |
+ lastElevation = elevation; |
|---|
| 85 |
+ } |
|---|
| 86 |
+ } |
|---|
| 87 |
} |
|---|
| 88 |
- |
|---|
| 89 |
+ if (!Float.isNaN(speed)) { |
|---|
| 90 |
+ totalSpeed += speed; |
|---|
| 91 |
+ } |
|---|
| 92 |
+ if (!Float.isNaN(speed) && speed > 0) { |
|---|
| 93 |
+ totalMovingSpeed = totalMovingSpeed + speed; |
|---|
| 94 |
+ movingPoints++; |
|---|
| 95 |
+ } |
|---|
| 96 |
+ //End Added 2007 SIB |
|---|
| 97 |
} |
|---|
| 98 |
|
|---|
| 99 |
public TrackSegment newSegment() { |
|---|
| 100 |
@@ -218,6 +272,7 @@ |
|---|
| 101 |
return newSegment; |
|---|
| 102 |
} |
|---|
| 103 |
|
|---|
| 104 |
+ |
|---|
| 105 |
private static final int streamVersion = 1; |
|---|
| 106 |
|
|---|
| 107 |
public void writeToStream(final DataOutputStream out) throws IOException { |
|---|
| 108 |
Index: C:/Projects/bbTracker/stable/0412/bbtracker_common/src/org/bbtracker/TrackSegment.java |
|---|
| 109 |
=================================================================== |
|---|
| 110 |
--- C:/Projects/bbTracker/stable/0412/bbtracker_common/src/org/bbtracker/TrackSegment.java (revision 109) |
|---|
| 111 |
+++ C:/Projects/bbTracker/stable/0412/bbtracker_common/src/org/bbtracker/TrackSegment.java (working copy) |
|---|
| 112 |
@@ -84,7 +84,7 @@ |
|---|
| 113 |
public double getLength() { |
|---|
| 114 |
return length; |
|---|
| 115 |
} |
|---|
| 116 |
- |
|---|
| 117 |
+ |
|---|
| 118 |
public Enumeration getPoints() { |
|---|
| 119 |
return points.elements(); |
|---|
| 120 |
} |
|---|
| 121 |
Index: C:/Projects/bbTracker/stable/0412/bbtracker_common/src/org/bbtracker/UnitConverter.java |
|---|
| 122 |
=================================================================== |
|---|
| 123 |
--- C:/Projects/bbTracker/stable/0412/bbtracker_common/src/org/bbtracker/UnitConverter.java (revision 109) |
|---|
| 124 |
+++ C:/Projects/bbTracker/stable/0412/bbtracker_common/src/org/bbtracker/UnitConverter.java (working copy) |
|---|
| 125 |
@@ -43,7 +43,11 @@ |
|---|
| 126 |
* @return a human readable String containing the distance including a unit. |
|---|
| 127 |
*/ |
|---|
| 128 |
public abstract String distanceToString(final double distance); |
|---|
| 129 |
- |
|---|
| 130 |
+ |
|---|
| 131 |
+// public abstract String paceToString(final double length, final long time); |
|---|
| 132 |
+ |
|---|
| 133 |
+ public abstract String paceToString(final float speed); |
|---|
| 134 |
+ |
|---|
| 135 |
public abstract ScaleConfiguration getScaleDistance(final double availableMeter); |
|---|
| 136 |
|
|---|
| 137 |
public abstract ScaleConfiguration getScaleElevation(final int min, final int max); |
|---|
| 138 |
Index: C:/Projects/bbTracker/stable/0412/bbtracker_common/src/org/bbtracker/ImperialUnitConverter.java |
|---|
| 139 |
=================================================================== |
|---|
| 140 |
--- C:/Projects/bbTracker/stable/0412/bbtracker_common/src/org/bbtracker/ImperialUnitConverter.java (revision 109) |
|---|
| 141 |
+++ C:/Projects/bbTracker/stable/0412/bbtracker_common/src/org/bbtracker/ImperialUnitConverter.java (working copy) |
|---|
| 142 |
@@ -54,6 +54,26 @@ |
|---|
| 143 |
return Utils.doubleToString(miles, false) + "mi"; |
|---|
| 144 |
} |
|---|
| 145 |
} |
|---|
| 146 |
+ |
|---|
| 147 |
+// public String paceToString(final double length, final long time) { |
|---|
| 148 |
+// if (Double.isNaN(length)) { |
|---|
| 149 |
+// return "-min/mi"; |
|---|
| 150 |
+// } |
|---|
| 151 |
+// final double miles = length * METER_TO_MILE_FACTOR; |
|---|
| 152 |
+// final double minutes = (double)time/60000; |
|---|
| 153 |
+// final double pace = minutes/miles; |
|---|
| 154 |
+// return Utils.doubleToString(pace, false) + "min/mi"; |
|---|
| 155 |
+// } |
|---|
| 156 |
+ |
|---|
| 157 |
+ public String paceToString(final float speed) { |
|---|
| 158 |
+ if (Float.isNaN(speed)) { |
|---|
| 159 |
+ return "-min/mi"; |
|---|
| 160 |
+ } |
|---|
| 161 |
+ final float mph = speed * MS_TO_MPH_FACTOR; |
|---|
| 162 |
+ final float pace = 60/mph; |
|---|
| 163 |
+ return Utils.floatToString(pace, false) + "min/mi"; |
|---|
| 164 |
+ |
|---|
| 165 |
+ } |
|---|
| 166 |
|
|---|
| 167 |
public ScaleConfiguration getScaleDistance(final double lengthInMeter) { |
|---|
| 168 |
final double lengthInFoot = lengthInMeter * METER_TO_FOOT_FACTOR; |
|---|
| 169 |
Index: C:/Projects/bbTracker/stable/0412/bbtracker_common/src/org/bbtracker/MetricUnitConverter.java |
|---|
| 170 |
=================================================================== |
|---|
| 171 |
--- C:/Projects/bbTracker/stable/0412/bbtracker_common/src/org/bbtracker/MetricUnitConverter.java (revision 109) |
|---|
| 172 |
+++ C:/Projects/bbTracker/stable/0412/bbtracker_common/src/org/bbtracker/MetricUnitConverter.java (working copy) |
|---|
| 173 |
@@ -47,7 +47,26 @@ |
|---|
| 174 |
return Utils.doubleToString(length / 1000, false) + "km"; |
|---|
| 175 |
} |
|---|
| 176 |
} |
|---|
| 177 |
- |
|---|
| 178 |
+ |
|---|
| 179 |
+// public String paceToString(final double length, final long time) { |
|---|
| 180 |
+// if (Double.isNaN(length)) { |
|---|
| 181 |
+// return "-min/km"; |
|---|
| 182 |
+// } |
|---|
| 183 |
+// final double km = length/1000; |
|---|
| 184 |
+// final double minutes = (double)time/60000; |
|---|
| 185 |
+// final double pace = minutes/km; |
|---|
| 186 |
+// return Utils.doubleToString(pace, false) + "min/km"; |
|---|
| 187 |
+// } |
|---|
| 188 |
+ |
|---|
| 189 |
+ public String paceToString(final float speed) { |
|---|
| 190 |
+ if (Float.isNaN(speed)) { |
|---|
| 191 |
+ return "-min/km"; |
|---|
| 192 |
+ } |
|---|
| 193 |
+ final float value = speed * MS_TO_KMH_FACTOR; |
|---|
| 194 |
+ final float pace = 60/value; |
|---|
| 195 |
+ return Utils.floatToString(pace, false) + "min/km"; |
|---|
| 196 |
+ } |
|---|
| 197 |
+ |
|---|
| 198 |
public ScaleConfiguration getScaleDistance(final double lengthInMeter) { |
|---|
| 199 |
final int scaleSize = getRoundScaleSize((int) lengthInMeter); |
|---|
| 200 |
final ScaleConfiguration conf = new ScaleConfiguration(); |
|---|