22.06.2015, 11:37
(20.06.2015, 20:25)Toni Reitz Wrote: Vielleicht ist brutale lineare Interpolation das einfachste:
[..]
Genau das passiert:
Code:
public static CompactCalendar intrapolateTime(NavigationPosition position, NavigationPosition predecessor, NavigationPosition successor) {
if (!predecessor.hasTime() || !successor.hasTime())
return null;
long timeDelta = abs(predecessor.calculateTime(successor));
Double distanceToPredecessor = predecessor.calculateDistance(position);
if (isEmpty(distanceToPredecessor))
return null;
Double distanceToSuccessor = position.calculateDistance(successor);
if (isEmpty(distanceToSuccessor))
return null;
Double distanceRatio = distanceToPredecessor / (distanceToPredecessor + distanceToSuccessor);
long time = (long) (predecessor.getTime().getTimeInMillis() + (double) timeDelta * distanceRatio);
return fromMillis(time);
}Und dann überleg mal, wenn position die 2. Position, predecessor die 1. Position und successor die letzte Position (und damit wieder die erste Position) Deines Tracks sind.
Es funktioniert, wenn Du dann irgendwo in der Mitte des Tracks noch einer Position einen Zeitstempel gibtst.
(20.06.2015, 20:25)Toni Reitz Wrote: Auf jeden Fall aber danke - ich findes es toll, das es so ein Tool wie den Routeconverter überhaupt gibt.
Das freut mich.
--
Christian
Christian
