mirror of
https://github.com/azaion/satellite-provider.git
synced 2026-04-22 22:06:39 +00:00
a7a645c7ab
add tests
32 lines
938 B
C#
32 lines
938 B
C#
namespace SatelliteProvider.Common.DTO;
|
|
|
|
public class GeoPoint
|
|
{
|
|
const double PRECISION_TOLERANCE = 0.00005;
|
|
public double Lat { get; }
|
|
public double Lon { get; }
|
|
|
|
public GeoPoint() { }
|
|
|
|
public GeoPoint(double lat, double lon)
|
|
{
|
|
Lat = lat;
|
|
Lon = lon;
|
|
}
|
|
|
|
public override string ToString() => $"{Lat:F4}, {Lon:F4}";
|
|
|
|
public override bool Equals(object? obj)
|
|
{
|
|
if (obj is not GeoPoint point) return false;
|
|
return ReferenceEquals(this, obj) || Equals(point);
|
|
}
|
|
|
|
private bool Equals(GeoPoint point) =>
|
|
Math.Abs(Lat - point.Lat) < PRECISION_TOLERANCE && Math.Abs(Lon - point.Lon) < PRECISION_TOLERANCE;
|
|
|
|
public override int GetHashCode() => HashCode.Combine(Lat, Lon);
|
|
|
|
public static bool operator ==(GeoPoint left, GeoPoint right) => Equals(left, right);
|
|
public static bool operator !=(GeoPoint left, GeoPoint right) => !Equals(left, right);
|
|
} |