From 94e8edf18b348ca6e92a2a57239db941079fbbc3 Mon Sep 17 00:00:00 2001 From: ClemensFischer Date: Tue, 20 Jan 2026 15:57:20 +0100 Subject: [PATCH] Rotated relative scale in AzimuthalEquidistantProjection --- MapControl/Shared/AzimuthalEquidistantProjection.cs | 4 +++- MapControl/Shared/OrthographicProjection.cs | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/MapControl/Shared/AzimuthalEquidistantProjection.cs b/MapControl/Shared/AzimuthalEquidistantProjection.cs index 1e6db43f..4002e5be 100644 --- a/MapControl/Shared/AzimuthalEquidistantProjection.cs +++ b/MapControl/Shared/AzimuthalEquidistantProjection.cs @@ -37,7 +37,9 @@ namespace MapControl k = c / Math.Sin(c); // p.195 (25-2) } - return new Matrix(k, 0d, 0d, k, 0d, 0d); + var scale = new Matrix(1d, 0d, 0d, k, 0d, 0d); // h == 1 + scale.Rotate(-Math.Atan2(p.Y, p.X) * 180d / Math.PI); + return scale; } public override Point? LocationToMap(double latitude, double longitude) diff --git a/MapControl/Shared/OrthographicProjection.cs b/MapControl/Shared/OrthographicProjection.cs index 3c7e401c..df2b50d3 100644 --- a/MapControl/Shared/OrthographicProjection.cs +++ b/MapControl/Shared/OrthographicProjection.cs @@ -31,7 +31,7 @@ namespace MapControl var p = GetProjectedPoint(latitude, longitude); var h = p.CosC; // p.149 (20-5) - var scale = new Matrix(h, 0d, 0d, 1d, 0d, 0d); + var scale = new Matrix(h, 0d, 0d, 1d, 0d, 0d); // k == 1 scale.Rotate(-Math.Atan2(p.Y, p.X) * 180d / Math.PI); return scale; }