Il metodo che avevo suggerito prima era un'approssimazione rozza. Il problema sta che guardando i dati salvati dal gps, i punti non sono equamente distanziati nel tempo. Da cui l'idea di calcolarsi la velocità fittizia per avere la distanza corretta, una volta fissato il time rate. Tuttavia ciò comporta necessariamente che le velocità siano scorrette, e quindi il il grafico altimetria vs tempo e il tempo totale (dato come somma degli intervallini di 5 secondi), pure scorretti.
La soluzione consiste nell'interpolare la curva (sempre crescente) distanza vs tempo agli intervallini giusti. Ovvero modificare non le velocità, ma gli intervallini di spazio, e in seguito calcolare le velocità.
E' più facile da fare che da spiegare, ma comunque ci provo.
Dal
garmin ricavi una sequenza progressiva di tempi (non gli intervalli)
e distanze, che indicizzo con i e chiamo (gt_i,gx_i).
Si vuole calcolare la sequenza
equivalente per il polar (pt_j,px_j), dove i pt_j sono dati da
pt_j=jdt, dove dt vale ad esempio 5 sec. Ovviamente l'indicizzazione è diversa. Dovrebbero esserci routine già fatte che individuano l'indice i e i+1
della sequenza per cui vale gt_i < jdt < gt_(i+1)<gt_(i+1)>
Altrimenti basta un ciclo che esce quando è verificata la disuguaglianza.
<gt_(i+1). altrimenti,="" visto="" curva="" monotona,="" basta="" fare="" un="" ciclo="" for="" partire="" dall="" inizio="" fino="" a="" che="" non="" è="" soddisfatta="" la="" disuguaglianza.=""> A questo punto va calcolato il valore della distanza da assegnare al punto
di ascissa pt_j=jdt, che sarà px_j=gx_i +v_i(pt_j-gt_i), dove v_i è la velocità media dell'intervallino (i, i+1): v_i=(gx_(i+1)-gx_i)/(gt_(i+1)-gt_i).
In questo modo si costruisce ordinatamente la sequenza (pt_j,px_j).
Analogamente va fatto per l'altimetria, e la sequenza delle elevazioni pa_j sarà data da pa_j=ga_i +va_i(pt_j-gt_i), dove va_i è la velocità ascensionale nel medesimo intervallino va_i=(ga_(i+1)-ga_i)/(gt_(i+1)-gt_i).
ga_i ovviamente è la sequenza di altitudini estratta dal garmin.
Poi bisogna fare la stessa procedura di prima, ma con la nuova sequenza, e si avrà
un file .hrm completo di tutto.
Ci vuole più a dirlo che a farlo.
Dato che non uso HRM, se mi spiegate meglio dove sta il problema posso inglobare la funzionalità in modo corretto.
</gt_(i+1).></gt_(i+1)>