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)); }
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)); }
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]; } }
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())); }