From 6c9aaf406ad4dd7e5eb208a376def396a96a69d6 Mon Sep 17 00:00:00 2001 From: Dirk Hohndel Date: Fri, 11 Jul 2014 10:10:15 -0700 Subject: Planner: fix calculation when it is safe to surface We were comparing with a negative depth which apparently confused the algorithm. Fixes #611 Signed-off-by: Dirk Hohndel --- planner.c | 3 ++- qt-ui/profile/diveprofileitem.cpp | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/planner.c b/planner.c index fa81563f1..462030177 100644 --- a/planner.c +++ b/planner.c @@ -822,7 +822,6 @@ void plan(struct diveplan *diveplan, char **cached_datap, bool is_planner, bool if (depth <= 0) break; /* We are at the surface */ - if (gi >= 0 && stoplevels[stopidx] == gaschanges[gi].depth) { /* We have reached a gas change. * Record this in the dive plan */ @@ -849,6 +848,8 @@ void plan(struct diveplan *diveplan, char **cached_datap, bool is_planner, bool clear_to_ascend = true; while (trial_depth > stoplevels[stopidx]) { int deltad = ascend_velocity(trial_depth, avg_depth, bottom_time) * TIMESTEP; + if (deltad > trial_depth) /* don't test against depth above surface */ + deltad = trial_depth; tissue_tolerance = add_segment(depth_to_mbar(trial_depth, &displayed_dive) / 1000.0, &displayed_dive.cylinder[current_cylinder].gasmix, TIMESTEP, po2, &displayed_dive); diff --git a/qt-ui/profile/diveprofileitem.cpp b/qt-ui/profile/diveprofileitem.cpp index fda31cb12..78a87ade2 100644 --- a/qt-ui/profile/diveprofileitem.cpp +++ b/qt-ui/profile/diveprofileitem.cpp @@ -167,7 +167,7 @@ void DiveProfileItem::modelDataChanged(const QModelIndex &topLeft, const QModelI plot_data *entry = dataModel->data().entry + dataModel->rowCount() - 1; for (int i = dataModel->rowCount() - 1; i >= 0; i--, entry--) { int max = maxCeiling(i); - // Don't screem if we violate the ceiling by a few cm + // Don't scream if we violate the ceiling by a few cm if (entry->depth < max - 100) profileColor = QColor(Qt::red); } -- cgit v1.2.3-70-g09d2