| 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(); |
|---|