summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Mikko Rasa <tdb@tdb.fi>2012-07-29 12:52:51 +0300
committerGravatar Mikko Rasa <tdb@tdb.fi>2012-07-31 21:12:19 +0300
commita5e822a4d6f742afe2b4b2e6a856af3063b5ffe1 (patch)
tree2d58dcaaf99b6ef21840b7d84f1f6879a47a2ce6
parent618a20ba5f2a9adc0e5a35117535f8eaa9fd34a4 (diff)
downloadsubsurface-a5e822a4d6f742afe2b4b2e6a856af3063b5ffe1.tar.gz
Improved depth info for dives without samples
This calculates a mean depth for the dive with a fixed ascent/descent rate and an assumption that all of the bottom time is at the maximum depth. It's not much, but it allows some derived values such as SAC to make more sense. The depth profile for such dives is now also generated with the same assumptions instead of putting the samples at fixed percentages of the dive duration. Signed-off-by: Mikko Rasa <tdb@tdb.fi>
-rw-r--r--dive.c5
-rw-r--r--profile.c7
2 files changed, 10 insertions, 2 deletions
diff --git a/dive.c b/dive.c
index 9f57aed58..36ee8e78c 100644
--- a/dive.c
+++ b/dive.c
@@ -451,7 +451,12 @@ struct dive *fixup_dive(struct dive *dive)
}
}
if (end < 0)
+ {
+ /* Assume an ascent/descent rate of 9 m/min */
+ int asc_desc_time = dive->maxdepth.mm*60/9000;
+ dive->meandepth.mm = dive->maxdepth.mm*(dive->duration.seconds-asc_desc_time)/dive->duration.seconds;
return dive;
+ }
update_duration(&dive->duration, end - start);
if (start != end)
diff --git a/profile.c b/profile.c
index 137ed6f88..614822809 100644
--- a/profile.c
+++ b/profile.c
@@ -1354,12 +1354,15 @@ void plot(struct graphics_context *gc, cairo_rectangle_int_t *drawing_area, stru
int nr = dive->samples;
if (!nr) {
+ /* The dive has no samples, so create a few fake ones. This assumes an
+ ascent/descent rate of 9 m/min, which is just below the limit for FAST. */
int duration = dive->duration.seconds;
int maxdepth = dive->maxdepth.mm;
+ int asc_desc_time = dive->maxdepth.mm*60/9000;
sample = fake;
- fake[1].time.seconds = duration * 0.05;
+ fake[1].time.seconds = asc_desc_time;
fake[1].depth.mm = maxdepth;
- fake[2].time.seconds = duration * 0.95;
+ fake[2].time.seconds = duration - asc_desc_time;
fake[2].depth.mm = maxdepth;
fake[3].time.seconds = duration * 1.00;
nr = 4;