Example #1
0
        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);
        }
        public static IGeometry TransformByBaseline(IGeometry g, IGeometry destBaseline)
        {
            var env  = g.EnvelopeInternal;
            var src0 = new Coordinate(env.MinX, env.MinY);
            var src1 = new Coordinate(env.MaxX, env.MinY);

            var destPts = destBaseline.Coordinates;
            var dest0   = destPts[0];
            var dest1   = destPts[1];
            var trans   = AffineTransformationFactory.CreateFromBaseLines(src0, src1, dest0, dest1);

            return(trans.Transform(g));
        }
        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));
        }
        private static IGeometry FontGlyph(IGeometry g, String text, Font font)
        {
            var env      = FunctionsUtil.GetEnvelopeOrDefault(g);
            var geomFact = FunctionsUtil.GetFactoryOrDefault(g);

            var textGeom = FontGlyphReader.Read(text, font, geomFact);
            var envText  = textGeom.EnvelopeInternal;

            if (g != null)
            {
                // transform to baseline
                var baseText0 = new Coordinate(envText.MinX, envText.MinY);
                var baseText1 = new Coordinate(envText.MaxX, envText.MinY);
                var baseGeom0 = new Coordinate(env.MinX, env.MinY);
                var baseGeom1 = new Coordinate(env.MaxX, env.MinY);
                AffineTransformation trans = AffineTransformationFactory.CreateFromBaseLines(baseText0, baseText1,
                                                                                             baseGeom0, baseGeom1);
                return(trans.Transform(textGeom));
            }
            return(textGeom);
        }
        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));
        }