Skip to content

Commit

Permalink
smaller rework on elev and energy values
Browse files Browse the repository at this point in the history
  • Loading branch information
afischerdev committed Apr 24, 2023
1 parent 8a6579e commit b7422c0
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 4 deletions.
4 changes: 3 additions & 1 deletion brouter-core/src/main/java/btools/router/OsmTrack.java
Expand Up @@ -350,8 +350,10 @@ public void appendTrack(OsmTrack t) {
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);
Expand Down
9 changes: 6 additions & 3 deletions brouter-core/src/main/java/btools/router/RoutingEngine.java
Expand Up @@ -338,8 +338,9 @@ private void postElevationCheck(OsmTrack track) {
}
} 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)
Expand Down Expand Up @@ -474,6 +475,7 @@ private OsmTrack tryFindTrack(OsmTrack[] refTracks, OsmTrack[] lastTracks) {
}
}

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();
Expand Down Expand Up @@ -786,9 +788,9 @@ private void recalcTrack(OsmTrack t) {
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);
Expand All @@ -799,6 +801,7 @@ private void recalcTrack(OsmTrack t) {
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);
Expand Down

0 comments on commit b7422c0

Please sign in to comment.