Support training with Tacx TTS files:
TTS distance and gradient are honored meaning training
load should exactly match tacx. Ride altitude is recomputed
based on distance and gradient, so training work will
match The Tacx Experience and might not match reality.
When TTS file contains no location, altitude is still computed
from distance and gradient but will start from 0.
Gradient during training is interpolated from distance and
altitude so will change smoothly while summing perfectly
to the correct load.
The TTS Reader source was adapted from the WattzApp
Community Edition java source.
Highly recommended that 'Use Simulated Speed' option
is enabled when riding TTS files.
This change was only tested against a small number of
dvds that I own. I would appreciate feedback and problem
reports. I would especially appreciate anyone that can
compare this behavior against Tacx as I only tested with
my Wahoo Kickr.
Issues and Future work:
I guessed about how to set starting distance and might
have got it wrong.
TTS Files contain video synchronization data. Currently
this is ignored and rlv file must be specified. I've not
even looked at the video sync data and no idea if it is
better than the rlv.
There are data fields in the TTS that Ive not investigated
and they might contain useful info, for example a starting
altitude for rides that have no location info.
Other changes:
Fix numerical stability around zero in blinn and quadratic
solvers. Improve quadratic solver accuracy.
Fix issues with computing gradient from non-uniform
cubic splines.
RideFiles now record additional altitude accuracy.