List<PointLatLngAlt> getSRTMAltPath(List<PointLatLngAlt> list)
{
List<PointLatLngAlt> answer = new List<PointLatLngAlt>();
PointLatLngAlt last = null;
double disttotal = 0;
foreach (PointLatLngAlt loc in list)
{
if (loc == null)
continue;
if (last == null)
{
last = loc;
continue;
}
double dist = last.GetDistance(loc);
int points = (int) (dist/10) + 1;
double deltalat = (last.Lat - loc.Lat);
double deltalng = (last.Lng - loc.Lng);
double steplat = deltalat/points;
double steplng = deltalng/points;
PointLatLngAlt lastpnt = last;
for (int a = 0; a <= points; a++)
{
double lat = last.Lat - steplat*a;
double lng = last.Lng - steplng*a;
var newpoint = new PointLatLngAlt(lat, lng, srtm.getAltitude(lat, lng).alt, "");
double subdist = lastpnt.GetDistance(newpoint);
disttotal += subdist;
// srtm alts
list3.Add(disttotal, newpoint.Alt/CurrentState.multiplierdist);
// terrain alt
list4terrain.Add(disttotal, (newpoint.Alt - homealt + loc.Alt)/CurrentState.multiplierdist);
lastpnt = newpoint;
}
answer.Add(new PointLatLngAlt(loc.Lat, loc.Lng, srtm.getAltitude(loc.Lat, loc.Lng).alt, ""));
last = loc;
}
return answer;
}