public float length()
{
float totalLength = 0;
for (int i = 0; i < waypoints.Count - 1; ++i)
{
//find out how much relPos is covered by this segment
Vector3 start = referenceBody.GetWorldSurfacePosition(waypoints[i].latitude, waypoints[i].longitude, waypoints[i].altitude);
Vector3 end = referenceBody.GetWorldSurfacePosition(waypoints[i + 1].latitude, waypoints[i + 1].longitude, waypoints[i + 1].altitude);
totalLength += (end - start).magnitude;
}
return totalLength;
}