public static void GenerateRandomAffineTransformation(PluginProperties pluginProperties) { Random rnd = new Random(); var randomDistance = rnd.Next(MinimumDistance, MaximumDistance); var randomBearing = rnd.Next(MinimumBearing, MaximumBearing); var startCoordinate = new Coordinate(); // lat & lon = 0 var endCoordinate = GetEndCoordinate(startCoordinate, randomDistance, randomBearing); pluginProperties.AffineTransformation = AffineTransformationFactory.CreateFromControlVectors(startCoordinate, endCoordinate); }
void Run(double p0x, double p0y, double pp0x, double pp0y ) { var p0 = new Coordinate(p0x, p0y); var pp0 = new Coordinate(pp0x, pp0y); var trans = AffineTransformationFactory.CreateFromControlVectors( p0, pp0); var dest = new Coordinate(); AssertEqualPoint(pp0, trans.Transform(p0, dest)); }
public static IGeometry TransformByVectors(IGeometry g, IGeometry control) { var nControl = control.NumGeometries; var src = new Coordinate[nControl]; var dest = new Coordinate[nControl]; for (int i = 0; i < nControl; i++) { var contComp = control.GetGeometryN(i); var pts = contComp.Coordinates; src[i] = pts[0]; dest[i] = pts[1]; } var trans = AffineTransformationFactory.CreateFromControlVectors(src, dest); Console.WriteLine(trans); return(trans.Transform(g)); }
void Run(double p0x, double p0y, double p1x, double p1y, double pp0x, double pp0y, double pp1x, double pp1y ) { Coordinate p0 = new Coordinate(p0x, p0y); Coordinate p1 = new Coordinate(p1x, p1y); Coordinate pp0 = new Coordinate(pp0x, pp0y); Coordinate pp1 = new Coordinate(pp1x, pp1y); AffineTransformation trans = AffineTransformationFactory.CreateFromControlVectors( p0, p1, pp0, pp1); Coordinate dest = new Coordinate(); AssertEqualPoint(pp0, trans.Transform(p0, dest)); AssertEqualPoint(pp1, trans.Transform(p1, dest)); }