+ if (pres_i >= 0)
+ {
+ min_pres = f->pres.data[pres_i].value;
+ height = cc_barometer_to_altitude(min_pres) -
+ cc_barometer_to_altitude(f->ground_pres);
+ fprintf(summary_file, "\tMax height: %9.2fm %9.2fft %9.2fs\n",
+ height, height * 100 / 2.54 / 12,
+ (f->pres.data[pres_i].time - boost_start) / 100.0);
+ }
+ }
+ if (cooked && detail_file) {
+ double max_height = 0;
+ int i;
+ double *times;
+
+ fprintf(detail_file, "%9s %9s %9s %9s\n",
+ "time", "height", "speed", "accel");
+ for (i = 0; i < cooked->pres_pos.num; i++) {
+ double time = (cooked->accel_accel.start + i * cooked->accel_accel.step - boost_start) / 100.0;
+ double accel = cooked->accel_accel.data[i];
+ double pos = cooked->pres_pos.data[i];
+ double speed;
+ if (cooked->pres_pos.start + cooked->pres_pos.step * i < apogee)
+ speed = cooked->accel_speed.data[i];
+ else
+ speed = cooked->pres_speed.data[i];
+ fprintf(detail_file, "%9.2f %9.2f %9.2f %9.2f\n",
+ time, pos, speed, accel);
+ }
+ }
+ if (cooked && plot_name) {
+ struct cc_perioddata *speed;
+ plsdev("svgcairo");
+ plsfnam(plot_name);
+#define PLOT_DPI 96
+ plspage(PLOT_DPI, PLOT_DPI, 8 * PLOT_DPI, 8 * PLOT_DPI, 0, 0);
+ plscolbg(0xff, 0xff, 0xff);
+ plscol0(1,0,0,0);
+ plstar(2, 3);
+ speed = merge_data(&cooked->accel_speed, &cooked->pres_speed, apogee);
+
+ plot_perioddata(&cooked->pres_pos, "meters", "Height", -1e10, 1e10);
+ plot_perioddata(&cooked->pres_pos, "meters", "Height", boost_start, apogee);
+ plot_perioddata(speed, "meters/second", "Speed", -1e10, 1e10);
+ plot_perioddata(speed, "meters/second", "Speed", boost_start, apogee);
+ plot_perioddata(&cooked->accel_accel, "meters/second²", "Acceleration", -1e10, 1e10);
+ plot_perioddata(&cooked->accel_accel, "meters/second²", "Acceleration", boost_start, apogee);
+ free(speed->data);
+ free(speed);
+ plend();