コード例 #1
0
        Point[] GetHull(VectorShape shape, Matrix matrix, int delta)
        {
            var vector = shape.Data;
            //vector.Transform(matrix);
            //return vector.PolygonHull(delta, true);

            var oldHull = vector.Hull(delta, true);

            matrix.Transform(oldHull);
            return(GDIConverter.Convert(oldHull));
        }
コード例 #2
0
ファイル: ConvexHullLayer.cs プロジェクト: git-thinh/limada
        void IReceiver.Perform()
        {
            var points = new Set <Xwt.Point>();
            var matrix = new Matrix(this.Camera.Matrix);
            var layout = this.Layout();

            if (Data != null && Data.Requests.Count != 0)
            {
                foreach (var command in Data.Requests)
                {
                    if (command != null && command.Subject != null)
                    {
                        if (command.Subject.Shape != null)
                        {
                            var hull = command.Subject.Shape.Hull(tolerance, true);
                            points.AddRange(hull);
                        }
                        if (command is StateChangeCommand <IVisual> )
                        {
                            var hull = layout.GetDataHull(
                                command.Subject, ((StateChangeCommand <IVisual>)command).Parameter.One,
                                tolerance, true);
                            points.AddRange(hull);
                        }
                        else
                        {
                            var hull = layout.GetDataHull(command.Subject, tolerance, true);
                            points.AddRange(hull);
                        }
                    }
                }
            }

            //points = points.Distinct ().ToList();
            if (points.Count > 2)
            {
                var resultI = new GrahamConvexHull().FindHull(points).ToArray();
                //matrix.Invert ();
                matrix.Transform(resultI);
                CommandsHull = Array.ConvertAll <Xwt.Point, Point>(resultI, a => a.ToGdi());
            }
            else
            {
                CommandsHull = new Point[0];
            }
        }
コード例 #3
0
ファイル: MatrixTests.cs プロジェクト: m13253/xwt
		public void PointTransform ()
		{
			var m = new Matrix (2, 0, 0, 2, 4, 4);

			var p = new Point (5, 6);

			Assert.AreEqual (new Point (14, 16), m.Transform (p));

			var ps = new Point[10];
			for (int i = 0; i < ps.Length; i++)
				ps [i] = new Point (3 * i, 2 * i);

			m.Transform (ps);

			for (int i = 0; i < ps.Length; i++)
				Assert.AreEqual (m.Transform (new Point (3 * i, 2 * i)), ps [i]);
		}
コード例 #4
0
ファイル: Context.cs プロジェクト: git-thinh/limada
        /// <summary>
        /// Transforms the array of points by the current transformation matrix (CTM)
        /// </summary>
        public void TransformPoints(Point[] points)
        {
            Matrix m = GetCTM();

            m.Transform(points);
        }
コード例 #5
0
ファイル: Context.cs プロジェクト: git-thinh/limada
        /// <summary>
        /// Transforms the point (x, y) by the current transformation matrix (CTM)
        /// </summary>
        public Point TransformPoint(Point p)
        {
            Matrix m = GetCTM();

            return(m.Transform(p));
        }