mirror of
https://github.com/azaion/satellite-provider.git
synced 2026-04-22 09:16:39 +00:00
route in progress, region stitching is disabled by default
This commit is contained in:
@@ -83,4 +83,39 @@ public static class GeoUtils
|
||||
|
||||
return (minLat, maxLat, minLon, maxLon);
|
||||
}
|
||||
|
||||
public static List<GeoPoint> CalculateIntermediatePoints(GeoPoint start, GeoPoint end, double maxSpacingMeters)
|
||||
{
|
||||
var direction = start.DirectionTo(end);
|
||||
var distance = direction.Distance;
|
||||
|
||||
if (distance <= maxSpacingMeters)
|
||||
{
|
||||
return new List<GeoPoint>();
|
||||
}
|
||||
|
||||
var numSegments = (int)Math.Ceiling(distance / maxSpacingMeters);
|
||||
var actualSpacing = distance / numSegments;
|
||||
|
||||
var intermediatePoints = new List<GeoPoint>();
|
||||
|
||||
for (int i = 1; i < numSegments; i++)
|
||||
{
|
||||
var segmentDistance = actualSpacing * i;
|
||||
var intermediateDirection = new Direction
|
||||
{
|
||||
Distance = segmentDistance,
|
||||
Azimuth = direction.Azimuth
|
||||
};
|
||||
var intermediatePoint = start.GoDirection(intermediateDirection);
|
||||
intermediatePoints.Add(intermediatePoint);
|
||||
}
|
||||
|
||||
return intermediatePoints;
|
||||
}
|
||||
|
||||
public static double CalculateDistance(GeoPoint p1, GeoPoint p2)
|
||||
{
|
||||
return p1.DirectionTo(p2).Distance;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user