update scaling methode, maar uiteindelijk zijn voor bijna alle landen minimum gewoon 0, wat raar is, mss rounding error?

This commit is contained in:
BuildTools
2020-08-06 14:07:48 +02:00
parent ee216f07db
commit 6fca4f27cc
8 changed files with 8 additions and 10 deletions

View File

@@ -34,8 +34,8 @@ namespace Logica
//oude schaalmethodes //oude schaalmethodes
public PolygonPunten ScalePolygon(PolygonPunten polygon, double scaleX, double scaleY, double offsetX = 0, double offsetY = 0) public PolygonPunten ScalePolygon(PolygonPunten polygon, double scaleX, double scaleY, double offsetX = 0, double offsetY = 0)
{ {
double maxX = polygon.MaximumX - polygon.MinimumX; double maxX = polygon.MaximumX;
double maxY = polygon.MaximumY - polygon.MinimumY; double maxY = polygon.MaximumY;
double minX = polygon.MinimumX; double minX = polygon.MinimumX;
double minY = polygon.MinimumY; double minY = polygon.MinimumY;
List<Punt> returnWaarde = new List<Punt>(); List<Punt> returnWaarde = new List<Punt>();
@@ -62,11 +62,11 @@ namespace Logica
private static Punt ScalePoint(double scaleX, double scaleY, Punt punt, double maxX = 1, double maxY = 1, double offsetX = 0, double private static Punt ScalePoint(double scaleX, double scaleY, Punt punt, double maxX = 1, double maxY = 1, double offsetX = 0, double
offsetY = 0, double minX = 0, double minY = 0) offsetY = 0, double minX = 0, double minY = 0)
{ {
double x = punt.X - minX; double x = punt.X;
x /= maxX; x /= maxX;
x *= scaleX; x *= scaleX;
x += offsetX; x += offsetX;
double y = punt.Y - minY; double y = punt.Y;
y /= maxY; y /= maxY;
y *= scaleY; y *= scaleY;
y += offsetY; y += offsetY;
@@ -75,12 +75,10 @@ namespace Logica
public MultiPolygonPunten ScaleMultiPolygon(MultiPolygonPunten multiPolygon, double scaleX, double scaleY, double offsetX = 0, double offsetY = 0) public MultiPolygonPunten ScaleMultiPolygon(MultiPolygonPunten multiPolygon, double scaleX, double scaleY, double offsetX = 0, double offsetY = 0)
{ {
double maxX = multiPolygon.MaximumX - multiPolygon.MinimumX; double maxX = multiPolygon.MaximumX;
double maxY = multiPolygon.MaximumY - multiPolygon.MinimumY; double maxY = multiPolygon.MaximumY;
double minX = multiPolygon.MinimumX; double minX = multiPolygon.MinimumX;
double minY = multiPolygon.MinimumY; double minY = multiPolygon.MinimumY;
maxX -= minX;
maxY -= minY;
List<PolygonPunten> pp = new List<PolygonPunten>(); List<PolygonPunten> pp = new List<PolygonPunten>();
foreach (PolygonPunten polygon in multiPolygon.PolygonPunten) foreach (PolygonPunten polygon in multiPolygon.PolygonPunten)
{ {
@@ -111,12 +109,12 @@ namespace Logica
//todo (offset var voor center op canvas, vree ambetant) //todo (offset var voor center op canvas, vree ambetant)
public List<MultiPolygonPunten> ScaleMultiPolygons(List<MultiPolygonPunten> multiPolygons, double scaleX, double scaleY, double offsetX = 0, double offsetY = 0) public List<MultiPolygonPunten> ScaleMultiPolygons(List<MultiPolygonPunten> multiPolygons, double scaleX, double scaleY, double offsetX = 0, double offsetY = 0)
{ {
//TODO onderdeel versnelen door manuele for each loop
double maxX = multiPolygons.Max(m => m.MaximumX); double maxX = multiPolygons.Max(m => m.MaximumX);
double maxY = multiPolygons.Max(m => m.MaximumY); double maxY = multiPolygons.Max(m => m.MaximumY);
double minX = multiPolygons.Min(m => m.MinimumX); double minX = multiPolygons.Min(m => m.MinimumX);
double minY = multiPolygons.Min(m => m.MinimumY); double minY = multiPolygons.Min(m => m.MinimumY);
maxX -= minX;
maxY -= minY;
List<MultiPolygonPunten> mpps = new List<MultiPolygonPunten>(); List<MultiPolygonPunten> mpps = new List<MultiPolygonPunten>();
foreach (MultiPolygonPunten mp in multiPolygons) foreach (MultiPolygonPunten mp in multiPolygons)
{ {

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.