Пример #1
0
 public static System.Drawing.Drawing2D.Matrix ToGdi(this Matrix matrix)
 {
     return(new System.Drawing.Drawing2D.Matrix(
                (float)matrix.M11,
                (float)matrix.M12,
                (float)matrix.M21,
                (float)matrix.M22,
                (float)matrix.OffsetX,
                (float)matrix.OffsetY));
 }
Пример #2
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));
        }
Пример #3
0
        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];
            }
        }
Пример #4
0
        Point[] GetHull(IGraphScene <IVisual, IVisualEdge> scene, Matrix matrix, int delta)
        {
            Point[] result = new Point[0];
            var     points = new Set <Xwt.Point> ();

            foreach (var visual in scene.Elements)
            {
                foreach (var p in visual.Shape.Hull(matrix, 0, true))
                {
                    if (!points.Contains(p))
                    {
                        points.Add(p);
                    }
                }
            }
            var resultI = new GrahamConvexHull().FindHull(points).ToArray();

            return(Array.ConvertAll <Xwt.Point, Point> (resultI, a => a.ToGdi()));
        }