smaller rework on elev and energy values
This commit is contained in:
parent
8a6579ef4d
commit
b7422c0ca7
2 changed files with 9 additions and 4 deletions
|
@ -350,8 +350,10 @@ public final class OsmTrack {
|
|||
float t0 = ourSize > 0 ? nodes.get(ourSize - 1).getTime() : 0;
|
||||
float e0 = ourSize > 0 ? nodes.get(ourSize - 1).getEnergy() : 0;
|
||||
for (i = 0; i < t.nodes.size(); i++) {
|
||||
OsmPathElement e = t.nodes.get(i);
|
||||
if (i == 0 && ourSize > 0 && nodes.get(ourSize - 1).getSElev() == Short.MIN_VALUE)
|
||||
nodes.get(ourSize - 1).setSElev(e.getSElev());
|
||||
if (i > 0 || ourSize == 0) {
|
||||
OsmPathElement e = t.nodes.get(i);
|
||||
e.setTime(e.getTime() + t0);
|
||||
e.setEnergy(e.getEnergy() + e0);
|
||||
nodes.add(e);
|
||||
|
|
|
@ -338,8 +338,9 @@ public class RoutingEngine extends Thread {
|
|||
}
|
||||
} else if (n.getSElev() == Short.MIN_VALUE && idx == track.nodes.size() - 1) {
|
||||
// fill at end
|
||||
startIdx = idx;
|
||||
for (int i = startIdx; i < track.nodes.size(); i++) {
|
||||
track.nodes.get(i).setSElev(startElev);
|
||||
track.nodes.get(i).setSElev(lastElev);
|
||||
}
|
||||
} else if (n.getSElev() == Short.MIN_VALUE) {
|
||||
if (lastPt != null)
|
||||
|
@ -474,6 +475,7 @@ public class RoutingEngine extends Thread {
|
|||
}
|
||||
}
|
||||
|
||||
OsmPath.seg = 1; // set segment counter
|
||||
for (int i = 0; i < matchedWaypoints.size() - 1; i++) {
|
||||
if (lastTracks[i] != null) {
|
||||
if (refTracks[i] == null) refTracks[i] = new OsmTrack();
|
||||
|
@ -786,9 +788,9 @@ public class RoutingEngine extends Thread {
|
|||
float addTime = (value / (speed_min / 3.6f));
|
||||
|
||||
double addEnergy = 0;
|
||||
if (key < ourSize - 1) {
|
||||
if (key > 0) {
|
||||
double GRAVITY = 9.81; // in meters per second^(-2)
|
||||
double incline = (t.nodes.get(key).getElev() - t.nodes.get(key + 1).getElev()) / value;
|
||||
double incline = (t.nodes.get(key - 1).getSElev() == Short.MIN_VALUE || t.nodes.get(key).getSElev() == Short.MIN_VALUE ? 0 : (t.nodes.get(key - 1).getElev() - t.nodes.get(key).getElev()) / value);
|
||||
double f_roll = routingContext.totalMass * GRAVITY * (routingContext.defaultC_r + incline);
|
||||
double spd = speed_min / 3.6;
|
||||
addEnergy = value * (routingContext.S_C_x * spd * spd + f_roll);
|
||||
|
@ -799,6 +801,7 @@ public class RoutingEngine extends Thread {
|
|||
n.setEnergy(n.getEnergy() + (float) addEnergy);
|
||||
}
|
||||
}
|
||||
t.energy = (int) t.nodes.get(t.nodes.size() - 1).getEnergy();
|
||||
|
||||
logInfo("track-length total = " + t.distance);
|
||||
logInfo("filtered ascend = " + t.ascend);
|
||||
|
|
Loading…
Reference in a new issue