Fixed RelativeTransform of azimuthal projections

This commit is contained in:
ClemensFischer 2026-01-28 09:52:11 +01:00
parent 8d25310b8e
commit 3922297e7b
12 changed files with 72 additions and 39 deletions

View file

@ -37,8 +37,9 @@ namespace MapControl.Projections
public override Matrix RelativeTransform(double latitude, double longitude)
{
var p = new AzimuthalProjection.ProjectedPoint(Center.Latitude, Center.Longitude, latitude, longitude);
(var scaleX, var scaleY) = p.RelativeScale(p.CosC, 1d); // p.149 (20-5), k == 1
return p.RelativeScale(p.CosC, 1d); // p.149 (20-5), k == 1
return RelativeTransform(latitude, longitude, scaleX, scaleY);
}
}
}

View file

@ -39,7 +39,7 @@ namespace MapControl.Projections
var p = new AzimuthalProjection.ProjectedPoint(Center.Latitude, Center.Longitude, latitude, longitude);
var k = 2d / (1d + p.CosC); // p.157 (21-4), k0 == 1
return p.RelativeScale(k, k);
return RelativeTransform(latitude, longitude, k, k);
}
}
}

View file

@ -23,7 +23,7 @@ namespace MapControl.Projections
public override Matrix RelativeTransform(double latitude, double longitude)
{
var k = PolarStereographicProjection.RelativeScale(Hemisphere.North, Wgs84Flattening, latitude);
var k = PolarStereographicProjection.RelativeScale(Hemisphere.North, Wgs84Flattening, 0.994, latitude);
return new Matrix(k, 0d, 0d, k, 0d, 0d);
}
@ -48,7 +48,7 @@ namespace MapControl.Projections
public override Matrix RelativeTransform(double latitude, double longitude)
{
var k = PolarStereographicProjection.RelativeScale(Hemisphere.South, Wgs84Flattening, latitude);
var k = PolarStereographicProjection.RelativeScale(Hemisphere.South, Wgs84Flattening, 0.994, latitude);
return new Matrix(k, 0d, 0d, k, 0d, 0d);
}