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>
This commit is contained in:
Mikko Rasa 2012-07-29 12:52:51 +03:00
parent 618a20ba5f
commit a5e822a4d6
2 changed files with 10 additions and 2 deletions

5
dive.c
View file

@ -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)

View file

@ -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;